OpenXML возвращает число вместо строк при чтении из файла Excel в VB.NET - PullRequest
0 голосов
/ 08 октября 2018

Я разрабатываю формы Windows, написанные на VB.NET.

В форме мне нужно импортировать файл 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
...