Remkomplekty.ru

IT Новости из мира ПК
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Officedocument wordprocessingml document

Файлы MS Office «изнутри». Open Packaging Conventions. Базовые принципы. Компоненты и связи

Сегодняшним постом я хочу начать еще одну серию. В ней я планирую немного поговорить о том, что представляют собой файлы MS Office “изнутри”, а также об инструментах (утилитах и библиотеках) для их создания, изучения, изменения, …

Прежде чем перейти к содержательной части некоторый предваряющий disclaimer (традиционно ):

Я в основном буду касаться современных офисных форматов, тех что появились в редакции Office 2007. Их еще называют XML-based форматами, в противовес старым бинарным (и это закрепилось в расширении файлов: docx, pptx, xlsx, … – в противовес doc, ppt, xls, …), ну или просто Open XML

Некоторая часть статей (по крайней мере в самом начале) будет основана на материалах Open XML Developer Workshop (контент и видео), который вел Doug Mahugh. Если вам не хочется ждать моих статей рекомендую обратиться к этим материалам

Еще одним хорошим подспорьем для изучающих Open XML будет книга Воутер Ван Вугт. OpenXML. Кратко и доступно. Ранее она в электронном виде была доступна в блоге евангелиста Microsoft Владимира Габриеля, но теперь – увы. Так что, если вам интересно и не хочется тратить время на поиск, можете взять здесь.

Вроде бы все. Можно приступать.

Что такое Open Packaging Conventions?

В двух словах, это формат контейнеров, поддерживающих хранение как структурированных (XML), так и неструктурированных компонентов (картинки, видео, бинарные компоненты, …) в одном файле.

Краткая но довольно информативная статья об OPC есть на wikipedia.

Что можно сказать в общем об этом стандарте/формате? Я бы выделил такие моменты:

● Формальное описание является частью ECMA-376. Office Open XML File Formats, более конкретно – второй частью Part 2 — Open Packaging Conventions.

● Сам стандарт описывает только структуру хранения и самые общие метаданные (типа автора, даты,…) поэтому потенциально в таком контейнере можно хранить практически что угодно.

Например, вот несколько форматов, основанных на OPC от самого Microsoft:

o .docx, pptx, xlsx, .vsdx – форматы Word, Power Point, Excel и Visio

o .xps (.oxps) – формат “электронной бумаги” или формат c фиксированной разметкой, предназначенный для передачи документов без искажения форматирования (в чем-то аналог PDF).

o .vsix – формат расширений Visual Studio, начиная с версии 2010

o .cspkg – формат пакетов для Windows Azure Cloud Services

o .appx – формат пакетов приложений Windows Store (для Windows 8)

Что представляют собой контейнеры в OPC?

Тут нужно сделать одну существенную оговорку: сам стандарт разбивает описание контейнеров на 2 части: абстрактную модель (которая описывает из каких элементов состоят контейнеры, но ни слова не говорит о том как это должно храниться физически) и физический формат пакета, т.е. конкретную реализацию.

Т.е. в чистой теории, контейнер в OPC может храниться единый файл, а может, например, как набор отдельных ресурсов на Web-сервере. Но (!) на текущий момент определена только 1 реализация – в виде единого файла ZIP-архива.

Структура контейнеров в OPC

Вообще говоря, концептуальная схема пакетов в Open Packaging Conventions очень проста, она включает в себя всего два элемента:

компоненты (parts), которые собственно и содержат хранящийся контент (любой: xml, image, video, …)

отношения (relationships), которые определяют

o предназначение (смысл/семантику) каждой части

o отношения между частями, а также между частями и пакетом целиком

Компоненты

Как уже было сказано выше компонент в OPC это и есть основная единица хранения контента. Каждый компонент характеризуется 2-я составляющими: именем и типом содержимого.

Имя компонента состоит из набора сегментов, начинающихся с прямого слэша (“/”), вот несколько примеров:

В спецификации приведены более формальные правила построения имен, из которых я укажу только основные (на мой взгляд):

● все имена должны начинаться с прямого слэша (“/”) и не должны им заканчиваться

● имя недолжно содержать пустых сегментов (т.е. /images//image1.jpg – неправильное имя)

«, «:«, «@»

● ни одно имя компонента не должно строиться как имя уже существующего компонента + новый сегмент. Т.е. если есть компонент с именем /abc/abc, то компонент с именем /abc/abc/a существовать не может, зато вполне может существовать компонент с именем /abc/abcde

● имена могут записываться Unicode-символами или использовать кодирование в виде /a/%D1%86.xml

Тип содержимого компонента задается в соответствии с RFC 2616 (раздел Media Types) т.е. в виде / :

Связи

Любой компонент в пакете (а также сам пакет) может ссылаться на другие компоненты или некоторые ресурсы за пределами пакета. Для представления этих ссылок введен специальный механизм связей. По большому счету, связи позволяют решить 2 задачи:

● получить список связанных с компонентом ресурсов, без необходимости анализировать его содержимое (которое может быть очень большим, иметь разную структуру, быть зашифрованным или вообще не поддерживать хранение ссылок)

● поменять набор связей компонента, не меняя его содержимого (которое может быть, например, зашифровано или защищено цифровой подписью)

Создавая свой пакет вы, конечно же, можете не использовать связи. Вместо этого везде в коде использовать фиксированные имена компонент, а где нужны списки связанных ресурсов, ссылаться на них прямо из самих компонент. Однако, рекомендации “лучших собаководов” все же советуют использовать связи везде, где это возможно.

Информация о связях для каждого компонента (а также самого пакета), хранится в специальных компонентах связей (relationships parts) тип содержимого которых application/vnd.openxmlformats-package.relationships+xml

Имена компонентов связи строятся из имени исходных компонент, к которым:

● добавляется предпоследний сегмент с именем _rels

● дописывается “расширение” .rels

Связи самого пакета хранятся в специальном компоненте с именем /_rels/.rels

Например, если в пакете у нас есть компонент с именем /document/mainPart.xml и два связанных компонента с картинками (пусть их мена будут /images/image1.png и /images/image2.jpeg), то пакет для них будет иметь следующую структуру:

Содержимое компонента связи представляет собой XML следующего формата:

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

Id

Идентификатор связи. На него ссылаются из содержимого компонент, когда необходимо использовать конкретную связь.

Type

Тип связи. По сути дела тип указывает семантику связи. Например, две разных связи могут указывать на 2 компонента типа image/jpeg, но одно изображение будет картинкой в тексте документа, а второе – миниатюрой (thumbnail) всей страницы целиком.
В качестве типа может использоваться любой валидный URI

TargetMode

(Необязательный) Принимает одно из возможных значений:

· Internal (значение по умолчанию) – указывает, что связь ссылается на компонент пакета

· External – связь указывает на ресурс за пределами пакета

Target

Адрес ресурса или компонента на который ссылается связь

Важный момент: для обращения к компонентам и внешним ресурсам можно использовать как абсолютные адреса (для компонент это будет их полное имя), так и относительные. В последнем случае полное имя компоненты рассматривается как путь в файловой системе, каждый сегмент, кроме последнего – имя “папки”, а последний – имя “файла”. Вот несколько примеров такой адресации:

Читать еще:  Общие ресурсы office конвертеры и фильтры

Имя исходного компонента

Относительный адрес

Результирующий адрес

Вот, по большому счету и все, что касается модели пакета в OPC. Осталось сказать несколько слов о физической реализации пакетов

Пакеты на основе ZIP-архивов

Как уже было сказано выше, в спецификации OPC определена только одна реализация пакетов – на основе ZIP архивов. Она достаточно проста, поэтому я приведу её обзорно:

● все компоненты, как обычные, так и компоненты связей, хранятся в виде одного или нескольких файлов внутри архива (при этом логически они все равно адресуются как единое целое)

● для хранения типа контента каждого компонента в архиве создается специальный файл с именем [Content_Types].xml

Внутри файла [Content_Types].xml хранится XML следующего вида:

Собственно, общая схема, я думаю, понятна и так: для описания типов используется два подхода:

● указание типа по расширению (тэг )

● явное указание типа для конкретного компонента (тэг )

Как заглянуть внутрь OPC-пакета?

Итак, надеюсь вас уже заинтриговало мое объяснение базовых принципов и вы уже жаждите приступить к практическому изучению (т.е. взять и разобрать по косточкам какой-нибудь офисный файл) .

Вот несколько способов как это можно сделать:

Прямой (“рукопашный”) способ. Т.к. физическая реализация OPC есть ни что иное, как обычный ZIP-архив, то самый простой способ его изучить – распаковать и работать как с обычной папкой (ну или воспользоваться любимым архиватором).

o Плюс подхода – будете глубже понимать устройство.

▪ Сложно отслеживать связи между компонентами (а именно они образуют структуру, а вовсе не “папки” архива)

▪ Довольно муторно редактировать, если захочется экспериментов (нужно добавлять файлы для компонентов, править файлы связей да еще и не забывать про указание типа контента, если он не стандартный)

Open XML Package Editor Power Tool for Visual Studio 2010. Расширение для Visual Studio. Умеет открывать файлы в формате OPC, показывать и редактировать их логическую структуру (добавлять/удалять/редактировать компоненты и связи). Для редактирования содержимого компонент используется редакторы самой VS, что очень удобно для экспериментов (XML редактор в VS явно не самый плохой, особенно если в наличии есть хорошие XSD-описания).

▪ Так и не нашел способа создать пакет с 0 (но это редко нужно, да и обходится созданием пакета вручную).

▪ Требует Visual Studio.

▪ Работает только в 2010 версии VS. Увы, для более новых версий студии пакет так и не обновился, хотя почти наверняка он заработает без доработок в любой последующей. А доработать установщик пакета руками не получается, т.к. это не обычный vsix

Standalone приложение от Воутера Ван Вугта Open XML Package Explorer. По возможностям оно близко к предыдущему расширению для VS, но не требует ничего для установки, кроме .Net 3.0. У него даже есть встроенный редактор XML, правда уступающий редактору от VS. К сожалению, приложение давно не обновлялось имеет ряд неприятных ошибок… но пользоваться можно.

Пара слов в заключение

Как видите, стандарт OPC в своей основе довольно прост и функционален. Однако остались еще ряд нераскрытых тем. В частности мы не рассмотрели ряд возможностей, заложенных в формат OPC:

● базовые метаданные пакета (core properties)

● иконки пакета (thumbnails)

● цифровые подписи (digital signatures)

Ну и, конечно, мы еще ни слова не проговорили об API для работы с OPC пакетами.

What is MIME application/vnd.openxmlformats-officedocument.wordprocessingml.document?

application/vnd.openxmlformats-officedocument.wordprocessingml.document

Microsoft Office — OOXML — Word Document

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.openxmlformats-officedocument.wordprocessingml.document”), 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.openxmlformats-officedocument.wordprocessingml.document 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.openxmlformats-officedocument.wordprocessingml.document?

Categorizing MIME types like application/vnd.openxmlformats-officedocument.wordprocessingml.document 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.openxmlformats-officedocument.wordprocessingml.document

[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.openxmlformats-officedocument.wordprocessingml.document 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.openxmlformats-officedocument.wordprocessingml.document?

Sometimes you’ll find that your web browser or e-mail client is unable to properly display your application/vnd.openxmlformats-officedocument.wordprocessingml.document content. This could be due to one of two reasons:

1. You are missing the proper Application “player software” to display the application/vnd.openxmlformats-officedocument.wordprocessingml.document content.

2. Your Windows Registry contains an incorrect file extension (eg. XLS, PDF) association with the application/vnd.openxmlformats-officedocument.wordprocessingml.document MIME type.

How To Fix application/vnd.openxmlformats-officedocument.wordprocessingml.document Issues

Do I have the application/vnd.openxmlformats-officedocument.wordprocessingml.document “player application” installed?

The first step in troubleshooting issues with opening application/vnd.openxmlformats-officedocument.wordprocessingml.document 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.openxmlformats-officedocument.wordprocessingml.document, 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.openxmlformats-officedocument.wordprocessingml.document. Look at the naming of the subtype for clues about a related program (eg. Word, Excel) or software developer name (eg. Microsoft).

Читать еще:  Access передача параметров в запрос

Furthermore, if you’ve been sent MIME type application/vnd.openxmlformats-officedocument.wordprocessingml.document as an e-mail attachment, look for the file extension of the attached file. This file extension (eg. DOCX, 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.openxmlformats-officedocument.wordprocessingml.document file associations?

The second step in troubleshooting application/vnd.openxmlformats-officedocument.wordprocessingml.document 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.openxmlformats-officedocument.wordprocessingml.document. 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.

Создание пустых документов Open XML (Office 2007)

Создание документов Open XML с использованием шаблона поможет упростить вашу работу и учесть изменения вида и предназначения документа, без изменения кода. Но в некоторых случаях вам понадобится создание пустого документа Open XML, без использования каких-либо шаблонов.

Следующие два поста помогут вам в создании пустых документов Open XML:

Пример программы CreatDOCX
Этот пост покажет в виде примера очень простую программу по созданию документа Office Open XML. Исходный код программы можно получить перейдя по следующей ссылке .

Синтаксис по использованию программы CreatDOCX показан справа. Это программа с командной строкой, использующей следующие два аргумента: имя создаваемого файла и текст, который нужно занести в файл. Программа создает выходной файл, используя .Net API. Полученный документ может быть открыт с помощью Microsoft Office, но для создания документа Office не требуется.

Давайте взглянем, что же кроется под “капюшоном”. Первое на что стоит обратить – namespace, использующийся для markup документа:

Это namespace для WordprocessingML, использующийся в главной части тела(“start part”) документа. Далее мы создаем XML документ с структурой документа WordprocessingML(документ, тело, отступ и т.д.) вложенный в этом:

Теперь, когда мы создали XML(“start part”) для документа, мы всего лишь нуждаемся в создании пакета(с API), добавив вступительную часть и задействовав совместимость.(Каждай чать должна иметь совместимость):

Это все, что нам было нужно, данный код произведет документ DOCX, который можно будет просмотреть в Word 2007 или в др. программе для просмотра файлов Open XML. Заметьте, что для создания DOCX не обязательно нужно иметь Office 2007.

Пример программы CreatXlsx.
Данный пример является простым консольным приложением, использующим в качестве первого аргумента имя создаваемого файла, сопровождаемое рядом величин, которые будут записаны в ячейки. Величины, которые будут записаны в ячейки должны быть одного из следующих типов: integer или string.

Указанный документ создан и величины записаны в данный документ. Получившаяся крупноформатная таблица является документов Open XML, может быть открыт с помощью Excel 2007, как показано ниже.

Краткий обзор кода
В CreatXlsx всего пять методов, которые обеспечивают основные функциональные возможности:
— Main – обрабатывает аргументы командной строки, вызывающие CreatEmptyXlsx для имени файла и WriteCell для каждой величины, которая будет записана.
— CreatEmptyXlsx – создает пустую крупноформатную таблицу Open XML.
— WriteCell – вызывает соответствующий метод XLInset*, основанный на определении типа величины, являющейся integer или string.
— XLInsetNumberIntoCell – вставляет число.
— XLInsetStringIntoCell – вставляет строку.

Метод CreatEmptyXlsx
Сначала мы устанавливаем константы для namespace и типов, которые понадобятся:

Затем мы создаем минимальные части, необходимые нам для определения структуры документа SpreadsheetML. В памяти они создаются как объекты XmlDocument:

Теперь создадим сам пакет. Мы также создадим временную пустую часть, которая удалит все по окончанию. Вот код:

Теперь мы напишем части для пакета. Для начала мы сохраним “start part”:

Затем мы делаем тоже самое и для WorkSheet, StyleSheet и таблицы SharidStrings. Далее мы создаем совместимость для объединения всего и удаляем временную часть, созданную для установки типа по умолчанию и закрытия документа:

В данных постах вам предоставляются образцы и информация о том, как они работают. Образцы написаны на C#, но я постарался тщательно описать все детали, чтобы вы смогли создать тоже самое на любой другой платформе.

Скоро я начну собирать примеры о PresentationML, а так же мы будем публиковать другие примеры кода, но в настоящее время я опубликовал только два поста, если кто-либо захочет ими воспользоваться для создания Open XML.

Михаил Романов

Just another WordPress.com site

Open Packaging Conventions #2. Собираем MS Word документ руками

В предыдущей статье я постарался “просто и доступно” рассказать о том, что такое Open Package Convention (или иначе говоря, как устроены изнутри документы MS Office 2007+).

Как водится статья писалась долго, вышла большой, съела много сил… в общем, я так и не показал реальный пример документа в формате OPC. В результате получилось несколько оторвано от практики и не очень наглядно, на что мне сразу указали коллеги.

Что ж, исправляюсь… Сегодня мы в качестве практики создадим пару документов для MS Word, не используя никаких специальных инструментов (за исключением XML-редактора и Zip-архиватора).

Сразу же оговорюсь, что мы не будем сильно вдаваться в особенности разметки документов Word (хотя, конечно же, минимальные представления о ней все же понадобятся, но всё необходимое для понимания я постараюсь рассказать по мере развития статьи)! Наша задача: увидеть как строятся реальные пакеты на основе OPC – что такое компоненты, связи и как они хранятся.

Документ #1 – простой текст

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

В реальности структура самого простого рабочего документа (такого, который сможет открыть и показать Word) включает всего 3 элемента:

  • главный компонент, который содержит разметку всего документа
  • 1 компонент связи (который содержит связь между пакетом и главным компонентом
  • описание типов (файл [Content_Types].xml)

Давайте теперь создадим пустую папку, которая будет представлять содержимое всего пакета, и будем последовательно её заполнять.

Читать еще:  Обновление ms office

Главный компонент документа. Создадим в нашей папке файл main.xml (в стандарте OpenXML нет жесткого требования к именованию компонент, поэтому мы будем использовать свои имена, не такие как в Word).

Этот файл будет представлять содержимое главного компонента (Main Document ы терминологии стандарта). В лучших традициях книг по программированию зададим ему следующее содержимое:

Компонент связи. Теперь мы должны указать что именно компонент /main.xml содержит разметку документа. В OpenXML для этого используется механизм связей. В нашем документе будет только одна связь – от пакета к главному компоненту (главный компонент пока связей не имеет)

Как я писал в предыдущей статье у компонента, который хранит связи всего пакета имя будет /_rels/.rels. Для эмуляции такого имени (чтобы оно потом правильно создалось в конечном ZIP-архиве) мы создадим подпапку _rels, а в ней файл с именем .rels. Содержать этот файл будет всего одну связь:

Описание типов. По большому счету, в нашем примере используется всего 2 типа контента: в компоненте с основным содержимым документа и в компоненте связи. Однако, хотя мы дали главному компоненту “расширение” .xml, его тип содержимого по стандарту OpenXML должен быть не просто application/xml, поэтому мы опишем 3 типа контента: для всех компонентов связей, для “некого произвольного xml” и явно для компонента /main.xml.

Итак, создадим в нашей папке файл [Content_Types].xml следующего содержания:

Итак, содержимое нашей папки составляют 3 файла:

Осталось упаковать их в отдельный архив, переименовать архив в, например, result.docx, и открыть полученный файл в Word. Наш результат будет:

Давайте теперь усложним пример, добавив в документ изображение.

Документ #2 – тот же текст и картинка

Какие изменения нам потребуется внести в предыдущий пример? Вот они:

  • добавить компонент с изображением и дополнить описание типов содержимого
  • создать связь от главного компонента к компоненту с изображением (а это значит, что добавить еще один компонент связей)
  • дополнить разметку самого документа (указать место и параметры вставляемой картинки)

Структура нашего пакета приобретет во такой вид:

В принципе, ничего сверхъестественного, поэтому приступим.

Компонент картинки и тип содержимого для него. Для добавления компонента просто скопируем готовый файл с картинкой в папку, к остальным компонентам (пусть это будет файл cat.jpeg).

После этого обновим содержимое файла типов содержимого ([Content_Types].xml):

Связь от /main.xml к /cat.jpeg. Так как мы создаем связь от компонента /main.xml, имя компонента связей для него будет /_rels/main.xml.rels, а значит создадим в папке _rels еще один файл с именем main.xml.rels и содержащем описание 1 связи:

Осталось самое сложное – поправить разметку самого документа.

Разметка главного компонента. Вообще, надо признать, что разметка документов OpenXML местами весьма далека от “интуитивно понятной” и это справедливо, в том числе для описания изображений (в OpenXML используется единый подъязык для описания любых изображений – DrawingML, у которого есть еще несколько внутренних диалектов: для описания картинок, графиков, …).

Единственный предварительный комментарий нужно дать по поводу размерности единиц… В OpenXML используется специальная придуманная единица EMU (English Metric Unit) – единица, которая позволяет относительно удобно переводить размеры из метрической (метры/сантиметры) и американской (дюймы) систем единиц. Соотношения следующие:

Установка типа 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 . Есть две проблемы с этим.

Ссылка на основную публикацию
ВсеИнструменты
Adblock
detector
×
×