我使用(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
在这里问了类似的问题:Retrieve cell value issue with open xml sdk
根据您的情况,这是一种解决方案:
在您提供的link中,您在代码中有注释:
// Note that the code below works only for cells that contain numeric values.
并且您的示例文件包含字符串值。如果要获取非数字值,则应使用SharedStringTable-Working with the SharedStringTable。
您应该在代码中添加if / switch语句,这里有一个基于此article的示例:
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