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

问题描述 投票:0回答:1

我使用(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
excel vb.net openxml openxml-sdk
1个回答
0
投票

在这里问了类似的问题: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
© www.soinside.com 2019 - 2024. All rights reserved.