首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用DSOFile.OleDocumentPropertiesClass获取office(excel)文档的页数时出现问题

使用DSOFile.OleDocumentPropertiesClass获取office(excel)文档的页数时出现问题
EN

Stack Overflow用户
提问于 2009-11-08 06:10:31
回答 2查看 1.5K关注 0票数 1

我正在使用DSOFile.OleDocumentPropertiesClass来获取office文档的页数,而不是自动化。这对于docx和pptx文件很有效,但是对于xlsx文件总是返回0。

代码语言:javascript
复制
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
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-11-24 00:38:15

我已经使用自动化的excel文件和dso文件的其他格式,因为我不能提出任何解决方案。

票数 0
EN

Stack Overflow用户

发布于 2009-11-09 01:49:11

嗯,DSOFile也不适合我,作为替代方案,您可以使用OleDB连接到xls(x)文件并获取其内容详细信息。下面是一个示例:

代码语言:javascript
复制
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旧数据库提供程序)

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1694618

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档