使用 OpenXML 读取 Excel 个文件

Read Excel file using OpenXML

我正在编写一个 c# 程序来使用 OpenXML 读取 excel 文件。 我在 column.I 的 excel 文件的一列中添加了一个单词列表,想读取它们并添加到数组列表中。 我正在使用下面的代码

using (SpreadsheetDocument doc = SpreadsheetDocument.Open(filePatah + "\" + fileName, false))
 {
       WorkbookPart workbookPart = doc.WorkbookPart;
       WorksheetPart worksheetPart = workbookPart.WorksheetParts.First();
       SheetData sheetData = worksheetPart.Worksheet.Elements<SheetData>().First();

       ArrayList data = new ArrayList();
       foreach (Row r in sheetData.Elements<Row>())
       {
          foreach (Cell c in r.Elements<Cell>())
          {
             data.Add(c.CellValue.Text);
          }
       }
 }

我期待的是 1、2、3、4 等,同时我期待列出这些词。 我需要做什么才能得到这些词?

实际的字符串存储在SharedStringTable中。您得到的只是对该字符串 table.

中元素的引用

这是您修改后的示例,用于从字符串 table:

中检索值
using (SpreadsheetDocument doc = SpreadsheetDocument.Open(filePatah + "\" + fileName, false))
{
   WorkbookPart workbookPart = doc.WorkbookPart;
   WorksheetPart worksheetPart = workbookPart.WorksheetParts.First();
   SheetData sheetData = worksheetPart.Worksheet.Elements<SheetData>().First();

   ArrayList data = new ArrayList();
   foreach (Row r in sheetData.Elements<Row>())
   {
      foreach (Cell c in r.Elements<Cell>())
      {
        if (c.DataType != null && c.DataType == CellValues.SharedString)
        {
            var stringId = Convert.ToInt32(c.InnerText); // Do some error checking here
            data.Add(workbookPart.SharedStringTablePart.SharedStringTable.Elements<SharedStringItem>().ElementAt(stringId).InnerText);
        }
      }
   }
}

请注意,这只是一个粗略的示例。有关更完整的示例,您可以查看 here.

此外,根据您的需要,您可能会发现使用 EPPlus 之类的库比 OpenXML SDK 更容易(您可以直接读取和写入单元格,而不必担心实际的文档格式)。