سؤال

أنا أستخدم تطبيق PHP بسيطًا قائمًا على الويب ويقوم بإخراج جدول كجدول بيانات

header("Content-Disposition: attachment; filename=" . $filename . ".xls");
header("Content-Type: application/vnd.ms-excel");

//inserts tab delimited text

لكنني أجد أن جدول البيانات الذي تم تنزيله يفتح كملف للقراءة فقط ويجب حفظه محليًا و(في Excel على نظام التشغيل Windows) تم تغيير النوع إلى XLS (من HTML).هل هناك طريقة لتعيين سمة نوع الملف بشكل صحيح بحيث لا يتطلب إجراء عملية حفظ بسيطة تصحيح نوع الملف؟

هل الملف الذي تم تنزيله للقراءة فقط بطبيعته الأمنية أم أن هذا غير طبيعي؟

كما أنني لا أحب الحدود التلقائية التي يتم إنشاؤها عند فتح جدول البيانات في Excel أو OpenOffice (على Linux).أفضّل عدم وجود تنسيق للحدود.هل هناك طريقة في الملف لتحديد عدم إضافة تنسيق أم أن هذا مدمج في تلك التطبيقات؟

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

المحلول

وأنا لا أعرف أي إصدار من Excel الذي نتحدث عنه، ولذا فإنني سوف نفترض أن كنت تستخدم نسخة 2007 أو أحدث.

ربما يعتمد مشكلة تغير التمديد على ميزة مكتب يسمى "<لأ href =" http://blogs.msdn.com/b/vsofficedeveloper/archive/2008/03/11/excel-2007-extension-warning.aspx "يختلط = "نوفولو noreferrer"> تمديد تصلب ". بقدر ما أعرف، والحل الوحيد هو إنشاء ملف اكسل الحقيقي (على سبيل المثال باستخدام PHPExcel مجموعة من الطبقات)، وليس ملف HTML.

للقراءة فقط الملفات التي تم تحميلها لأسباب أمنية، لأنها يتم فتحها في ما يسمى "<لأ href =" http://office.microsoft.com/en-us/excel-help/what-is-protected- عرض-HA010355931.aspx "يختلط =" نوفولو noreferrer "> المحمية مشاهدة ":

<اقتباس فقرة>   

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

وأخيرا، كلمة عن الحدود والتنسيق: مع النسخة القديمة اكسل 2000، يمكن تنسيق إخراج ببساطة عن طريق إضافة بعض العلامات XML في مقطع الرأس من قانون HTML؛ راجع " مايكروسوفت HTML مكتب وXML المرجعي "لمزيد من التفاصيل والأمثلة، ولكن نأخذ في الاعتبار أنه عفا عليها الزمن تماما، لذلك لا أعتقد أن هذا الأسلوب لا يزال يعمل مع إصدارات إكسل الأخيرة.

إذا كنت ترغب في الحصول على مزيد من السيطرة على ouput ولدت، يجب عدم استخدام HTML بسيطة لإنشاء ملف البيانات.

على
هذا المنصب الذي يمكن أيضا العثور على بعض البدائل لPHPExcel لكتابة ملفات Excel.

نصائح أخرى

وAFAIK، على الأقل على ويندوز، فإنه يعتمد على ما يقوم به المستخدم مع موجه معروضة من قبل المتصفح عندما تتبع الارتباط.

إذا اختار المستخدم لحفظ الملف، فإنه لن يكون للقراءة فقط. إذا اختار المستخدم لفتحه، سيتم حفظ الملف إلى دليل مؤقت والمتصفح قد حذفها عندما يتم إغلاقه. لست متأكدا من كيفية عمل هذه الآلية، ولكن أنا على افتراض هناك قفل تشارك مكان ما الذي يجعل الملف للقراءة فقط.

إذا كنت تريد الحفظ محليًا، فيمكنك تعيين السمة content-description:

header('Content-Description: File Transfer');   
header('Content-Type: application/vnd.ms-excel');
header("Content-Disposition: attachment; filename=" . $filename . ".xls");    

يحرر

إذا قمت بطباعة النص والسمة المحددة بعلامة التبويب content-dispositionمثل XLS أو CSV ، يتعرف تطبيق Excel (أو برنامج آخر ، مثل Gnumeric أو OpenOffice) مثل XLS أو CSV.

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