Разбор и создание файлов Microsoft Office 2007 (.docx, .xlsx, .pptx) - PullRequest
13 голосов
/ 06 октября 2008

У меня есть веб-проект, в котором я должен импортировать текст и изображения из предоставленного пользователем документа, и одним из возможных форматов является Microsoft Office 2007. Также необходимо создавать документы в этом формате.

На сервере работает CentOS 5.2 и установлен PHP / Perl / Python. Я могу выполнять локальные двоичные файлы и сценарии оболочки, если нужно. Мы используем Apache 2.2, но переключимся на Nginx, как только он выйдет в эфир.

Какие у меня варианты? Кто-нибудь имел опыт работы с этим?

Ответы [ 4 ]

17 голосов
/ 06 октября 2008

Форматы файлов Office 2007 открыты и хорошо документированы . Грубо говоря, все новые форматы файлов, оканчивающиеся на «х», представляют собой сжатые zip XML-документы. Например:

Чтобы открыть файл Word 2007 XML, создайте временная папка для хранения файл и его части.

Сохранить документ Word 2007, содержащий текст, рисунки и другие элементы, как файл .docx.

Добавьте расширение .zip в конец имя файла.

Дважды щелкните файл. Откроется в ZIP-приложение. Вы можете увидеть части, которые составляют файл.

Извлечение частей в папку, Вы создали ранее.

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

Если вам нужно прочитать старые форматы, OpenOffice имеет API и может читать и записывать Office 2003 и более старые документы с большим или меньшим успехом.

6 голосов
/ 30 декабря 2009

Модуль Python Docx может генерировать отформатированные файлы Microsoft Office DOCX из чистого Python. Из коробки он создает заголовки, абзацы, таблицы и маркеры, но модуль makeelement () может быть расширен для создания произвольных элементов, таких как изображения.

from docx import *
document = newdocument()

# This location is where most document content lives 
docbody = document.xpath('/w:document/w:body',namespaces=wordnamespaces)[0]

# Append two headings
docbody.append(heading('Heading',1)  )   
docbody.append(heading('Subheading',2))
docbody.append(paragraph('Some text')
3 голосов
/ 06 октября 2008

Я успешно использовал OpenXML Format SDK в проекте для изменения электронной таблицы Excel с помощью кода. Для этого потребуется .NET, и я не уверен, насколько хорошо он будет работать под Mono.

2 голосов
/ 06 октября 2008

Вы, вероятно, можете проверить код для Sphider . Они документы и PDF, так что я уверен, что они могут прочитать их. Может также привести вас в правильном направлении для других форматов Office.

...