كيف يمكنني إيقاف تعليق Excel 2003 بعد فتح جدول بيانات في IE؟

StackOverflow https://stackoverflow.com/questions/201355

سؤال

لدي تطبيق ويب يوفر ملفات Excel عبر IE 7.يطلب الملفات باستخدام HTTP GET من عنوان URL الذي يقوم بإرجاع البيانات بنوع محتوى "application/vnd.ms-excel".ثم يفتح جداول البيانات في IFrame.

كل هذا يعمل بشكل جيد ما لم يكن Excel مفتوحًا بالفعل عند تنزيل جدول بيانات.في هذه الحالة، لا يزال يتم عرضه بشكل صحيح ولكنه يعيد استخدام مثيل Excel المفتوح.عند إغلاق IFrame، يتوقف Excel.لا يصبح برنامج Excel مفتوحًا إلا إذا قام المستخدم بتسجيل الخروج من تطبيق الويب أو إذا قام بتنزيل ملف من نوع مختلف.

لقد حاولت تشغيل إعداد "تجاهل التطبيقات الأخرى" تحت الأدوات | الخيارات | عام لكنه لم يحل المشكلة.

لقد حاولت أيضًا اتباع الخطوات الواردة في هذه الإجابة (كما مرجع مرتبط يقول "تمت معالجة هذه المشكلة في الإصدار التجريبي 2 من Excel 2007.") دون حظ.

هل هناك نوع من خطوة "التخلص" التي لا أقوم بها حاليًا والتي قد تمنع Excel من التعليق؟

الإصدارات:

إكسل 2003 (11.8220.8221) SP3

IE 7.0.5730.11 (إصدارات التحديث:0)

هل كانت مفيدة؟

المحلول 2

بالإضافة إلى إجابة روبرت, ، السطر التالي من كود (Java) يصلح هذه المشكلة، حيث يمنع Excel من التعليق:

response.setHeader("Content-Disposition", 
    "attachment; filename=\"" + filename + "\"");

["الاستجابة" ملحوظة هي HttpServletResponse]

ومع ذلك، فإنه يفرض تحميل جدول البيانات في نافذة Excel بدلاً من عرضه في IFrame...

تحديث: تؤدي إعادة تعيين عنوان URL الخاص بـ IFrame إلى فارغ إلى فرض التخلص من مثيل Excel وإصلاح هذه المشكلة (دون الحاجة إلى Content-Disposition يتغير).

نصائح أخرى

ولست متأكدا إذا كان ذلك يساعد ولكن ...

وكان لي بعض المشاكل المشابهة (توليد المحتوى CSV على الطاير) منذ زمن طويل وكل ما أتذكره هو أنه كان ليفعل شيئا مع طرق الاستجابة الصحيحة يتم استدعاء. كان رمز شيئا من هذا القبيل


Response.Clear();
Response.Buffer = true;

Response.AppendHeader("Content-Disposition", "attachment; filename=export.csv");
Response.Cache.SetCacheability(HttpCacheability.Private);
Response.Cache.SetExpires(DateTime.MinValue);
Response.Cache.SetLastModified(DateTime.Now);
Response.Cache.SetMaxAge(new TimeSpan(1));
Response.ContentType = "text/csv";

Response.ContentEncoding = System.Text.Encoding.Unicode;

...
//Some  writing to the Response.OutputStream
...

Response.Flush();

//I am not sure about the following line:
Response.End(); 

ومما يؤسف له، وهذا هو تماما من يديك. انها حقا يتوقف على ما هو إصدار التفوق لديهم وما التحديثات التي تم تطبيقها.

هل تمكنت من إنشاء هذه المشكلة في البيئة الخاصة بك؟ إذا لم يكن كذلك، قد يكون مشكلة على جهاز الكمبيوتر العميل. هل هناك أي طريقة يمكنك معرفة ما هي الخيارات أو [ورنت] تثبيت، أو إذا كان قد تم الحفاظ Excel مع انها بقع؟

ويبدو لي أن يحتاج المكتب نفسه إلى إعادة تركيبها، إن لم يكن IE 7 بعد ذلك.

وأود أن ننظر أيضا في أي قضايا الإطار من الإغلاق. لاختبار هذه النظرية بها، هل يمكن نشر iframe لصفحة جديدة (بدون نوافذ الأطر المدمجة) ثم رابط لصفحة مع نوافذ الأطر المدمجة وملف اكسل؟ وأنا أدرك أن ربما لن "يكون حلا للعمل معك، ولكن ينبغي أن تساعدك القضاء سواء كان ذلك التفوق، IE7 أو كود iframe جود الشوائب.

هل هذا شيء كنت قادرا على الإنجاب، أو هو شيء يجري ذكرت لك من قبل العملاء، وكنت في محاولة لتعقب عليه؟

والرابط الذي قمنا بتوفير صفقات مع أجهزة عرض متعددة - لدي أجهزة عرض متعددة وكذلك عندما ترسو جهاز الكمبيوتر المحمول، ولقد وجدت عددا من التطبيقات لا تستجيب بشكل جيد. على سبيل المثال، إذا حاول تطبيق لفتح مربع حوار مشروط في مساحة سطح المكتب التي لا وجود لها بعد الآن (على سبيل المثال، على بلدي "العرض الثاني" بعد I'veundocked جهاز الكمبيوتر المحمول)، فإنه سيتم حبس تطبيق منذ يمكنني 'ر الحصول على مربع. يمكن أن يكون ما يحدث هنا؟

وهناك مشكلة أخرى محتملة يحدث إذا كنت طالبا المستخدم لنوع من التوثيق عندما تحصل على ملف إكسل. على موقع SharePoint لدينا، يريد اكسل المستخدم لمصادقة، وإذا كان هذا حوار المصادقة مشروط بطريقة ما يحصل توغلت في الخلفية، يمكن أن يكون من المستحيل للوصول الى المقدمة مرة أخرى. والسبيل الوحيد هو إذا قتل العملية أو إذا قمت بإغلاق المتصفح شير، منذ أن أنهى طلب للملف في المقام الأول.

ويساعد هذا الأمل، وإذا كان أي من هذه تعطيك بعض مزيد من القرائن، بنشرها هنا وسوف نحصل على هذا حلها.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top