Содержание
- Data application vnd ms excel
- data application vnd ms excel
- 1 ответ 1
- Введение
- Все написано до нас
- Все написано до нас. Подход 2
- Форматирование
- В заключение
- Читают сейчас
- Похожие публикации
- Особенность протокол javascript или генерация случайного пароля в закладке браузера
- YARG — open-source библиотека для генерации отчётов
- Zen Reports и %XML.Writer для генерации отчётов Excel в Caché
- Вакансии
- Комментарии 29
- What is MIME application/vnd.ms-excel?
- application/vnd.ms-excel
- What Are MIME Types?
- Why Do I Need MIME Types Like application/vnd.ms-excel?
- What Are The Most Common Problems Associated With application/vnd.ms-excel?
- How To Fix application/vnd.ms-excel Issues
- Do I have the application/vnd.ms-excel “player application” installed?
- Do I have broken application/vnd.ms-excel file associations?
- mime application/vnd.ms-excel
- Загружать файлы xls или xlsx с помощью codeigniter, mime-type error
- ASP.NET MVC 3: Экспорт в Excel или что такое XMLExport?
- Тестовый проект “MvcExportToXML”
- Начнем с Nuget-пакета
- Download
Data application vnd ms excel
data application vnd ms excel
Нашел код который сохраняет данные из таблицы в xls
Сохраняет,все хорошо.Но есть два важных вопроса:
1)При сохранении файла он сохраняется как скачанные файлы.xls.Как можно пометь это имя?я не смог понять(
2)При открытии в Excel выдавает такое(но все хорошо отображается)
1 ответ 1
Потому что расширение должно быть .xlsx (XML-образный формат, который используется у вас), а не .xls (бинарный формат, который давно устарел).
Введение
Все написано до нас
Подумал я и начал искать, нашел очень быстро SheetJS , но, боже мой, как там запущено все! Если с форматированием еще можно справиться, то стили — это головная боль.
Все написано до нас. Подход 2
В старом-старом SharePoint 2007 есть такая возможность экспортировать эксель файл, на удивление это работает до сих пор и хорошо поддается описанию.
- Современный браузер (проверьте в старых)
- Отформатированная таблица
- Colspan, rowspan, border — знание табличной верстки
Форматирование
Оформите саму сетку в таблице с помощью атрибутов colspan, rowspan, добавьте стили и после этого вызывайте генерацию файла.
В заключение
Читают сейчас
Похожие публикации
Особенность протокол javascript или генерация случайного пароля в закладке браузера
YARG — open-source библиотека для генерации отчётов
Zen Reports и %XML.Writer для генерации отчётов Excel в Caché
Вакансии
AdBlock похитил этот баннер, но баннеры не зубы — отрастут
Комментарии 29
Сегодня я опишу довольно тривиальную, но ни где не освященную тему экспорт из страницы данных в Excel.
Вы глубоко заблуждаетесь.
SheetJS, но боже мой как там запущено все. Если с форматированием еще можно справится, то стили — это головная боль.
Потому что целью является сконструировать настоящий XLS.
Оформите саму сетку в таблице с помощью атрибутов colspan, rowspan, добавьте стили и после этого вызывайте генерацию файла.
И в результате получим несовместимый с альтернативными программами документ. В LibreOffice, если повезёт, хотя бы сетка ячеек сохранится. В Numbers документ откроется, но без контента. А ещё есть всякие мобильные офисы, в том числе GDrive Viewer. Вам-то может быть всё равно, а клиенты будут жутко недовольны.
У меня есть таблица HTML в шаблоне скорости. Я хочу экспортировать данные таблицы html в excel, используя java script или jquery, comatibale со всеми браузерами. Я использую ниже script
Этот script отлично работает в Mozilla Firefox, он всплывает с диалоговым окном excel и просит открыть или сохранить параметры. Но когда я тестировал один и тот же script в браузере Chrome, он не работает, как ожидалось, при нажатии на кнопку нет всплывающего окна для excel. Данные загружаются в файл с «file type: file», без расширения, например .xls Ошибок в консоли хром нет.
Это отлично работает в мозилле, но не в хроме.
Тест браузера Chrome:
Первое изображение. Я нажимаю кнопку «Экспорт в Excel»
What is MIME application/vnd.ms-excel?
application/vnd.ms-excel
Microsoft Excel spreadsheet.
Compatible with Windows 10, 8, 7, Vista, XP and 2000
Optional Offer for WinThruster by Solvusoft | EULA | Privacy Policy | Terms | Uninstall
What Are MIME Types?
A Multi-Purpose Internet Mail Extension (eg. “application/vnd.ms-excel”), also known as a MIME, is type of Internet standard originally developed to allow the exchange of different types of data files through e-mail messages. MIME types like application/vnd.ms-excel are classified into specific data categories such as Video, Audio, Image, and many more. This categorization provides instructions to your computer or mobile device about how these files should be opened / viewed.
Why Do I Need MIME Types Like application/vnd.ms-excel?
Categorizing MIME types like application/vnd.ms-excel into a data type such as “Application” allows your e-mail client or Internet browser to display the content as intended. For example, when you attach a digital camera photo file to an e-mail, an Image MIME type will be associated with that file to allow your recipient to view the photograph.
Here’s how it works: Web servers (computers that host websites and e-mail) insert a set of MIME instructions into the beginning of a data transmission, such as an e-mail message or webpage, in the following format:
Content-Type: application/vnd.ms-excel
[Format Explanation: The MIME type, which in this example is “Application”, is separated by a forward slash (“/”) and followed by a subtype.]
This set of instructions tells your client application, such as an e-mail program (eg. Microsoft Outlook, Apple Mail) or web browser (eg. Google Chrome, Mozilla Firefox), which “player application” should be used to properly display the application/vnd.ms-excel content.
Many modern web browsers include built-in components to display common data types such as image players (eg. GIF, JPEG), Adobe Flash Player, Javascript, and many more. Other less-common types of players must be downloaded separately in order to properly display the MIME content.
What Are The Most Common Problems Associated With application/vnd.ms-excel?
Sometimes you’ll find that your web browser or e-mail client is unable to properly display your application/vnd.ms-excel content. This could be due to one of two reasons:
1. You are missing the proper Application “player software” to display the application/vnd.ms-excel content.
2. Your Windows Registry contains an incorrect file extension (eg. XLS, PDF) association with the application/vnd.ms-excel MIME type.
How To Fix application/vnd.ms-excel Issues
Do I have the application/vnd.ms-excel “player application” installed?
The first step in troubleshooting issues with opening application/vnd.ms-excel content is to first make sure that you have the correct “player application” installed for this MIME type. Because there can be several (or even hundreds) of related software applications to application/vnd.ms-excel, it is very difficult for us to compile a comprehensive list.
Therefore, a key strategy in determining the correct application is to look for clues on what software programs might be related to application/vnd.ms-excel. Look at the naming of the subtype for clues about a related program (eg. Word, Excel) or software developer name (eg. Microsoft).
Furthermore, if you’ve been sent MIME type application/vnd.ms-excel as an e-mail attachment, look for the file extension of the attached file. This file extension (eg. XLC, XLT, XLM, etc.) can provide you with a clue of what “player application” is associated with this Application MIME. Take a look at our file extension list below to see if there are any clues to finding the right “player application”.
Do I have broken application/vnd.ms-excel file associations?
The second step in troubleshooting application/vnd.ms-excel issues is making sure that you have correct file associations in the Windows Registry. Installing and uninstalling programs can lead to incorrect file associations with application/vnd.ms-excel. Take a look at your Windows Registry settings to ensure that the MIME type is correctly associated with the “player application” and file extension.
WARNING: DO NOT edit the Windows Registry unless you are an advanced computer user with experience editing the Registry. Making an error in editing the Registry can create irreversible damage to your PC.
If you are not comfortable editing the Windows Registry, we highly recommend using an automated registry cleaning program, or taking you computer to a qualified professional.
mime application/vnd.ms-excel
The MIME type application/vnd.ms-excel is used to denote the presence of a Microsoft Excel spreadsheet or Microsoft Excel template. The category for this MIME type is «application».
Microsoft Excel or Microsoft Office Excel is a spreadsheet application developed by Microsoft. It is available from Microsoft for both the Windows series of OS» and Mac OS». It has graphing tools, calculation features, pivot tables and also a macro programming language called VBA (Visual Basic for Application). It is a widely used program that is also a part of the Microsoft Office suite of office software. Excel spreadsheet files take the extension XLS and Excel templates take the extension XLT. XLS is also the default file extension of MS Excel. They are both represented using this MIME type.
Excel has been widely adopted within the financial industry and it is considered to be one of the best software out there for making digital spreadsheets. Due to the VBS macro programming capabilities, the spreadsheets are also capable of being programmed individually to act as smaller programs themselves for generating output from given inputs. When used properly, it drastically reduces the effort required to be put into making complicated spreadsheets.
If you believe that some information on this page is incorrect — please let us know!
Copyright © 2020 mimeapplication.net
Загружать файлы xls или xlsx с помощью codeigniter, mime-type error
Ну, я считаю, что это не проблема Codeigniter как таковая, поскольку это скорее тип mime .
Я пытаюсь загрузить файл, файл xls (или xlsx), а mime-тип – браузер, а отчет php – это приложение / октет-поток вместо приложения / excel , application / vnd.ms-excel или application / msexcel для файла xls. Разумеется, модуль плагина codeigniter сообщит об ошибке (недопустимый тип файла), поскольку он пытается сопоставить расширение файла с типом mime.
Странным (est) может быть то, что тот же самый код работал месяцами и теперь перестал работать с последними браузерами Chrome (16.0.912.77), Firefox (10.0) и IE9.
У кого-то была такая же (или аналогичная) проблема и помощь в решении проблемы?
Большое спасибо. PS: Я не буду предоставлять код, так как это не вопрос кода, но при необходимости я загружу некоторые фрагменты.
РЕДАКТИРОВАТЬ
Это может иметь значение: ошибка не возникает с теми же браузерами в аналогичной конфигурации, но с MS Office вместо Libre Office (на моем компьютере). Это не происходит в системе на базе Linux + Libre. SO, может ли это быть Windows-играми в комплекте с открытым исходным кодом, или Libre Office меняет типы mime только для этого?
Я тоже получаю эту ошибку.
CI сообщает о типе файла «application / zip», который имеет смысл, так как формат xlsx является сжатым форматом (переименуйте его в zip, и вы можете открыть его содержимое).
Я добавил / заменил следующую строку в файл типов mime (application / config / mimes.php):
и это работает (для этого браузера хотя бы!)
Пожалуйста, ознакомьтесь со следующим описанием и подсказкой и получите ответ легко!
Описание:
Фактически, многие из них рекомендовали добавить / заменить следующую строку в файле (application / config / mimes.php):
Но я понял, что в CodeIgniter Version 2.2. * Проблема немного другая! Они уже добавили эту строку, но забыли добавить следующий «file_type» ==> ‘application / vnd.ms-excel’
Поэтому добавив вышеприведенное «application / vnd.ms-excel» в массив типа xlsx , позвольте мне загрузить файлы .xlsx !
Подсказка:
Всякий раз, когда вы получаете следующую ошибку, на платформе CodeIgniter и загружаете файлы:
Тип файла, который вы пытаетесь загрузить, не разрешен.
Сделайте следующее в методе загрузки вашего контроллера,
И это даст вам огромный массив, который вы можете получить по этой ссылке . (Пожалуйста, посмотрите на конец этой страницы). В этом массиве вы можете получить то, что является реальным mime_type файла, который вы пытаетесь загрузить, но не позволяете загружать.
Ответ:
В моем случае расширение файла было .xlsx , а типом mime было application / vnd.ms-excel , которое не было добавлено в
Поэтому я добавил его вручную, и после этого он работает VERRY WELL .
То же самое случилось с загрузкой CSV еще раз, когда я проверил расширение файла .csv, но тип mime был text / plain , когда я добавил его в следующую строку:
и сохраняется следующим образом,
Отлично работает! : D Попробуйте, если вы найдете что-то новое в вышеуказанных шагах, прокомментируйте здесь . Поэтому, надеясь, что это будет полезно для всего сообщества CodeIgniter, я отправил его на некоторое время!
С наилучшими пожеланиями, ребята,
Это было ошибкой CI несколько месяцев назад: https://github.com/EllisLab/CodeIgniter/issues/394 . mimes.php в рамках был обновлен, и ошибка была решена. Обновите библиотеку CodeIgniter до версии 2.1.0 (или новее).
Также хорошей проверкой / дампом является ваш тип mime сервера.
Другой альтернативой является принудительный тип mime. С .htaccess это будет
Для целого отладочного приключения протестируйте различные офисные файлы с помощью get_mime_by_extension($file) с помощью File Helper (http://codeigniter.com/user_guide/helpers/file_helper.html)
Только для записей, я нашел причину, mime-type отсутствовал в реестре Windows, решил добавить эти ключи с REG-файлом:
Но предпочел бы использовать вышеприведенные решения, мне не нравится возиться с реестром.
ASP.NET MVC 3: Экспорт в Excel или что такое XMLExport?
ru-RU | создано: 18.08.2011 | опубликовано: 18.08.2011 | обновлено: 02.01.2018 | просмотров за всё время: 29906
При работе над очередным проектом, потребовалось реализовать экспорт данных в MS Excel. Решил поделиться информацией о том, как это можно сделать без особых усилий. Сборка создана согласно спецификации XML Spreadsheet Reference.
Тестовый проект “MvcExportToXML”
Я создал простой тестовый проект на ASP.NET MVC 3. Установил пакет с SampleData и на главной странице вывел список Person и добавил ссылку “Export to Excel”, вот эта ссылка и будет отправной точкой для моей статьи. Сборка создана согласно спецификации XML Spreadsheet Reference.
Это код контроллера (Controller):
Это код представления (View)
Начнем с Nuget-пакета
Устанавливаем экспортный Nuget-пакет. Да, я в очередной раз из простой сборки сделал Nuget-пакет, потому что считаю, что это очень удобно (да и людям приятно). Для установки пакета XmlExport вводим в консоли менеджера пакетов:
Готово! пакет установлен. Теперь перейдем к выгрузке отображаемых данных на странице в XML. Это не просто XML, этот XML с легкостью понимает MS Excel, а значит, данные можно будет увидеть в Excel-таблице.
Создадим новый метод в контроллере Home:
Теперь надо сделать новый ExcelResult, унаследовав его от ActionResult, чтобы нажатие на кнопку экспорта пользователю предлагался сгенерированный файл для сохранения. Мой ExcelResult выглядит так:
Надо в методе Export указать возращаемый тип ExcelResult и сгенерировать данные для экспорта. Не буду расписывать “что и почем”, а просто приведу немного кода:
Многовато получилось, но зато всё понятно. Правда? Особенно если учесть наличие комментариев. Единственное что осталось сделать, так это привести скриншоты каждого из трёх листов сформированной книги Person.xls.
И, наконец, то ради чего…
Обратите внимание, что формулы не просчитаны потому что книга показана в режиме “Защищенный просмотр”.
Но если нажать кнопку “Разрешить редактирование”, то сразу же увидим результат работы формул:
Вот и всё. Пишите в комментарии свои вопросы, дополнения, пожелания и замечания.
P.S.: После добавления некоторых необходимых классов и свойств для Worksheet и Workbook пришлось отказать от поддержки библиотеки под Silverlight 4.
Версия 1.1.6 от 30.09.2011: Добавлена возможно экспорта простого HTML в MS Word. Например рассмотрим такой пример. Есть текст какого-то договора, редактирование которого производится в html-редакторе (в моем случае это ckeditor). В своем приложении (MVC3) создал:
Обратите внимание на строку номер 34. Именно в ней я и превращаю свой договор из формата HTML в формат, которой MS Word воспринимает как «родной». Естественно, что перед печатью договора, я подменяю нужные поля на требуемые значения (строка 6):
Вот и всё пока для этой библиотеки. Пишите комментарии.
Версия пакета 0.3.1 от 26.03.2013: Версия nuget-пакета обновилась (новая версия 0.3.1). Добавлены новые возможности: ширина колонок и авторазмер для ширины колонок, сквозные ячейки при печати нескольких страниц и многое другое.
Download
По просьбе некоторых активных читателей блога (привет тебе Алексей О.) работоспособность демонстрационного проекта восстановлена:
- обновлены nuget-пакеты, вернее их версии;
- установлена опция автоматического скачивания недостающих nuget-пакетов;
- адаптирован для версии Visual Studio 2012;
- поправлены ошибки.
Скачать демонстрационный проект для Visual Studio 2012 (обновление от 09.05.2013 года, кстати, с праздником! С Днем победы! Ура!)
Проект выложен в github. Nuget-пакет обновился до .NET 4.5.2. Сборка создана согласно спецификации XML Spreadsheet Reference.
Источник
Время на прочтение
25 мин
Количество просмотров 34K
Недавно мне понадобилось встроить в CRM возможность создания отчетов в Excel посредством PHP, но готовые решения были сильно громоздкими. Поэтому я решил написать собственную библиотеку для работы с Excel файлами через PHP. Но информации о внутренности Excel было очень мало и мне пришлось собирать ее по крупинкам, иногда методами тыка, проб и ошибок разбирал работу некоторых элементов.
На написание данной статьи меня натолкнули уже существующие статьи от @Lachrimae.
Но дополнять ее в комментариях — очень громоздко и неудобно. Поэтому я решил поделиться всеми свои знаниями в новой статье, и если это поможет кому-то, то мои старания будут более, чем не напрасны.
Оглавление:
-
Структура файлов;
-
Разбор файла _rels/.rels;
-
Разбор docProps/app.xml;
-
Разбор docProps/core.xml;
-
Разбор xl/_rels/workbook.xml.rels;
-
Разбор xl/printerSettings/printerSettings1.bin;
-
Разбор xl/theme/theme1.xml;
-
Разбор xl/worksheets/_rels/sheet1.xml.rels;
-
Разбор xl/worksheets/sheet1.xml;
-
Разбор xl/caclChain.xml;
-
Разбор xl/sharedStrings.xml;
-
Разбор xl/styles.xml;
-
Разбор xl/workbook.xml;
-
Разбор [Content_Types].xml;
-
Завершение.
Структура файлов
Так как Excel — это архив файлов .xml, то мы можем его распаковать и увидеть следующее содержание:
Некоторые файлы могут отсутствовать, такие как: xl/worksheets/_rels/sheet.xml.rels, xl/calcChain.xml, xl/printerSettings/printerSettings1.bin и sharedString.xml
В папках xl/worksheets, xl/printerSettings и xl/worksheets/_rels могут быть по несколько файлов.
Давайте разберёмся, для чего все эти файлы, начнём по порядку:
_rels/.rels — описание связей файлов, касаемых самой работы Excel;
docProps/app.xml — описание и настройки приложения Excel;
docProps/core.xml — здесь записывается имя создателя файла, время создания и последнего редактирования файла;
xl/_rels/workbook.xml.rels — перечень и описание зависимостей файлов, используемых в книге;
xl/printerSettings/printerSettings1.bin — описание настроек для печати листа;
xl/theme/theme1.xml — описание стилей приложения;
xl/worksheets/_rels/sheet1.xml.rels — описание связей листа xl/worksheets/sheet1.xml с другими документами;
xl/worksheets/sheet1.xml — описание всего происходящего на листе, который находится на первой позиции в списке листов книги. Название листа и название файла никак не связаны, файл всегда называется sheet1, sheet2 и т.д. На каждый лист приходится один такой файл;
xl/caclChain.xml — цепочка вычислений. Конструкция, указывающая порядок вычислений ячеек в книге в последний раз;
xl/sharedStrings.xml — перечень строковых значений, используемых во всей книге;
xl/styles.xml — описание стилей, используемых во всей книге;
xl/workbook.xml — описание настроек книги и перечень используемых листов;
[Content_Types].xml — описание всех файлов и их типов.
Разбор файла _rels/.rels
Если открыть файл — мы увидим следующее содержание:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
<Relationship Id="rId3" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties" Target="docProps/app.xml"/>
<Relationship Id="rId2" Type="http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties" Target="docProps/core.xml"/>
<Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="xl/workbook.xml"/>
</Relationships>
В первой строке у нас объявляется тип документа — xml с его версией, кодировкой и автономности.
standalone (автономность) — Это объявление указывает, содержит ли внешнее подмножество DTD (Document Type Definition — определение типа документа) какие-либо объявления, которые могут повлиять на текущее содержимое документа.
Вторая строчка — открывающий тег для описания связей документов. Атрибут xmlns — означает, что используется пространство имен, от сюда и название самого атрибута — xml NameSpace.
Далее идут 3 строки связей с документами. У каждого есть атрибуты: Id — уникальное имя для связи, Type — ссылка на стандарт, описывающий нужный нам тип документа, Target — путь к исполняемому файлу.
Разбор docProps/app.xml
Содержимое данного файла примерно такая (не все элементы могут присутствовать и иметь тот же вид, что и у меня):
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Properties xmlns="http://schemas.openxmlformats.org/officeDocument/2006/extended-properties" xmlns:vt="http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes">
<Application>Microsoft Excel</Application>
<DocSecurity>0</DocSecurity>
<ScaleCrop>false</ScaleCrop>
<HeadingPairs>
<vt:vector size="2" baseType="variant">
<vt:variant>
<vt:lpstr>Worksheets</vt:lpstr>
</vt:variant>
<vt:variant>
<vt:i4>1</vt:i4>
</vt:variant>
</vt:vector>
</HeadingPairs>
<TitlesOfParts>
<vt:vector size="1" baseType="lpstr">
<vt:lpstr>Лист 1</vt:lpstr>
</vt:vector>
</TitlesOfParts>
<Company></Company>
<LinksUpToDate>false</LinksUpToDate>
<SharedDoc>false</SharedDoc>
<HyperlinksChanged>false</HyperlinksChanged>
<AppVersion>14.0300</AppVersion>
</Properties>
Первая строка нам уже знакома.
Во второй строке открывающий тег properties и эта строка похожа на рассмотренную нами ранее.
Третья строка содержит название приложения. В данном случае — Microsoft Excel (что не удивительно). Данную строку лучше не изменять, ибо приложение упадет.
Следующая строка:
<DocSecurity>0</DocSecurity>
Означает безопасность документа и в зависимости от числа имеет следующий посыл:
0 — Документ не защищен
1 — Документ защищен паролем.
2 — Рекомендуется открывать документ только для чтения.
4 — Документ принудительно открыт только для чтения.
8 — Документ заблокирован для заметок.
Строка:
<ScaleCrop>false</ScaleCrop>
указывает режим отображения эскиза документа. Установите для этого элемента значение TRUE, чтобы включить масштабирование эскиза документа на экране. Установите для этого элемента значение FALSE, чтобы включить обрезку эскиза документа, чтобы отображались только те разделы, которые соответствуют отображаемому значению (из документации microsoft).
Далее открывается тег HeadingPairs, внутри которого описаны группы частей документа и количество частей в каждой группе. Эти части являются не частями документа, а концептуальными представлениями разделов документа.
Внутри HeadingPairs мы имеем 1 векторный контент, в котором имеются 2 его части (подробнее о векторах и baseType можно почитать в документации microsoft).
Первая часть означает, что мы описываем листы в книге, а во второй части указываем количество этих листов.
Следующий тег — TitlesOfParts. Он описывает наименования частей документа. в данном случае — названия листов в книге. Здесь также указывается количество частей векторного контента.
В теге Company можно записать название компании.
Следующий элемент — LinksUpToDate — указывает, актуальны ли гиперссылки в документе. Установите для этого элемента значение TRUE, чтобы показать, что гиперссылки обновлены. Установите для этого элемента значение FALSE, чтобы указать, что гиперссылки устарели (из документации microsoft).
Элемент SharedDoc указывает, является ли этот документ в настоящее время общим для нескольких производителей. Если для этого элемента установлено значение TRUE, производителям следует проявлять осторожность при обновлении документа.
HyperlinksChanged указывает, что одна или несколько гиперссылок в этой части были обновлены исключительно в этой части производителем. Следующий производитель, который откроет этот документ, обновит отношения гиперссылок новыми гиперссылками, указанными в этой части.
Тег AppVersion указывает версию используемого приложения Excel при создании файла
Разбор docProps/core.xml
Содержимое файла примерно таково:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<cp:coreProperties xmlns:cp="http://schemas.openxmlformats.org/package/2006/metadata/core-properties" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:dcmitype="http://purl.org/dc/dcmitype/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<dc:creator>Виктор</dc:creator>
<dcterms:created xsi:type="dcterms:W3CDTF">2006-09-16T00:00:00Z</dcterms:created>
<dcterms:modified xsi:type="dcterms:W3CDTF">2006-09-16T00:00:00Z</dcterms:modified>
</cp:coreProperties>
Первая строка нам уже знакома.
Во второй строке открывающий тег cp:coreProperties и эта строка похожа на рассмотренную нами ранее. Внутри него описываются свойства приложения:
dc:creator — Имя создателя документа;
dcterms:created — дата и время создания файла;
dcterms:modified — дата и время последнего изменения файла;
Разбор xl/_rels/workbook.xml.rels
Примерное содержимое файла:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
<Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet" Target="worksheets/sheet1.xml"/>
<Relationship Id="rId2" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles" Target="styles.xml"/>
<Relationship Id="rId3" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme" Target="theme/theme1.xml"/>
<Relationship Id="rId4" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings" Target="sharedStrings.xml"/>
<Relationship Id="rId5" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/calcChain" Target="calcChain.xml"/>
</Relationships>
Этот файл похож на раннее рассмотренный нами, только здесь уже описываются зависимости для файлов, которые используются непосредственно в книге.
Здесь записаны зависимости всех листов в книге, файла со строковыми значениями, цепочками вычислений и прочих файлов (мы разберем эти файлы дальше)
Разбор xl/printerSettings/printerSettings1.bin
Это файл, содержащий код в бинарном виде. Чтобы разобрать этот файл нужно описать много вещей про бинарники, а, чтобы научить писать правильно такой файл, потребуется много сил, времени и много текста. Да и в целом не вижу смысла вам работать с этим файлом. (честно говоря, я сам поверхностно знаком с этой темой).
Разбор xl/theme/theme1.xml
У меня не было надобностей разбирать этот файл, поэтому пока не буду описывать его работу. Но если кому-то понадобится (не знаю зачем) подробный разбор этого файла — я постараюсь сделать это.
Разбор xl/worksheets/_rels/sheet1.xml.rels
Содержимое этого файла может быть следующим:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
<Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/printerSettings" Target="../printerSettings/printerSettings1.bin"/>
</Relationships>
Здесь описана одна зависимость с файлом xl/printerSettings/printerSettings1.bin — настройками для печати.
Разбор xl/worksheets/sheet1.xml
Начинается самое интересное и большое в этой статье.
Начинается такой файл с обычного объявления типа документа xml и некоторых настроек:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="x14ac" xmlns:x14ac="http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac">
<dimension ref="A1"/>
<sheetViews>
<sheetView tabSelected="1" workbookViewId="0">
<selection activeCell="J10" sqref="J10"/>
<pane ySplit="1" topLeftCell="A2" activePane="bottomRight" state="frozen"/>
</sheetView>
</sheetViews>
<sheetFormatPr defaultRowHeight="15" x14ac:dyDescent="0.25"/>
<cols>
<col min="1" max="1" width="12" customWidth="1"/>
<col min="3" max="5" width="14" customWidth="1"/>
<col min="6" max="7" width="31" customWidth="1"/>
</cols>
<sheetData/>
<mergeCells count="40">
<mergeCell ref="G15:I15"/>
<mergeCell ref="E3:F3"/>
<mergeCell ref="E4:F4"/>
</mergeCells>
<autoFilter ref="A1:N1"/>
<printOptions headings="1" gridLines="1"/>
<pageMargins left="0.7" right="0.7" top="0.7" bottom="0.7" header="0.3" footer="0.3"/>
<pageSetup paperSize="9" pageOrder="overThenDown" orientation="portrait" blackAndWhite="1" draft="1" cellComments="atEnd" errors="NA" r:id="rId1"/>
</worksheet>
Строка третья означает размер экспортируемого диапазона (с какой по какую ячейку находятся данные).
В теге sheetView — selection описывается выделенная клетка (или диапазон клеток).
Атрибут activeCell — активная ячейка, sqref — выделенная ячейка или диапазон ячеек.
такая строка может выглядеть и вот так:
<selection activeCellId="2" sqref="A1:B2 B2:C3 A1:C3"/>
Здесь уже вместо атрибута activeCell стоит activeCellId, потому что в атрибуте sqref мы видим несколько диапазонов. исходя из этого выясняем, что активный диапазон является A1:C3. на изображении ниже показано, как выглядит такой вариант выделения ячеек.
Про тег pane, sheetFormatPr и cols хорошо рассказано в статье от @Lachrimae:
Собственно, закрепление строки — тег <pane />. И вот какие здесь использованы атрибуты:
ySplit — показывает количество закрепленных строк. Для закрепления столбцов есть аналогичный атрибут xSplit;
topLeftCell — указание левой верхней ячейки, видимой по умолчанию НЕзакрепленной области;
activePane — указание местонахождения НЕзакрепленной области. В руководствах сказано, что этот атрибут регулирует, с какой стороны будет НЕзакрепленная область. Правда, попробовав разные значения, я почему-то получил одинаковый результат. Как вариант «by default» я для себя выбрал bottomRight;
state — указатель состояния закрепленной области. Для простого закрепления строки используется значение frozen
Тег <sheetFormatPr />. Пример:
<sheetFormatPr defaultRowHeight="15" x14ac:dyDescent="0.25"/>
Интересен нам здесь в основном атрибут defaultRowHeight, то есть высота столбца по умолчанию. Стандартный, привычный нам вариант — 15 у.е. Если назначить его, скажем, 30 у.е., то строки, для которых высота не указана отдельно, станут в 2 раза выше. Однако, для того чтоб применить значение, отличное от дефолтного, необходимо указать атрибут customHeight со значением «true». Выглядит это примерно так:
<sheetFormatPr defaultRowHeight="30" customHeight="true" x14ac:dyDescent="0.25"/>
Тег </cols>. Помогает установить ширину столбцов отличную от дефолтной. В заполненном виде выглядит примерно так:
Вложенные теги </col> обозначают не каждый один столбец, как могло показаться, а группу столбцов, идущих подряд и имеющих единую ширину.
Атрибут min — первый столбец группы;
Атрибут max — последний столбец группы;
Атрибут width — ширина столбца из группы;
Атрибут customWidth — флаг применения кастомной ширины, без него ширина все равно будет дефолтной;
Тег sheetData — описание содержимого ячеек и их настроек.
здесь структура такова:
<sheetData>
<row r="1" spans="1:5" ht="18" customHeight="1" x14ac:dyDescent="0.25">
<c r="A1">
<v>1</v>
</c>
<c r="B1" t="s">
<v>0</v>
</c>
<c r="C1" t="s">
<v>1</v>
</c>
<c r="D1" t="s">
<v>2</v>
</c>
<c r="E1">
<v>1</v>
</c>
</row>
<row r="4" spans="1:5" x14ac:dyDescent="0.25">
<c r="A4" t="s">
<v>2</v>
</c>
<c r="B4">
<f>SUM(A1:E1)</f>
<v>2</v>
</c>
</row>
</sheetData>
В Excel это будет выглядеть вот так:
Давайте разбираться, что же все-таки в коде происходит.
Мы видим два тега row — это наши строки. У каждой есть атрибут r — это номер строки. Атрибут spans означает сколько столбцов задействовано, dyDescent — вертикальное расстояние в пикселях между ячейками. Атрибут ht устанавливает высоту всей строки в пунктах, а тег customHeight говорит, что мы используем нестандартную высоту строки.
В теге row есть теги c — это ячейки в строке. у каждого тега есть атрибут r — означающий позицию ячейки. Но атрибут t — присутствует не у всех, потому что запись t=»s» — означает, что у ячейки установлен тип строки, а у кого этого атрибута нет — тип устанавливается стандартный — числовой. Еще у тегов c может присутствовать атрибут s, в котором записывается номер применяемого к ячейке стиля из файла xl/styles.xml (мы доберемся до него позже).
Внутри тегов c есть теги v — это наши значения, записываемые в ячейки. Но не все так просто. Те значения, которые находятся в теге c без атрибута t — те значения записываются без изменений, т.е. записывается в ячейку само число из тега v, а вот те значения, которые находятся в теге c с атрибутом t — уже обрабатываются по-другому: в теге v записан порядковый номер строки в файле xl/sharedStrings.xml (мы доберемся до него позже). В ячейку уже записывается строка, которая имеет порядковый номер, записанный в теге v.
Но мы можем заметить, что одна ячейка имеет помимо тега v еще тег f. Это тег с формулой, в данном случае формула означает: сумма ячеек от A1 до E1. А в теге v записан уже посчитанный ответ. Делать это не обязательно, но если не записать — то при открытии документа excel предложит сохранить изменения, т.к. он сам автоматически посчитал и записал этот результат.
С тегом sheetData разобрались, идем дальше.
Про теги mergeCells и autoFilter снова обратимся к статье от @Lachrimae:
Тег <mergeCells />.
Как мы знаем, в Excel есть возможность объединения ячеек. Все объединенные ячейки на листе перечислены здесь. В заполненном виде тег выглядит примерно так:
<mergeCells count="40">
<mergeCell ref="G15:I15"/>
<mergeCell ref="E3:F3"/>
<mergeCell ref="E4:F4"/>
</mergeCells>
Как видно, одна объединенная ячейка обозначена одним тегом <mergeCell /> с единственным атрибутом ref, задающим диапазон объединения.
Тег <autoFilter />. Фильтры, которые так любят видеть в отчетах наши пользователи. В заполненном виде тег выглядит так:
<autoFilter ref="A1:N1"/>
Нетрудно понять, что атрибут ref задает зону, занимаемую активными ячейками фильтров.
Тег printOptions — параметры печати. Атрибут headings — означает, что будут печататься заголовки, а атрибут gridLines — что будут печататься линии сетки.
Тег pageMargins задает поля сверху, снизу, справа, слева, у заголовков и у подвала для печатаемой страницы.
Тег pageSetup предпочтительные настройки бумаги, опять же, для печати.
Атрибут paperSize — устанавливает размер бумаги.
Используемые значения:
Значение |
Описание |
---|---|
16 |
10 в. x 14 в. |
17 |
11 в. x 17 в. |
8 |
A3 (297 мм x 420 мм) |
9 |
A4 (210 мм x 297 мм) |
10 |
A4 Small (210 мм x 297 мм) |
11 |
A5 (148 мм x 210 мм) |
12 |
B4 (250 мм x 354 мм) |
13 |
A5 (148 мм x 210 мм) |
24 |
Лист размеров C |
25 |
Лист размеров D |
20 |
Конверт #10 (4-1/8 в. x 9-1/2 в.) |
21 |
Конверт #11 (4-1/2 в. x 10-3/8 in.) |
22 |
Конверт #12 (4-1/2 в. x 11 in.) |
23 |
Конверт #14 (5 в. x 11-1/2 в.) |
19 |
Конверт #9 (3-7/8 в. x 8-7/8 in.) |
33 |
Конверт B4 (250 мм x 353 мм) |
34 |
Конверт B5 (176 мм x 250 мм) |
35 |
Конверт B6 (176 мм x 125 мм) |
29 |
Конверт C3 (324 мм x 458 мм) |
30 |
Конверт C4 (229 мм x 324 мм) |
28 |
Конверт C5 (162 мм x 229 мм) |
31 |
Конверт C6 (114 мм x 162 мм) |
32 |
Конверт C65 (114 мм x 229 мм) |
27 |
DL конверта (110 мм x 220 мм) |
36 |
Конверт (110 мм x 230 мм) |
37 |
Envelope Monarch (3-7/8 in. x 7-1/2 in.) |
38 |
Конверт (3-5/8 в. x 6-1/2 in.) |
26 |
Лист размеров E |
7 |
Executive (7-1/2 в. x 10-1/2 in.) |
41 |
Немецкий юридический фанфолд (8-1/2 в. x 13 in.) |
40 |
Немецкий юридический фанфолд (8-1/2 в. x 13 in.) |
39 |
Стандартный фанфолд США (14-7/8 в. x 11 in.) |
14 |
Фолио (8-1/2 в. x 13 in.) |
4 |
Книга (17 в. x 11 in.) |
5 |
Юридический (8-1/2 в. x 14 in.) |
1 |
Письмо (8-1/2 в. x 11 in.) |
2 |
Letter Small (8-1/2 in. x 11 in.) |
18 |
Примечание (8-1/2 в. x 11 in.) |
15 |
Quarto (215 мм x 275 мм) |
6 |
Заявление (5-1/2 в. x 8-1/2 in.) |
3 |
Таблоид (11 в. x 17 in.) |
256 |
Пользовательский |
Атрибут pageOrder — направление печати. Если значение «overThenDown» — то будет печататься слева направо, потом нижняя часть снова слева направо и т.д. Если такого атрибута нет — то печататься будет сначала вся левая сторона сверху-вниз, потом та часть, что справа и т.д.
Атрибут orientation — задает ориентацию листов. «portrait» — портретная (вертикальная) ориентация, «landscape» — альбомная (горизонтальная) ориентация.
Атрибут blackAndWhite — если установлена 1 ил true — лист будет напечатан в черно-белом варианте.
Атрибут draft — если установлена 1 ил true — лист будет напечатан без графики.
Атрибут cellComments — печать комментариев к ячейкам. Используемые значения:
-
AsDisplayed — Распечатать Комментарии Как отображается;
-
AtEnd — Печать в конце;
-
None — Не печатать.
Атрибут errors — Печать обработки ошибок.
-
Blank — Показать ошибки ячейки как пустые;
-
Dash — Ошибки ячейки Dash;
-
Displayed — Отображение ошибок ячейки;
-
NA — Отображает «NA».
Атрибут r:id — идентификатор настроек.
Разбор xl/caclChain.xml
По традиции, начнем с содержимого файла:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<calcChain xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main">
<c r="B4" i="1"/>
</calcChain>
Здесь нам важна строка 3. видим тег c — наша ячейка, у нее есть атрибут r — адрес ячейки. Индексный атрибут i указывает индекс листа, с которым связана ячейка.
Разбор xl/sharedStrings.xml
Обратимся к статье от @Lachrimae:
Представим, что у нас есть таблица, заполненная строковыми данными, и что она большая. При этом крайне маловероятно, что все значения в ней будут уникальны. Некоторые из них нет-нет, да повторятся где-нибудь в разных частях таблицы. Хранить такой массив «как есть» внутри XML-разметки листа нерационально с точки зрения ресурсов ПК. Поэтому все строковые значения вынесены в отдельный файл, /xl/sharedStrings.xml. Часть его, которая нас интересует, выглядит, допустим, так:
<sst xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" count="4" uniqueCount="3">
<si><t>Вася</t></si>
<si><t>Петя</t></si>
<si><t>Саша</t></si>
</sst>
Обратите внимание на атрибуты тега <sst /> «count» и «uniqueCount»: их значения различаются. Дело в том, что в книге одну из строк я использовал дважды. При этом атрибуты не обязательны, то есть если их убрать, то Excel ошибки не выдаст, но при сохранении файла нарисует опять.
Здесь же можно сказать, что здесь, внутри тега <si /> можно играть с настройками шрифта. Для этого используется доработанная напильником система пробегов, применяемая в MS Word (до него мы еще доберемся). Выглядит это примерно так:
<si>
<r>
<t xml:space="preserve">Мама </t>
</r>
<r>
<rPr>
<b/>
</rPr>
<t>мыла</t>
</r>
<r>
<rPr>
<sz val="18"/>
</rPr>
<t xml:space="preserve"> раму</t>
</r>
</si>
Обратите внимание: в корневой тег <si/> в предыдущем примере был встроен непосредственно тег <t/>, содержавший текст. Здесь же он обернут тегом <r/>, то есть Run; по-русски его принято назвать «пробег». Пробег — это, если в двух словах — кусок текста, имеющий одинаковые стилевые настройки.
В этом примере строковое значение содержит 3 пробега. Чтобы было удобнее их рассматривать, я, пожалуй, вынесу их отдельными сорсами.
Первый:
<r>
<t xml:space="preserve">Мама </t>
</r>
Этот пробег не содержит секции <rPr/>, поэтому использует стилевые настройки ячейки, в которой находится. В нем интересно другое: атрибут xml:space=«preserve». Дело в том, что по умолчанию что Excel, что Word обрезают концевые пробелы со всех пробегов. Может показаться, что в этом случае в месте стыка пробегов всегда должна получаться примерно такая картина: «ВасяПетя». Но по опыту общения с тем же MS Word мы знаем, что это не так. Из-за чего? Вот как раз из-за xml:space=«preserve».
Второй:
<r>
<rPr>
<b/>
</rPr>
<t>мыла</t>
</r>
Здесь нет атрибута xml:space=«preserve». Нам без разницы, что Excel сделает с концевыми пробелами, которых нет. Зато есть блок <rPr/>. В принципе, в него можно поместить любые настройки шрифта, которые только есть в Excel. Я же сделал всего один, чтобы не раздувать объем примера.
Третий:
<r>
<rPr>
<sz val="18"/>
</rPr>
<t xml:space="preserve"> раму</t>
</r>
А здесь у нас есть и блок настроек шрифта, и сохранение концевых пробелов.
Ну и еще коротенькая ремарка. Если есть необходимость сделать многострочную запись в ячейке, то здесь в строке просто будет обычный символ переноса, chr(10). Сам атрибут многострочности ячейки расположен в файле разметки листа. В однострочной ячейке символ переноса будет проигнорирован. Excel просто сделает вид, что его нет.
Добавлю: каждый тег si имеет порядковый номер, начиная с 0. Он нигде не записывается. Этот номер и записывается в файле xl/worksheets/sheet1.xml в теге sheetData, который мы рассматривали ранее.
Разбор xl/styles.xml
Снова обратимся к статье от @Lachrimae. Буду добавлять от себя дополнительную информацию.
Как нетрудно догадаться, здесь хранится информация об оформлении ячеек. Причем в угоду оптимизации, хранится она в достаточно интересном виде. Файл состоит из следующих секций:
1. Шрифты:
<fonts count="2" x14ac:knownFonts="1">
<font>
<sz val="11"/>
<color theme="1"/>
<name val="Calibri"/>
<family val="2"/>
<scheme val="minor"/>
</font>
<font>
<b/>
<sz val="11"/>
<color theme="1"/>
<name val="Calibri"/>
<family val="2"/>
<charset val="204"/>
<scheme val="minor"/>
</font>
</fonts>
Как можно понять, здесь перечислены только уникальные стили оформления текста, использованные в книге. Каждый тег — один стиль. Вложенные теги — особенности стиля, такие как полужирное написание (тег <b/>), кегль (<sz/>) и другие.
На месте тега <b/> можно написать:
-
<i/> — курсив;
-
<u/> — подчеркнутый,
либо <u val=»double»/> — двойное подчеркивание; -
<strike/> — зачеркнутый;
-
<vertAlign val=»superscript»/> — надстрочный текст,
либо <vertAlign val=»subscript»/> — подстрочный текст;
либо сочетание нескольких тегов.
Если хотите установить цвет шрифта какой-нибудь свой (возьмем #123456), то в теге color вместо атрибута theme пишем rgb и вставляем hex-код цвета, должно получиться вот так:
<color rgb="123456"/>
2. Заливка ячеек:
<fills count="2">
<fill>
<patternFill patternType="none"/>
</fill>
<fill>
<patternFill patternType="gray125"/>
</fill>
</fills>
Как видно, первый вариант — без заливки вообще, а второй — сплошная заливка библиотечного цвета «gray125».
Здесь тот же принцип с установкой своего цвета, только немного по-другому записывается:
<fill>
<patternFill patternType="solid">
<fgColor rgb="123456"/>
<bgColor indexed="64"/>
</patternFill>
</fill>
Тег fgcolor — отвечает за цвет переднего плана, а bgcolor — за цвет заднего плана (indexed=»64″ — черный цвет).
У тега patternFill атрибут patternType может иметь следующие значения:
-
none — Нет заливки;
-
solid — Сплошная заливка; (пример выше)
-
darkGray — Серый 75%;
Пример
<fill> <patternFill patternType="darkGray"> <fgColor rgb="FF0000"/> <bgColor rgb="00FF00"/> </patternFill> </fill>
Цвет выглядит вот так:
Цвет ячейки Здесь мы можем наблюдать, что цвета расположены в сетку
-
mediumGray — Серый 50%;
Пример
<fill> <patternFill patternType="mediumGray"> <fgColor rgb="FF0000"/> <bgColor rgb="00FF00"/> </patternFill> </fill>
Цвет выглядит вот так:
Цвет ячейки Здесь сетка уже поменьше и цвет из тега fgcolor уже меньше прорисовывается.
-
lightGray — Серый 25%;
Пример
<fill> <patternFill patternType="lightGray"> <fgColor rgb="FF0000"/> <bgColor rgb="00FF00"/> </patternFill> </fill>
Цвет выглядит вот так:
Цвет ячейки Здесь сетка еще меньше и цвет из тега fgcolor еще меньше прорисовывается.
-
gray125 — Серый 12.5%;
Пример
<fill> <patternFill patternType="gray125"> <fgColor rgb="FF0000"/> <bgColor rgb="00FF00"/> </patternFill> </fill>
Цвет выглядит вот так:
Цвет ячейки Посыл, думаю, понятен
-
gray0625 — Серый 0.025%
Пример
<fill> <patternFill patternType="gray0625"> <fgColor rgb="FF0000"/> <bgColor rgb="00FF00"/> </patternFill> </fill>
Цвет выглядит вот так:
Цвет ячейки -
darkHorizontal — Полосатый цвет с горизонтальными линиями;
Пример
<fill> <patternFill patternType="darkHorizontal"> <fgColor rgb="FF0000"/> <bgColor rgb="00FF00"/> </patternFill> </fill>
Цвет выглядит вот так:
Цвет ячейки -
darkVertical — Полосатый цвет с вертикальными линиями;
Пример
<fill> <patternFill patternType="darkVertical"> <fgColor rgb="FF0000"/> <bgColor rgb="00FF00"/> </patternFill> </fill>
Цвет выглядит вот так:
Цвет ячейки -
darkDown — Полосатый цвет с диагональными линиями сверху-вниз;
Пример
<fill> <patternFill patternType="darkDown"> <fgColor rgb="FF0000"/> <bgColor rgb="00FF00"/> </patternFill> </fill>
Цвет выглядит вот так:
Цвет ячейки -
darkUp — Полосатый цвет с диагональными линиями снизу-вверх;
Пример
<fill> <patternFill patternType="darkUp"> <fgColor rgb="FF0000"/> <bgColor rgb="00FF00"/> </patternFill> </fill>
Цвет выглядит вот так:
Цвет ячейки -
darkGrid — Диагональный клетчатый;
Пример
<fill> <patternFill patternType="darkGrid"> <fgColor rgb="FF0000"/> <bgColor rgb="00FF00"/> </patternFill> </fill>
Цвет выглядит вот так:
Цвет ячейки В этом варианте сетки четко видно, клетки цветов одинаковые и их поровну. Как шахматная доска
-
darkTrellis — Толстый диагональный клетчатый;
Пример
<fill> <patternFill patternType="darkTrellis"> <fgColor rgb="FF0000"/> <bgColor rgb="00FF00"/> </patternFill> </fill>
Цвет выглядит вот так:
Цвет ячейки -
lightHorizontal — Полосатый цвет с горизонтальными тонкими линиями;
Пример
<fill> <patternFill patternType="lightHorizontal"> <fgColor rgb="FF0000"/> <bgColor rgb="00FF00"/> </patternFill> </fill>
Цвет выглядит вот так:
Цвет ячейки -
lightVertical — Полосатый цвет с вертикальными тонкими линиями;
Пример
<fill> <patternFill patternType="lightVertical"> <fgColor rgb="FF0000"/> <bgColor rgb="00FF00"/> </patternFill> </fill>
Цвет выглядит вот так:
Цвет ячейки -
lightDown — Полосатый цвет с диагональными тонкими линиями сверху-вниз;
Пример
<fill> <patternFill patternType="lightDown"> <fgColor rgb="FF0000"/> <bgColor rgb="00FF00"/> </patternFill> </fill>
Цвет выглядит вот так:
Цвет ячейки -
lightUp — Полосатый цвет с диагональными тонкими линиями снизу-вверх;
Пример
<fill> <patternFill patternType="lightUp"> <fgColor rgb="FF0000"/> <bgColor rgb="00FF00"/> </patternFill> </fill>
Цвет выглядит вот так:
Цвет ячейки -
lightGrid — Тонкий горизонтальный клетчатый;
Пример
<fill> <patternFill patternType="lightGrid"> <fgColor rgb="FF0000"/> <bgColor rgb="00FF00"/> </patternFill> </fill>
Цвет выглядит вот так:
Цвет ячейки -
lightTrellis — Тонкий диагональный клетчатый;
Пример
<fill> <patternFill patternType="lightTrellis"> <fgColor rgb="FF0000"/> <bgColor rgb="00FF00"/> </patternFill> </fill>
Цвет выглядит вот так:
Цвет ячейки
Можно еще заливку сделать градиентом:
-
Горизонтальный, вертикальный, диагональный:
Примеры
2 цвета:
<fill> <gradientFill degree="90"> <stop position="0"> <color rgb="0000FF"/> </stop> <stop position="1"> <color rgb="FFFFFF"/> </stop> </gradientFill> </fill>
градиент 2 цвета Атрибут degree — угол поворота, изменяя который можно менять направление градиента.
3 цвета:
<fill> <gradientFill degree="90"> <stop position="0"> <color rgb="0000FF"/> </stop> <stop position="0.5"> <color rgb="FFFFFF"/> </stop> <stop position="1"> <color rgb="FF0000"/> </stop> </gradientFill> </fill>
Градиент 3 цвета
-
От угла:
Примеры
От левого верхнего угла
<fill> <gradientFill type="path"> <stop position="0"> <color rgb="0000FF"/> </stop> <stop position="1"> <color rgb="FFFFFF"/> </stop> </gradientFill> </fill>
Градиент от угла От правого верхнего угла — в тег gradientFill добавить атрибуты left=»1″ right=»1″, чтобы получилось:
<gradientFill left="1" right="1" type="path">
От левого нижнего угла — в тег gradientFill добавить атрибуты bottom=»1″ top=»1″;
От правого нижнего угла — в тег gradientFill добавить атрибуты bottom=»1″ top=»1″ left=»1″ right=»1″;
-
От центра:
<fill> <gradientFill bottom="0.5" top="0.5" right="0.5" left="0.5" type="path"> <stop position="0"> <color rgb="0000FF"/> </stop> <stop position="1"> <color rgb="FFFFFF"/> </stop> </gradientFill> </fill>
Градиент от центра
3. Границы:
<borders count="2">
<border>
<left/>
<right/>
<top/>
<bottom/>
<diagonal/>
</border>
<border>
<left style="thin">
<color indexed="64"/>
</left>
<right style="thin">
<color indexed="64"/>
</right>
<top style="thin">
<color indexed="64"/>
</top>
<bottom style="thin">
<color indexed="64"/>
</bottom>
<diagonal/>
</border>
</borders>
Как видно, одно наименование здесь состоит из пяти элементов, 4 основных границы и диагональная, то есть все то, что можно настроить через GUI самого Excel.
Атрибут style означает стиль границы и может иметь следующие значения:
-
thin – тонка сплошная;
-
hair – мелкая пунктирная;
-
dotted – точечная пунктирная;
-
dashed – пунктирная линия;
-
dashDot – пунктир линия точка;
-
dashDotDot – пунктир линия точка точка;
-
double – двойная сплошная;
-
medium – сплошная средней толщины;
-
mediumDashed – пунктирная линия средней толщины;
-
mediumDashDot – пунктир линия точка средней толщины;
-
mediumDashDotDot – пунктир линия точка точка средней толщины;
-
slantDashDot – косая пунктир линия точка средней толщины;
-
thick – сплошная большой толщины.
Для установки цвета границы используйте уже известную нам запись:
<color rgb="123FFF"/>
Чтобы установить диагональную границу, нужно в тег diagonal записать атрибуты:
-
diagonalDown=»1″ — для границы сверху-вниз;
-
diagonalUp=»1″ — для границы снизу вверх.
Должно получиться:
<diagonal diagonalDown="1"/>
<diagonal diagonalUp="1"/>
<diagonal diagonalDown="1" diagonalUp="1"/>
Ну и не забудьте внутри тега diagonal записать цвет для границы — тег color.
4. Стили ячеек:
<cellXfs count="4">
<xf numFmtId="0" fontId="0" fillId="0" borderId="0" xfId="0"/>
<xf numFmtId="0" fontId="1" fillId="0" borderId="0" xfId="0" applyFont="1" applyAlignment="1">
<alignment wrapText="1"/>
</xf>
<xf numFmtId="0" fontId="0" fillId="0" borderId="1" xfId="0" applyBorder="1" applyAlignment="1">
<alignment horizontal="center" vertical="center"/>
</xf>
<xf numFmtId="0" fontId="1" fillId="2" borderId="1" xfId="0" applyFont="1" applyFill="1" applyBorder="1" applyAlignment="1">
<alignment horizontal="center" vertical="center"/>
</xf>
</cellXfs>
А вот здесь надо объяснить подробнее. Когда в файле листа мы будем указывать стиль ячейки, мы будем ссылаться как раз на эту секцию. Каждый тег <xf />, представляющий собой один стиль, является собранием ссылок на предыдущие секции, то есть он сам по себе не содержит объявления шрифта, границ и заливки. Рассмотрим интересные атрибуты ближе:
— numFmtId — указание формата текста в ячейке (дата, валюта, число, текст, …). Полный перечень этих типов есть здесь
— fontId, fillId, borderId — ссылка на шрифт/заливку/границы (см. секцию 1, 2 и 3 соответственно). Нумерация начинается с 0.
— applyFont, applyFill, applyBorder — указание на то, что при оформлении этой ячейки вообще используется кастомный шрифт/заливка/границы. По умолчанию 0, так что можно не указывать вообще, как видно на примере в элементе #0.
— applyAlignment — указание на то, что выравнивание текста в ячейке будет отличаться от стандартного. По умолчанию 0, но если указано «1», то в родительский тег <xf /> встраивается тег <alignment />, как видно на примере начиная с #1.
В теге alignment могут быть атрибуты:
-
horizontal — выравнивание текста в горизонтальной плоскости. Может иметь значения: left – по левому краю, center – по центру, right – по правому краю, justify – по ширине, fill — заполнение, distributed – распределенное
-
vertical — выравнивание текста по вертикали. Значения: top – по верхнему краю, center – по центру, bottom – по нижнему краю, justify – по высоте, distributed – распределенное
-
textRotation — угол поворота текста. Если установить 255 — то текст будет вертикальный.
-
wrapText=»1″ — перенос текста
Разбор xl/workbook.xml
Из статьи от @Lachrimae:
Основное его назначение — манифест, то есть перечень листов, из которых наша книга Excel, собственно, и состоит.
Выглядит этот перечень, к примеру, так:
<sheets>
<sheet name="Лист1" sheetId="1" r:id="rId1"/>
<sheet name="Лист2" sheetId="2" r:id="rId2"/>
<sheet name="Лист3" sheetId="3" r:id="rId3"/>
<sheet name="Лист4" sheetId="4" r:id="rId4"/>
</sheets>
Это значит, что в книге 4 листа, и их имена указаны в атрибутах name. Каждому тегу должен соответствовать файл в папке %file%/xl/worksheets. Excel сам знает, как должны называться эти файлы и при попытке их переименовать, сочтет всю книгу поврежденной.
Разбор [Content_Types].xml
Содержимое файла может быть следующим:
<?xml version="1.0" encoding="UTF-8" standalone="true"?>
<Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types">
<Default ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.printerSettings" Extension="bin"/>
<Default ContentType="application/vnd.openxmlformats-package.relationships+xml" Extension="rels"/>
<Default ContentType="application/xml" Extension="xml"/>
<Override ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml" PartName="/xl/workbook.xml"/>
<Override ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml" PartName="/xl/worksheets/sheet1.xml"/>
<Override ContentType="application/vnd.openxmlformats-officedocument.theme+xml" PartName="/xl/theme/theme1.xml"/>
<Override ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml" PartName="/xl/styles.xml"/>
<Override ContentType="application/vnd.openxmlformats-package.core-properties+xml" PartName="/docProps/core.xml"/>
<Override ContentType="application/vnd.openxmlformats-officedocument.extended-properties+xml" PartName="/docProps/app.xml"/>
<Override ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml" PartName="/xl/sharedStrings.xml"/>
<Override ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.calcChain+xml" PartName="/xl/calcChain.xml"/>
</Types>
В этом файле прописываются определения типов всех файлов и их расположения.
Как видно, здесь записываются все файлы листов, стилей, строковых значений, формул и т.д.
Если в документе вы не используете, к примеру, формул, то строки 13 не будет записано.
Завершение
Я разобрал основные моменты содержания файла excel. Если вам будет интересно узнать про диаграммы и другие возможности excel — пишите в комментариях, я постараюсь сделать дополнение к этой статье из ваших просьб.
Каждому человеку свойственно ошибаться. Если я чего-любо не раскрыл или раскрыл не полностью, либо с ошибками — поправьте меня.
Если вам также будет интересно — напишу статью, как манипулировать с файлами excel посредством PHP/Java/Ruby.
Спасибо за внимание и уделенное время этой статье.
I want excel files on a website to open in Excel when clicked, not get saved on desktop, or get opened embedded in a browser etc. Now obviously it all depends on how everything is configured for each user, but what’s the best Content-Type and other settings to achieve just that most of the time?
asked May 30, 2010 at 3:54
2
For BIFF .xls files
application/vnd.ms-excel
For Excel2007 and above .xlsx files
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
answered May 30, 2010 at 10:15
Mark BakerMark Baker
208k31 gold badges340 silver badges383 bronze badges
16
answered May 30, 2010 at 3:57
mikumiku
179k46 gold badges308 silver badges309 bronze badges
2
Do keep in mind that the file.getContentType
could also output application/octet-stream instead of the required application/vnd.openxmlformats-officedocument.spreadsheetml.sheet when you try to upload the file that is already open.
CSchulz
10.8k10 gold badges59 silver badges112 bronze badges
answered Feb 26, 2014 at 20:43
DiTapDiTap
3612 silver badges5 bronze badges
Установка типа mime для документа excel
MS Excel имеет следующие наблюдаемые типы MIME:
- application/vnd.ms-excel (официальный)
- application/msexcel
- application/x-msexcel
- application/x-ms-excel
- application/x-excel
- application/x-dos_ms_excel
- application/xls
- application/x-xls
- application/vnd.openxmlformats-officedocument.spreadsheetml.sheet (XLSX-файл)
Есть ли какой-то один тип, который будет работать для всех версий? Если нет, то нужно ли устанавливать response.setContentType() для каждого из этих типов mime отдельно?
Кроме того, мы используем потоковую передачу файлов в нашем приложении для отображения документа (а не только excel — любого типа документа). При этом, как мы можем сохранить имя файла, если пользователь решает сохранить файл — в настоящее время имя сервлета, который отображает файл, отображается как имя по умолчанию.
7 Ответов
Я считаю, что стандартный тип MIME для файлов Excel — это application/vnd.ms-excel .
Что касается названия документа, то в ответе следует задать следующий заголовок:
Здесь я вижу просыпающуюся старую нить, но я почувствовал желание добавить формат «new» .xlsx.
Согласно http://filext.com/file-extension/XLSX расширение для .xlsx равно application/vnd.openxmlformats-officedocument.spreadsheetml.sheet . Это может быть хорошей идеей, чтобы включить его при проверке на наличие типов mime!
Вы всегда должны использовать тип ниже MIME, если вы хотите обслуживать файл excel в формате xlsx
Я устанавливал тип MIME из кода .NET, как показано ниже —
Мое приложение генерирует excel, используя OpenXML SDK. Этот тип MIME работал —
Для .xls используйте следующий тип содержимого
Для версии Excel 2007 и выше формат файлов .xlsx
Я использую EPPlus для создания файла .xlsx (на основе формата OpenXML) excel. Для отправки этого файла excel в качестве вложения в email я использую следующий тип MIME, и он отлично работает с EPPlus сгенерированным файлом и правильно открывается в MS-outlook mail client preview.
Для тех, кто все еще спотыкается с этим после использования всех возможных типов MIME, перечисленных в вопросе:
Я обнаружил, что iMacs, как правило, также бросает MIME тип «text/xls» для файлов XLS Excel, надеюсь, это поможет.
Похожие вопросы:
Таким образом, в CouchDB вы можете предположительно изменить типы mime. В футоне вам просто нужно пойти и отредактировать источник документа и изменить поле content_type на вложения в поле.
Невозможно получить тип MIME из bytearray-возвращает NULL для любого документа типа MIME. byte[] res.
Как я могу установить правильный тип MIME, который работает с excel 2007? прямо сейчас у меня есть это: header(Content-type: application/vnd.ms-excel; charset=UTF-8); мой браузер постоянно говорит.
Проверка типа mime в php довольно проста, но, насколько я знаю, mime можно подделать. Злоумышленник может загрузить сценарий php, например, с типом jpeg mime. Одна вещь, которая приходит на ум, это.
Я пытаюсь развернуть сайт Jekyll. Вот вам и поток: Содержимое добавляется и перемещается в BitBucket BitBucket трубопровод строит сайт Находит все файлы HTML в _site/ и удаляет их расширение.
Кроме LSCopyDefaultApplicationURLForURL существует LSCopyApplicationURLsForURL , чтобы получить все приложения, а не только один по умолчанию. Если вы просто хотите получить приложения по умолчанию.
Я хочу написать excel и отправить его пользователю в качестве ответа в приложении с помощью Play framework 1.x . Но я не уверен, как установить ответ content-type/MIME-type для возврата doc или.
Для веб-приложения, которое позволяет просматривать документы в браузере, я хотел бы проверить, поддерживает ли браузер пользователя предварительный просмотр текущего типа mime документа. Существует.
Существует ли официальный URN для типа MIME? Mozilla Firefox и другие приложения используют обозначения типа urn:mimetype:text/plain или urn:mimetype:handler:text/plain . Есть две проблемы с этим.
Загрузка файлов xls или xlsx с помощью codeigniter, ошибка типа mime
Ну, я считаю, что это не проблема Codeigniter per se как это mime-type.
Я пытаюсь загрузить файл, файл xls (или xlsx) и MIME-тип браузера, а отчет php —приложения/октет-поток вместо приложение / excel, application / vnd.ms-excel или приложения/msexcel для файла xls. Конечно, плагин загрузки codeigniter сообщит об ошибке (недопустимый тип файла), поскольку он пытается сопоставить расширение файла с типом mime.
странная (est) вещь может заключаться в том, что один и тот же код работал в течение нескольких месяцев и теперь перестал работать с последними Chrome (16.0.912.77), Firefox (10.0) и IE9.
У кого-нибудь была такая же (или похожая) проблема и желание поделиться решением?
большое спасибо. PS: Я не буду предоставлять код, поскольку это не совсем код, но при необходимости я загружу некоторые фрагменты.
редактировать
Это может быть актуально: ошибка не происходит с теми же браузерами в аналогичной конфигурации, но с MS Office вместо Libre Office (на моем ПК). Это также не происходит в системе GNU / Linux + Libre Office. Итак, может ли это быть Windows, играющая жестко на наборе с открытым исходным кодом, или офис Libre меняет типы mime просто для этого?
4 ответов
Я также получаю эту ошибку.
CI сообщает тип файла «application / zip», который имеет смысл, поскольку формат xlsx является сжатым форматом (переименуйте его в zip, и вы можете открыть содержимое).
Я добавил / заменил следующую строку в файл типов mime (application/config/mimes.php):
и это работает (по крайней мере, для этого браузера!)
пожалуйста, пройдите через следующее описание и подсказку и получите ответ легко!
описание:
на самом деле, как многие из них посоветовали добавить/заменить следующую строку в файле (application/config/mimes.php):
Но я понял это в CodeIgniter Версии 2.2.* проблема немного отличается! Они уже добавили эту строку, но забыли добавить следующий «file_type» ==> ‘application / vnd.ms-excel’
Итак, добавив выше ‘ application / vnd.ms-excel’ в массив xlsx тип файла, позвольте мне загрузить .XLSX-файл файлы!
подсказка:
всякий раз, когда вы получаете следующую ошибку, на платформе CodeIgniter и загружаете файлы:
тип файла, который вы пытаетесь загрузить, не допускается.
сделайте следующее в вашем Метод загрузки контроллера,
и это даст вам огромный массив, который вы можете получить представление из этого ссылке.(Пожалуйста, смотрите конец этой страницы). В этом массиве вы можете получить реальный mime_type файла, который вы пытаетесь загрузить, но не даете вам загрузить.
ответ:
в моем случае, расширение файла, .XLSX-файл, а тип мима был application / vnd.ms-excel, который был не добавлено в
так что я добавил его вручную, и после этого он работает ВЕРРИ ХОРОШО.
то же самое произошло с загрузкой CSV еще раз, когда я проверил расширение файла .csv но тип mime был text / plain, когда я добавил его в следующую строку:
и сохраненный следующим образом:
это работает как шарм! :Д Попробуйте, если вы найдете что-то новое в вышеприведенном шаги, пожалуйста, прокомментируйте здесь. Поэтому, надеясь, что это будет полезно для всего сообщества CodeIgniter, я разместил его некоторое время!
С наилучшими пожеланиями, ребята,
это была ошибка CI несколько месяцев назад:https://github.com/EllisLab/CodeIgniter/issues/394 . пантомимы.php в фреймворке был обновлен и ошибка была устранена. Обновите библиотеку CodeIgniter до версии 2.1.0 (или новее).
также хорошей вещью для тестирования / дампа являются типы mime вашего сервера.
Другой альтернативой является принуждение типа mime. С.htaccess, это было бы
для всего приключения отладки, испытайте различные файлы офиса с get_mime_by_extension($file) С помощью Помощника по файлам (http://codeigniter.com/user_guide/helpers/file_helper.html)
только для записей, я нашел причину, MIME-тип отсутствовал в реестре windows, решил добавить эти ключи с a .reg-файл:
но предпочел бы использовать эти решения, я не люблю возиться с реестром.
PHP библиотека PHPExcel для работы с Excel
Для работы с Excel использовал библиотеку PHPExcel. Установка простейшая – кладем папку Classes в нужную папку на сервере, указываем корректные пути в include/require.
Примеры кода по чтению/генерации файлов Excel можно посмотреть на github странице библиотеки.
Красивости
и этим не ограничивается функционал, это лишь то, что использовал:
- mergeCells(“cell_range”) – Объединение указанных ячеек в одну. Данные должны лежать в первой ячейке, иначе они теряются.
- setSize(16) – Делаем размер шрифта 16 для указанных ячеек.
- setBold(true) – Делаем текст “жирным”
- setWrapText(true) – Делаем перенос слов по умолчанию для всех ячеек
- setAutoFilter – Включить фильтр по умолчанию
- freezePane – Закрепить какие либо строки, например первую
- borders – делается через создание стиля, а потом его применение на указанный диапазон ячеек
- color – Аналогично с помощью стилей меняем цвет шрифта (Font)
- setARGB – Изменить цвет ячейки, например
- всей первой строки
- конкретной ячейки (делал так цвет был переменным и задавался на основе данных – формировался разноцветный показательный Excel)
- диапазона ячеек по диагонали
ЧТЕНИЕ
Код для чтения (два столбца):
Редактирование
Открываем файл test.xlsx, на его основе создаем новый new.xlsx с измененными парой ячеек.
ГЕНЕРАЦИЯ
Пример генерации на основе результата MySQL (не тестил, использовал универсальную функцию ниже).
Если нужно протестить базовую работу генерации на основе двумерного массива
Пример генерации xls из двумерного массива с настройками
- имени (определяется на основе значения в переменной $_POST[‘filename’]),
- ширины столбца (на основе $_POST[‘excelSettings’]),
- bold первой строки (setBold),
- переноса слов (setWrapText).
Пример вызова и код по генерации кнопки, добавлению к названию файла даты/времени (формат 20170123_003800_Название.xlsx) и переходу на страницу генерации xls.
Вызов функции (про функцию iconv_for_xls ниже):
Особенности
Мусор
Нужно очень внимательно смотреть, чтобы php не генерировал никакого вывода, в противном случае возможны разные ошибки и искажения файла.
Например, возможны кракозябры при генерации файла больше 20-40 строк, если оставить включенным debug типа print_r($_POST); (почему не воспроизводиться при генерации мелких файлов – это вопрос :)).
Аналогично, будет выдавать ошибку:
- Если в конце кода php нет “exit;”
- Если перед генерацией файла нет очистки буфера вывода через “ob_end_clean();”
- Если используется генерация xlsx (Excel2007), но не установлены xml и xmlwriter модули PHP. Так же может выдаваться ошибка “Fatal error: Class ‘XMLWriter’ not found in /
/XMLWriter.php on line 37” т.к. библиотека PHPExcel использует наследование класса от XMLWriter (“class PHPExcel_Shared_XMLWriter extends XMLWriter”), т.е. требует установленного модуля xmlwriter. Для “нормальных” дистрибутивов это делается простым sudo apt-get/yum install php-xmlwriter (или php5-xml) и перезагрузкой apache, для gentoo это делается через пересборку всего php с новым модулем.
Отправка array на другую страницу
Чтобы функция по генерации xlsx была универсальной, сделал отдельную страницу по генерации, но на эту страницу потребовалось передать двумерный массив. В интернете гуляет два варианта решения: сохранить массив в сессии/куках, передать его через json (лучше) или serialize (хуже).
Через сессии все передавалось, только значение почему то не апдейтилось корректно. Сходу не разобрался в причинах, использовал сначала serialize (полный пример см. в function create_xls), но потом мигрировал на json из-за периодических проблем со спец. символами serialize.
Кодировка
Если на сайте кодировка cp-1251, то при генерации обязательно нужно использовать iconv в utf-8. В противном случае вместо русских символов в ячейке будет бред (например, “ИСТИНА”).
What is MIME application/excel?
application/excel
Compatible with Windows 10, 8, 7, Vista, XP and 2000
Optional Offer for WinThruster by Solvusoft | EULA | Privacy Policy | Terms | Uninstall
What Are MIME Types?
A Multi-Purpose Internet Mail Extension (eg. “application/excel”), also known as a MIME, is type of Internet standard originally developed to allow the exchange of different types of data files through e-mail messages. MIME types like application/excel are classified into specific data categories such as Video, Audio, Image, and many more. This categorization provides instructions to your computer or mobile device about how these files should be opened / viewed.
Why Do I Need MIME Types Like application/excel?
Categorizing MIME types like application/excel into a data type such as “Application” allows your e-mail client or Internet browser to display the content as intended. For example, when you attach a digital camera photo file to an e-mail, an Image MIME type will be associated with that file to allow your recipient to view the photograph.
Here’s how it works: Web servers (computers that host websites and e-mail) insert a set of MIME instructions into the beginning of a data transmission, such as an e-mail message or webpage, in the following format:
Content-Type: application/excel
[Format Explanation: The MIME type, which in this example is “Application”, is separated by a forward slash (“/”) and followed by a subtype.]
This set of instructions tells your client application, such as an e-mail program (eg. Microsoft Outlook, Apple Mail) or web browser (eg. Google Chrome, Mozilla Firefox), which “player application” should be used to properly display the application/excel content.
Many modern web browsers include built-in components to display common data types such as image players (eg. GIF, JPEG), Adobe Flash Player, Javascript, and many more. Other less-common types of players must be downloaded separately in order to properly display the MIME content.
What Are The Most Common Problems Associated With application/excel?
Sometimes you’ll find that your web browser or e-mail client is unable to properly display your application/excel content. This could be due to one of two reasons:
1. You are missing the proper Application “player software” to display the application/excel content.
2. Your Windows Registry contains an incorrect file extension (eg. XLS, PDF) association with the application/excel MIME type.
How To Fix application/excel Issues
Do I have the application/excel “player application” installed?
The first step in troubleshooting issues with opening application/excel content is to first make sure that you have the correct “player application” installed for this MIME type. Because there can be several (or even hundreds) of related software applications to application/excel, it is very difficult for us to compile a comprehensive list.
Therefore, a key strategy in determining the correct application is to look for clues on what software programs might be related to application/excel. Look at the naming of the subtype for clues about a related program (eg. Word, Excel) or software developer name (eg. Microsoft).
Furthermore, if you’ve been sent MIME type application/excel as an e-mail attachment, look for the file extension of the attached file. This file extension (eg. XLT, XLS, etc.) can provide you with a clue of what “player application” is associated with this Application MIME. Take a look at our file extension list below to see if there are any clues to finding the right “player application”.
Do I have broken application/excel file associations?
The second step in troubleshooting application/excel issues is making sure that you have correct file associations in the Windows Registry. Installing and uninstalling programs can lead to incorrect file associations with application/excel. Take a look at your Windows Registry settings to ensure that the MIME type is correctly associated with the “player application” and file extension.
WARNING: DO NOT edit the Windows Registry unless you are an advanced computer user with experience editing the Registry. Making an error in editing the Registry can create irreversible damage to your PC.
If you are not comfortable editing the Windows Registry, we highly recommend using an automated registry cleaning program, or taking you computer to a qualified professional.
phpexcel: писать данные в Excel с помощью PHP и читать из Excel
Задача писать данные в Excel с помощью PHP и читать из Excel
Как сказал Гагарин — «Поехали!»
//Скачать библиотеку — http://phpexcel.codeplex.com/
//Нашел русскую документацию — http://www.cyberforum.ru/php-beginners/thread1074684.html
//Подключаем скачаную библиотеку
include(«Classes/PHPExcel.php»);
if($_GET[‘do’]==1) <
//Запрос и выборка данных из базы
//В моем примере я подключаюсь к базе MS SQL
//В Вашем примере вы указываете свое подключение MySQLMS SQLPostgree.
$sql = «select TOP 5 id, name, info FROM ip_acct.dbo.points WHERE client_id = 780 AND info IS NOT NULL»;
$result = sqlsrv_query( $iconn, $sql );
while($r = sqlsrv_fetch_array( $result, SQLSRV_FETCH_ASSOC)) <
//Результат выборки данных в массиве $l
$l[] = $r;
>;
//Создание объекта класса библиотеки
$objPHPExcel = new PHPExcel();
//Указываем страницу, с которой работаем
$objPHPExcel->setActiveSheetIndex(0);
//Получаем страницу, с которой будем работать
$active_sheet = $objPHPExcel->getActiveSheet();
//Создание новой страницы(пример)
//$objPHPExcel->createSheet();
//Ориентация и размер страницы
// $active_sheet->getPageSetup()
// ->setOrientation(PHPExcel_Worksheet_PageSetup::ORIENTATION_PORTRAIT);
$active_sheet->getPageSetup()
->setOrientation(PHPExcel_Worksheet_PageSetup::ORIENTATION_LANDSCAPE);
$active_sheet->getPageSetup()
->setPaperSize(PHPExcel_Worksheet_PageSetup::PAPERSIZE_A4);
//Имя страницы
$active_sheet->setTitle(«Данные из docs»);
//Ширина стобцов
$active_sheet->getColumnDimension(‘A’)->setWidth(8);
$active_sheet->getColumnDimension(‘B’)->setWidth(10);
$active_sheet->getColumnDimension(‘C’)->setWidth(90);
//Объединение ячеек
$active_sheet->mergeCells(‘A1:C1’);
//Высота строки
$active_sheet->getRowDimension(‘1’)->setRowHeight(30);
//Вставить данные(примеры)
//Нумерация строк начинается с 1, координаты A1 — 0,1
$active_sheet->setCellValueByColumnAndRow(0, 1, ‘Сегодня ‘.date(‘d-m-Y’));
$active_sheet->setCellValue(‘A3’, ‘id’);
$active_sheet->setCellValue(‘B3’, ‘name’);
$active_sheet->setCellValue(‘C3’, ‘info’);
//Вставка данных из выборки
$start = 4;
$i = 0;
foreach($l as $row_l) <
$next = $start + $i;
$active_sheet->setCellValueByColumnAndRow(0, $next, $row_l[‘id’]);
$active_sheet->setCellValueByColumnAndRow(1, $next, $row_l[‘name’]);
$active_sheet->setCellValueByColumnAndRow(2, $next, $row_l[‘info’]);
//Отправляем заголовки с типом контекста и именем файла
header(«Content-Type:application/vnd.ms-excel»);
header(«Content-Disposition:attachment;filename=’simple.xlsx’»);
//Сохраняем файл с помощью PHPExcel_IOFactory и указываем тип Excel
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, ‘Excel2007’);
//Отправляем файл
$objWriter->save(‘php://output’);
>;
if($_GET[‘do’]==2) <
//————————————
//2 Часть: чтение файла
//Файл лежит в директории веб-сервера!
$objPHPExcel = PHPExcel_IOFactory::load(«simple.xlsx»);
foreach ($objPHPExcel->getWorksheetIterator() as $worksheet)
<
//Имя таблицы
$Title = $worksheet->getTitle();
//Последняя используемая строка
$lastRow = $worksheet->getHighestRow();
//Последний используемый столбец
$lastColumn = $worksheet->getHighestColumn();
//Последний используемый индекс столбца
$lastColumnIndex = PHPExcel_Cell::columnIndexFromString($lastColumn);
На этом — все, видео выложу на своем канале в YouTube
MIME (Multipurpose Internet Mail Extensions) is a media type used to identify a type of data on the Internet or by applications. Its name contains the word «Internet» but it is not only limited to the Internet.IANA is in charge of standardizing and disseminating these MIME classifications.
There are numerous popular extensions available among them. One of them is the Excel MIME type.
Every mime type is divided into two parts, which are separated by a slash (/).
1 Type is a logical grouping of many MIME types that are similar to one another. All Excel files have an application as a type.
2 SubType is specific to a single file type within the «type«.They are unique within the «type».Some of the subtypes for excel files are: vnd.ms-excel,vnd.openxmlformats-officedocument.spreadsheetml.sheet,vnd.openxmlformats-officedocument.spreadsheetml.template,vnd.ms-excel.sheet.macroEnabled.12 etc.
There are various MIME types for Excel for various Excel-related files and their extensions such as. xls,.xlsx,.xlt,.xla, and so on.
Let’s look at Excel file MIME Type and extension used by them in table format.
Extension | MIME Type (Type / SubType) | Kind of Document |
.xls | application/vnd.ms-excel | Microsoft Excel |
.xlsx | application/vnd.openxmlformats-officedocument.spreadsheetml.sheet | Microsoft Excel (OpenXML) |
.xltx | application/vnd.openxmlformats-officedocument.spreadsheetml.template | Office Excel 2007 template |
.xlsm | application/vnd.ms-excel.sheet.macroEnabled.12 | Office Excel 2007 macro-enabled workbook |
.xltm | application/vnd.ms-excel.template.macroEnabled.12 | Office Excel 2007 macro-enabled workbook template |
.xlam | application/vnd.ms-excel.addin.macroEnabled.12 | Office Excel 2007 macro-enabled add-in |
.xlsb | application/vnd.ms-excel.sheet.binary.macroEnabled.12 | Office Excel 2007 non xml binary workbook |
Let’s explain them in brief.
1 .xls
.xls is one of the older file extension of Microsoft Excel Spreadsheet.It is created by Excel 97 or Excel 2003. They by default generate .xls format.
MIME Type Supported by .xls file is application/vnd.ms-excel where the application of MIME type and vnd.ms-excel is subtypes and vnd here means vendor-specific which in this case vendor is Microsoft.
If you have an.xls file and want to open it in Excel before prior 2007, you can do so easily because Excel before 2007 recognizes application/vnd.ms-excel and does not require to afford to open it.
Despite the fact that the.xls file format is older, it can be opened in all versions of Excel due to backward compatibility in newer versions.
2 .xlsx
xlsx is the new file extension of the Microsoft Excel Spreadsheet. It is created by Excel 2007 and later versions.
If you create an excel file in Excel 2007 or later, it will be saved with the.xlsx extension by default; however, you can also save the same file in.xls format.xlsx is more secure and better for data storage(ie. smaller file size) than xls.
MIME type for .xlsx file is application/vnd.openxmlformats-officedocument.spreadsheetml.sheet where MIME type is application and subtype is vnd.openxmlformats-officedocument.spreadsheetml.sheet
It is a file format based on Office OPEN XML developed by Microsoft for representing spreadsheets. Because xlsx is an open standard, other software application vendors, such as Google (Google Sheets), can use it to interoperate with their spreadsheet applications.
📑 The last «x» in the xlsx file extension indicates that the file is based on the XML Standard.
You can open Xls file in excel 2007 and later and convert them to xlsx and save it.
3 .xltx
Microsoft Excel Template files with the. xltx extensions are based on the Office OpenXML file format specifications. It is used to generate a standard template file that can be used to generate XLSX files with the same settings as the XLTX file.
MIME type for .xlsx file is application/vnd.openxmlformats-officedocument.spreadsheetml.template where MIME type is application and subtype is vnd.openxmlformats-officedocument.spreadsheetml.sheet
It is XML based file format developed by Microsoft for representing templates. An XLTX is identical to an XLSX in every way except that Excel creates a new instance of an XLSX if the file opened is an XLTX.
📓 xltx is the replacement for the old .xlt format.
4 .xlsm
An XLSM file is a macro-enabled spreadsheet created by Microsoft Excel that can also be opened with Google Sheets.XLSM files are based on the Office Open XML format, where the last «m» of an xlsm file extension indicates that the file contains macros.Macros can be stored within an xlsm file, allowing users to automate repetitive tasks.
MIME type for .xlsx file is application/vnd.ms-excel.sheet.macroEnabled.12 where MIME type is application and subtype is vnd.ms-excel.sheet.macroEnabled.12
5 .xlam
An XLAM file extension indicates an Excel Macro-Enabled Add-In file, which is used to provide additional functionality for spreadsheets.
It has the following MIME types:application/vnd.ms-excel.template.macroEnabled.12 where MIME type is application and subtype is vnd.ms-excel.template.macroEnabled.12
Because of the file’s purpose, there is built-in macro support in .xlam files.
6 .xlsb
An XLSB file is an Excel Binary Workbook file that stores data in binary rather than XML format. Because they are stored in binary, the read and write times in xlsb files are faster, and they have been found to be useful for very large and complex spreadsheets for this reason. They are also smaller in size than the XLSM format.
MIME type for .xlsx file is application/vnd.ms-excel.sheet.binary.macroEnabled.12 where MIME type is application and subtype is vnd.ms-excel.sheet.binary.macroEnabled.12
FAQ:
How to generate .xls file in C# ?
For generating a .xls file in C# code you have to mention application/vnd.ms-excel MIME types in response header as shown below.
Response.ContentType = "application/vnd.ms-excel";
Response.AppendHeader("content-disposition", "attachment; filename=sample.xls");
How to generate .xlsx file in C#?
For generating a .xls file in C# code you have to mention application/vnd.openxmlformats-officedocument.spreadsheetml.sheet MIME types in response header as shown below.
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
Response.AppendHeader("content-disposition", "attachment; filename=sample.xls");
If you are generating Excel file target to xlsx file then you have to use above.
What is the replacement of the xla format?
Ans: xlam is the replacement for the old .xla format.
Установка типа MIME для документа Excel
Есть ли какой-то один тип, который подойдет для всех версий? Если нет, нужно ли нам устанавливать response.setContentType() для каждого из этих типов пантомимы по отдельности?
Кроме того, мы используем потоковую передачу файлов в нашем приложении для отображения документа (а не только Excel — любого типа документа). При этом, как мы можем сохранить имя файла, если пользователь решает сохранить файл — в настоящее время имя сервлета, отображающего файл, отображается как имя по умолчанию.
7 ответов
Я считаю, что стандарт Тип MIME для файлов Excel: application/vnd.ms-excel .
Что касается названия документа, вы должны указать в ответе следующий заголовок:
Просыпаясь здесь я вижу старую ветку, но я почувствовал побуждение добавить «новый» формат .xlsx.
Согласно http://filext.com/file-extension/XLSX расширением для .xlsx является application/vnd.openxmlformats-officedocument.spreadsheetml.sheet . Было бы неплохо включить его при проверке типов mime!
Вы всегда должны использовать тип MIME ниже, если хотите обслуживать файл Excel в формате xlsx .
Для .xls используйте следующий тип содержимого
Для версии Excel 2007 и выше формата файлов .xlsx
Я устанавливал тип MIME из кода .NET, как показано ниже —
Мое приложение генерирует Excel с использованием OpenXML SDK. Этот тип MIME работал —
Я использую EPPlus для создания файла Excel .xlsx (на основе формата OpenXML). Для отправки этого файла Excel в виде вложения в электронное письмо я использую следующий тип MIME, он отлично работает с файлом, созданным EPPlus, и правильно открывается в предварительном просмотре почтового клиента ms-outlook.
Для тех, кто все еще сталкивается с этим после использования всех возможных типов MIME, перечисленных в вопросе:
Я обнаружил, что iMac также имеют тенденцию генерировать MIME-тип «text / xls» для файлов XLS Excel, надеюсь, это поможет.
Настройка типа mime для документа excel
MS Excel имеет следующие наблюдаемые типы MIME:
- application/vnd.ms-excel (должностное лицо)
- application/msexcel
- application/x-msexcel
- application/x-ms-excel
- application/x-excel
- application/x-dos_ms_excel
- application/xls
- application/x-xls
- application/vnd.openxmlformats-officedocument.spreadsheetml.sheet (XLSX-файл)
есть один тип, который будет работать для всех версий? Если нет, нам нужно установить response.setContentType() С каждым из этих типов MIME индивидуально?
кроме того, мы используем потоковое файл в нашем приложении для отображения документа (не только excel — любой тип документа). При этом, как мы можем сохранить имя файла, если пользователь решит сохранить файл — в настоящее время, имя сервлета, который обрабатывает файл отображается как имя, заданное по умолчанию.
5 ответов
Я верю стандарт тип MIME для Excel файлы application/vnd.ms-excel .
Что касается названия документа, вы должны установить следующий заголовок в ответе:
Пробуждение старой нити здесь я вижу, но я почувствовал желание добавить «новый» .формат xlsx.
согласно http://filext.com/file-extension/XLSX Расширение для .XLSX-это application/vnd.openxmlformats-officedocument.spreadsheetml.sheet . Было бы неплохо включить его при проверке типов mime!
вы всегда должны использовать ниже типа MIME, если вы хотите обслуживать файл excel в xlsx формат
я устанавливал тип MIME из кода .NET, как показано ниже —
мое приложение генерирует excel с помощью OpenXML SDK. Этот тип мима работал —
для тех, кто все еще спотыкается с этим после использования всех возможных типов MIME, перечисленных в вопросе:
Я обнаружил, что iMacs, как правило, также бросают тип MIME «text/xls» для файлов XLS Excel, надеюсь, это поможет.
Проблема с header. Ошибка при открытии Excel созданного с помощью PHPExcel
Здравствуйте!
Попробуйте, закоментировать отправку заголовков — то есть все вызовы функйии header, а также строку $objWriter->save(‘php://output’);. То есть у Вас должно получиться так:
И (после обновления страницы) посмотрите нет ли каких либо ошибок на экране.
Если ошибок нет то верните все изменения назад и попробуйте заменить строку:
на
#3 headerhelp2015
Meits (06 Апрель 2013 — 19:17) писал:
Попробовал. В уроке по созданию прайса листа добавил строку date_default_timezone_set(‘Европа/Город’); и только после этого сохранилось без ошибок.
А вот моя собственная статистика выдает ошибки на отсутствующие файлы CSS и почему то после того, как я убрал ошибки со страницы, то сохранились все input html как на самой странице, хотя я записывал из input число в Excel.
Если убрать Header и вставить SAVE, то сохраняется на сервер без ошибок и формируется нормальная статистика в Excel’e, правда приходится формировать ссылку для скачивания, что не очень удобно для пользователя.
Большое вам спасибо за ответ. Теперь у меня появилась надежда, что я все таки смогу реализовать сохранение в Excel в своем проекте с возможностью выбора «куда сохранять» пользователю />