Вопрос

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

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

//inserts tab delimited text

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

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

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

Это было полезно?

Решение

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

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

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

  

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

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

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

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

Другие советы

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

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

Если вы хотите сохранить локально, вы могли бы установить атрибут 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