问题使用DSOFile.OleDocumentPropertiesClass获取办公室(Excel)文档的页数

我正在使用DSOFile.OleDocumentPropertiesClass获取Office文档的页数而不自动化。 这适用于docx和pptx文件,但对于xlsx文件始终返回0。

DSOFile.OleDocumentPropertiesClass oleDocument = new DSOFile.OleDocumentPropertiesClass(); oleDocument.Open(documentFilePath, true, DSOFile.dsoFileOpenOptions.dsoOptionOpenReadOnlyIfNoWriteAccess); //WORKS FOR DOCX int pageCount = oleDocument.SummaryProperties.PageCount; //WORKS FOR PPTS int pageCount = oleDocument.SummaryProperties.SheetCount; //NONE OF ABOVE WORKS FOR XLSX, IT ALWAYS RETURNS 0 

好吧,DSOFile也不适合我,或者你可以使用OleDB连接到xls(x)文件并获取其内容细节。 下面是一个例子:

 OleDbConnection connection = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\1.xlsx;Extended Properties=Excel 8.0"); connection.Open(); DataTable dataTable = connection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null); if (dataTable == null) return; foreach (DataColumn column in dataTable.Columns) Console.Write(column.ColumnName + '\t'); Console.Write('\n'); foreach (DataRow row in dataTable.Rows) { foreach (DataColumn column in dataTable.Columns) Console.Write(row[column].ToString() + '\t'); Console.Write('\n'); } 

只要确保安装了Office 2007系统驱动程序(Microsoft.ACE.OLEDB.12.0 oledb提供程序)即可

如果您只处理Excel 2007电子表格,则可以考虑使用ExcelPackage ( http://excelpackage.codeplex.com/ )工具,它应该能够从Excel电子表格中读取数据,而无需自动

我用excel文件和其他格式的dso文件的自动化,因为我不能过滤任何解决scheme。