2009-06-19 2 views
8

Я использую простой веб-PHP приложение, которое выводит таблицу в виде таблицыPHP - тип файла таблицы только для чтения?

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

//inserts tab delimited text 

Но я найти загруженную таблицу открывается как файл только для чтения и должны быть сохранены локально, так и (в Excel в Windows) тип был изменен на XLS (из HTML). Есть ли способ правильно установить атрибут filetype, так что для простого сохранения не требуется исправление типа файла?

Загружен ли файл только для чтения по своей природе или это не нормально?

Также мне не нравятся автоматические границы, созданные при открытии электронной таблицы в Excel или OpenOffice (в Linux). Я бы предпочел, чтобы не было форматирования границ. Есть ли способ в файле указать отсутствие добавленного форматирования или встроен ли он в эти приложения?

ответ

8

Я не знаю, какую версию Excel вы говорите, поэтому я предполагаю, что вы используете версию 2007 года или более новую.

Проблема с изменением расширения, вероятно, зависит от функции Office, называемой «Extension Hardening»; насколько я знаю, единственным решением является создание реального файла Excel (например, с помощью набора классов PHPExcel), а не файла HTML.

загруженные файлы только для чтения по соображениям безопасности, так как они открываются в так называемом «Protected View»:

файлов из Интернета и других потенциально опасных местах могут содержать вирусы, черви, или другие виды вредоносного ПО, которые могут нанести вред вашему компьютеру . Чтобы защитить ваш компьютер, файлы из этих потенциально опасных мест открыты в защищенном представлении. Используя Защищенный просмотр, вы можете прочитать файл и проверить его содержимое, а уменьшить риски, которые могут возникнуть.

Наконец, слово о границах и форматировании: со старой версией Excel 2000 вы можете форматировать вывод, просто добавив некоторые теги XML в заголовок раздела HTML-кода; см. «Microsoft Office HTML and XML Reference» для получения дополнительной информации и примеров, но имейте в виду, что он довольно устарел, поэтому я не думаю, что этот метод по-прежнему работает с более поздними версиями Excel.

Если вы хотите иметь больше контроля над сгенерированным выводом, вы не должны использовать простой HTML для создания файла электронной таблицы.

В this post вы также можете найти некоторые альтернативы PHPExcel для записи файлов Excel.

6

AFAIK, по крайней мере, в Windows, это зависит от того, что пользователь делает с подсказкой, отображаемой браузером, когда они следуют по ссылке.

Если пользователь хочет сохранить файл, он не будет доступен только для чтения. Если пользователь захочет открыть его, файл будет сохранен во временном каталоге, и браузер может удалить его, когда он будет закрыт. Я не уверен, как работает этот механизм, но я предполагаю, что в замке есть какое-то место, которое делает файл только для чтения.

0

Если вы хотите сохранить локально, можно установить атрибут content-description:

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

EDIT

При печати с разделителями табуляции текст и атрибутов content-disposition как XLS или CSV, Excel приложений (или другая программа, например gnumeric или openoffice) распознает ее как xls или csv.

Смежные вопросы