代码之家  ›  专栏  ›  技术社区  ›  Lalit

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

  •  1
  • Lalit  · 技术社区  · 16 年前

    我正在使用DSOFile.oledDocumentPropertiesClass获取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
    
    2 回复  |  直到 14 年前
        1
  •  0
  •   serge_gubenko    16 年前

    嗯,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');
    }
    

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

        2
  •  0
  •   Lalit    16 年前

    因为我找不到任何解决办法。