2010-12-08 56 views
2

有沒有辦法讓我閱讀使用C#的開放式辦公文檔和電子表格的內容?OpenOffice和C#

請給我一些指導。

回答

1

Aspose軟件組件對Open Office文檔有一些支持。 See list and details here.您可以下載他們的試用版/評估版組件進行測試。

1

Open Office文檔格式很簡單,每個文檔都是簡單的Zip文件,包含XML文件。 Xml包含模式以及數據,並且讀取它們非常簡單。

如果你只是想提取出來的文本,那麼它更容易,否則你可以使用System.Xml.Linq來讀取XML文件來提取數據。

爲了測試,您可以將任何開放式辦公文檔重命名爲something.zip並提取並研究其內容。您可以使用ISharpZip庫在C#中解壓並使用Linq來學習xml。

2

加入引用cli_bessatypes.dllcli_cppuhelper.dllcli_oootypes .dllcli_uno.dllcli_ure.dllcli_uretypes.dll

代碼讀取xls文件:

XComponentContext oStrap = uno.util.Bootstrap.bootstrap(); 

XMultiServiceFactory oServMan = (XMultiServiceFactory)oStrap.getServiceManager(); 
XComponentLoader oLoader = (XComponentLoader)oServMan.createInstance("com.sun.star.frame.Desktop"); 

string fileName = "file:///" + filePath; 

PropertyValue[] propVals = new PropertyValue[1]; 
propVals[0] = new PropertyValue(); 
propVals[0].Name = "Hidden"; 
propVals[0].Value.setValue(typeof(Boolean), true); 
XComponent oXlsDocument = oLoader.loadComponentFromURL(fileName, "_default", 0, propVals); 

XSpreadsheets oXlsSpreadsheet = ((XSpreadsheetDocument)oXlsDocument).getSheets(); 
XIndexAccess oXlsSheetIA = (XIndexAccess)oXlsSpreadsheet; 
XSpreadsheet oXlsSheet = (XSpreadsheet)oXlsSheetIA.getByIndex(0).Value;