在VB.NET中从Excel文件读取时,OpenXML返回数字而不是字符串

时间:2018-10-08 05:10:50

标签: excel vb.net openxml

我正在开发用VB.NET编写的Windows窗体。

在一种形式中,我需要导入一个Excel文件并读取它的数据,然后显示或存储在数据库中。当我获取包含数字的单元格时,该值是正确的,但是当我获取包含字符串的单元格时,它仅返回一位数字。

这是代码:

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim frm_sample As New frm_saple_importexcel
    frm_sample.ShowDialog()

    Dim ofd As New OpenFileDialog
    ofd.Filter = $"Excel File (*.xlsx)|*.xlsx|Excel File (*.xls)|*.xls|All files (*.*)|*.*"
    ofd.ShowDialog()

    Using spreadsheetDocument As SpreadsheetDocument =
        SpreadsheetDocument.Open(ofd.FileName, False)
        Dim dtSet As DataSet = New DataSet("JustAName")
        Dim workbookPart As WorkbookPart = spreadsheetDocument.WorkbookPart
        Dim worksheetPart As WorksheetPart = workbookPart.WorksheetParts.First()
        Dim sheetData As SheetData = worksheetPart.Worksheet.Elements(Of SheetData)().First()
        Dim dt = New DataTable("tt")
        dt.Columns.Add(New DataColumn("k_code"))
        dt.Columns.Add(New DataColumn("k_name"))
        dt.Columns.Add(New DataColumn("k_unit"))
        dt.Columns.Add(New DataColumn("k_group_name"))

        For Each r As Row In sheetData.Elements(Of Row)()
            Dim row As DataRow = dt.NewRow
            row("k_code") = r.ChildElements.ElementAt(0).InnerText
            row("k_name") = r.ChildElements.ElementAt(1).InnerText
            row("k_unit") = r.ChildElements.ElementAt(2).InnerText
            row("k_group_name") = r.ChildElements.ElementAt(3).InnerText
            dt.Rows.Add(row)
        Next

        dtSet.Tables.Add(dt)
        DataGridView1.DataSource = dtSet.Tables(0)
    End Using
End Sub

0 个答案:

没有答案