【问题标题】:Parsing data from xlsx worksheet return wrong data (Open XML SDK)从 xlsx 工作表解析数据返回错误数据(Open XML SDK)
【发布时间】:2020-01-24 16:24:03
【问题描述】:

我使用了(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】:

在这里提出了类似的问题: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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-03
    • 2015-02-17
    • 2012-10-22
    相关资源
    最近更新 更多