2009-06-19 16 views
8

मैं एक सरल वेब आधारित पीएचपी अनुप्रयोग है कि एक स्प्रेडशीटPHP - केवल-पढ़ने वाली स्प्रेडशीट फ़ाइल प्रकार?

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

//inserts tab delimited text 

के रूप में एक मेज आउटपुट उपयोग कर रहा हूँ लेकिन मैं डाउनलोड की गई स्प्रेडशीट खोजने कर रहा हूँ केवल पढ़ने के लिए फ़ाइल के रूप में खोलता है और (में स्थानीय और सहेजा जाना चाहिए विंडोज पर एक्सेल) प्रकार एक्सएलएस (एचटीएमएल से) में बदल गया। क्या फ़ाइल प्रकार की विशेषता को सही तरीके से सेट करने का कोई तरीका है ताकि एक सरल सहेजने के लिए फ़ाइल प्रकार को सही करने की आवश्यकता न हो?

क्या फ़ाइल केवल सुरक्षा की प्रकृति द्वारा पढ़ी गई है या यह सामान्य नहीं है?

एक्सेल या ओपनऑफिस (लिनक्स पर) में स्प्रेडशीट खोलते समय भी बनाई गई स्वचालित सीमाएं मुझे पसंद नहीं हैं। मैं कोई सीमा स्वरूपण करना पसंद करूंगा। फ़ाइल में कोई अतिरिक्त स्वरूपण निर्दिष्ट करने का कोई तरीका नहीं है या क्या यह उन अनुप्रयोगों में बनाया गया है?

उत्तर

8

मुझे नहीं पता कि Excel का कौन सा संस्करण आप बात कर रहे हैं, इसलिए मुझे लगता है कि आप 2007 या नए संस्करण का उपयोग कर रहे हैं।

एक्सटेंशन परिवर्तन समस्या शायद "Extension Hardening" नामक किसी Office सुविधा पर निर्भर करती है; जहां तक ​​मुझे पता है, एकमात्र समाधान वास्तविक एक्सेल फ़ाइल उत्पन्न करना है (उदाहरण के लिए PHPExcel कक्षाओं के सेट का उपयोग करके), और एक HTML फ़ाइल नहीं। इंटरनेट से और अन्य संभावित रूप से असुरक्षित स्थानों से वायरस, वॉर्म शामिल कर सकते हैं

फ़ाइलें:

डाउनलोड की गई फ़ाइलें, केवल पढ़ने के लिए सुरक्षा कारणों से कर रहे हैं क्योंकि वे में "Protected View" तथाकथित खोला जा रहा है या अन्य प्रकार के मैलवेयर, जो आपके कंप्यूटर को को नुकसान पहुंचा सकते हैं। अपने कंप्यूटर की सुरक्षा में मदद के लिए, इन की फ़ाइलों को संरक्षित दृश्य में संभावित रूप से असुरक्षित स्थान खोले गए हैं। संरक्षित दृश्य का उपयोग करके, आप फ़ाइल को पढ़ सकते हैं और होने पर होने वाले जोखिमों को कम करते हुए इसकी सामग्री का निरीक्षण कर सकते हैं।

अंत में, सीमाओं और स्वरूपण के बारे में एक शब्द: पुराने एक्सेल 2000 संस्करण के साथ, आप HTML कोड के शीर्षलेख अनुभाग में कुछ XML टैग जोड़कर आउटपुट को प्रारूपित कर सकते हैं; अधिक जानकारी और उदाहरणों के लिए "Microsoft Office HTML and XML Reference" देखें, लेकिन ध्यान रखें कि यह काफी अप्रचलित है, इसलिए मुझे नहीं लगता कि यह तकनीक अभी भी हाल के एक्सेल संस्करणों के साथ काम करती है।

यदि आप जेनरेट किए गए आउटपुट पर अधिक नियंत्रण रखना चाहते हैं, तो आपको स्प्रेडशीट फ़ाइल बनाने के लिए सरल HTML का उपयोग नहीं करना चाहिए।

this post पर आप Excel फ़ाइलों को लिखने के लिए PHPExcel के कुछ विकल्प भी पा सकते हैं।

6

कम से कम विंडोज़ पर AFAIK, यह इस बात पर निर्भर करता है कि उपयोगकर्ता लिंक के अनुसरण करते समय ब्राउज़र द्वारा दिखाए गए संकेत के साथ क्या करता है।

यदि उपयोगकर्ता फ़ाइल को सहेजने का विकल्प चुनता है, तो यह केवल पढ़ने के लिए नहीं होगा। यदि उपयोगकर्ता इसे खोलने का विकल्प चुनता है, तो फ़ाइल को अस्थायी निर्देशिका में सहेजा जाएगा और ब्राउज़र बंद होने पर इसे हटा सकता है। मुझे यकीन नहीं है कि यह तंत्र कैसे काम करता है, लेकिन मुझे लगता है कि एक लॉक में कुछ जगह शामिल है जो फ़ाइल को केवल पढ़ने के लिए बनाता है।

0

आप स्थानीय रूप से बचाने के लिए चाहते हैं, आप विशेषता content-description सेट कर सकते हैं:

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

संपादित

आप टैब सीमांकित पाठ प्रिंट और xls या csv, एक्सेल आवेदन की तरह content-disposition विशेषता (यदि या अन्य प्रोग्राम, जैसे कि gnumeric या openoffice) इसे xls या csv की तरह पहचानता है।

संबंधित मुद्दे