Как создать .odt файлы с C # .NET? - PullRequest
7 голосов
/ 22 октября 2008

Примечание: я нашел это "Создание документа Word в C # .NET" , но это не то, что я хочу.

Знаете ли вы, как создать .odt для создания файла из C # .NET?
Есть ли компонент .NET или оболочка для библиотеки OpenOffice.org, чтобы сделать это?

Ответы [ 6 ]

3 голосов
/ 05 января 2009

Посмотрите на AODL (см. http://odftoolkit.org/projects/odftoolkit/pages/AODL).

  • полностью управляемый .NET 1.1 (поэтому он работает в MS.Net и Mono)
  • поддержка текстовых и электронных документов
  • создавать, читать, редактировать, сохранять документы
  • ...

РЕДАКТИРОВАТЬ по Каме: Новая ссылка AODL-Wiki

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

Вас может заинтересовать OpenOffice, UNO CLI Language Binding .

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

На сайте стандартов OASIS можно найти информацию о стандарте ODT. Из того, что я видел, они используют стандарт на основе XML и имеют XSD, доступный для стандарта документов, так что вы можете использовать его вместе со своим собственным кодом для создания файла документа в правильном формате.

1 голос
/ 20 января 2011

Я нашел это вчера, когда искал способ создания электронных таблиц, похоже, создание файлов писателя очень похоже http://www.suite101.com/content/creating-an-openoffice-calc-document-with-c-a124112, не забудьте сначала установить Open Office SDK из Oracle.

К сожалению, я не нашел способа создать файл, не открывая его.

0 голосов
/ 06 февраля 2018

Документы OpenOffice (odt) являются файлами ZIP. Вы можете разархивировать существующий файл, изменить файл content.xml по коду и затем использовать класс ZipFile из System.IO.Compression, например, чтобы снова получить файл ZIP.

0 голосов
/ 02 апреля 2013

Код будет выглядеть так:

private XComponentContext oStrap = uno.util.Bootstrap.bootstrap();
XMultiServiceFactory oServMan = (XmultiServiceFactory) oStrap.getServiceManager();
XComponentLoader oDesk = (XComponentLoader) oServMan.createInstance("com.sun.star.frame.Desktop");
string url = @"private:factory/swriter";
PropertyValue[] propVals = new PropertyValue[0];
XComponent oDoc = oDesk.loadComponentFromURL(url, "_blank", 0, propVals);
string docText = "File Content\n\r";
((XTextDocument)oDoc).getText().setString(docText);
string fileName = @"C:\FolderName\FileName.odt";
fileName = "file:///" + fileName.Replace(@"\", "/");
((XStorable)oDoc).storeAsURL(fileName, propVals);
((Xcomponent)oDoc).dispose();
...