Как творить.файлы odt с C#.NET?
Примечание: я нашел это "создание документа Word в C#.NET", но это не то, что я хочу.
вы знаете, как создать .файлы odt создать файл из C# .NET?
Есть ли компонент .NET или оболочка для OpenOffice.org библиотека для этого?
6 ответов
посмотрите на AODL (см. http://odftoolkit.org/projects/odftoolkit/pages/AODL).
- полностью управляемый .NET 1.1 (поэтому он работает на MS.Net и моно)
- поддержка текстовых и электронных таблиц
- создание, чтение, редактирование, сохранение документов
- ...
редактировать kame: Новая ссылка AODL-Wiki
вы можете проверить сайт стандартов OASIS для получения информации о стандарте ODT. Из того, что я видел, они используют стандарт на основе XML и имеют xsd, доступный для стандарта документа, поэтому вы можете использовать его в сочетании с вашим собственным кодом для создания файла документа в правильном формате.
Я нашел это вчера, когда искал способ создания Spreadsheeets, похоже, что создание файлов writer довольно похоже: http://www.suite101.com/content/creating-an-openoffice-calc-document-with-c-a124112, Не забудьте сначала установить Open Office SDK из Oracle.
к сожалению, я еще не нашел способ создать файл, не открывая его.
код будет выглядеть так:
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();
документы OpenOffice (odt) являются ZIP-файлами. Вы можете распаковать существующий, изменить содержимое.xml-файл по коду, а затем использовать класс ZipFile из системы.ИО.Сжатие, например, чтобы снова получить zip-файл.