从 xlsx 工作表分析数据会返回错误的数据(Open XML SDK)



我使用了(Open XML SDK(网站上的代码示例,它打开文件并读取数据,但返回值,但它们不是单元格中的值。我已经附加了我的代码和一个指向示例 xlsx 文件的链接。

https://file-examples.com/wp-content/uploads/2017/02/file_example_XLSX_10.xlsx

Private Sub ReadExcelFileDOM(ByVal fileName As String)
Using spreadsheetDocument As SpreadsheetDocument = SpreadsheetDocument.Open(fileName, False)
Dim workbookPart As WorkbookPart = spreadsheetDocument.WorkbookPart
Dim worksheetPart As WorksheetPart = workbookPart.WorksheetParts.First()
Dim sheetData As SheetData = worksheetPart.Worksheet.Elements(Of SheetData)().First()
Dim text As String
For Each r As Row In sheetData.Elements(Of Row)()
For Each c As Cell In r.Elements(Of Cell)()
text = c.CellValue.Text
Console.Write(text & " ")
Next
Next
Console.WriteLine()
Console.ReadKey()
End Using
End Sub

这里提出了类似的问题: 使用打开的 xml sdk 检索单元格值问题

在您的情况下,这是一个解决方案:

在您提供的链接中,代码中有注释:

// Note that the code below works only for cells that contain numeric values.

您的示例文件包含字符串值。如果要获取非数字值,则应使用 SharedStringTable - 使用 SharedStringTable。

您应该将 if/switch 语句添加到您的代码中,这里有一个基于本文的示例:

If c.DataType.Value == Excel.CellValues.SharedString Then
Dim stringTable As SharedStringTable = workbookPart.GetPartsOfType<SharedStringTablePart>().FirstOrDefault().SharedStringTable
text = stringTable.ElementAt(int.Parse(c.InnerText)).InnerText

最新更新