如何使用C#.NET创建.odt文件?
问题描述:
注意:我发现这个"Creating a Word Doc in C#.NET",但那不是我想要的。如何使用C#.NET创建.odt文件?
你知道如何创建一个的.odt创建从C#.NET文件?
是否有OpenOffice.org库的.NET组件或包装来执行此操作?
答
看看AODL(请参阅http://odftoolkit.org/projects/odftoolkit/pages/AODL)。
- 完全托管的.NET 1.1(所以它运行在MS.Net和Mono)文本和电子表格文件
- 创建,读取,编辑
- 支持,保存文档
- ...
编辑由梳篦: 新链接 AODL-Wiki
答
有关ODT标准的信息,可以查看OASIS Standards site。根据我所看到的,他们使用的是基于XML的标准,并且具有可用于文档标准的XSD,所以您可以将它与自己的代码结合使用以适当的格式构建文档文件。
答
我发现这对e昨天在寻找创建Spreadsheeets的方式时,它看起来像创建writer文件非常相似: http://www.suite101.com/content/creating-an-openoffice-calc-document-with-c-a124112,不要忘记先从Oracle安装Open Office SDK。
不幸的是,我还没有找到一种方法来创建一个文件,而无需打开它。
答
的代码应该是这样的:
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文件。您可以解压缩现有的一个,通过代码修改content.xml文件,然后使用System.IO.Compression中的ZipFile类来再次获取zip文件。
AODL for .NET的官方版本不再可用。但有一些叉子仍然可以使用。我发现的最佳分支(包括作者的附加修正)是[aodl-reloaded](https://code.google.com/p/aodl-reloaded/)和[aodl](https://bitbucket.org/ chrisc/AOD)。但我知道使用当前版本的OpenOffice/LibreOffice仍然存在一些问题。 – Alex 2015-01-21 08:09:43