Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 将CSV导入数据集_.net_Vb.net - Fatal编程技术网

.net 将CSV导入数据集

.net 将CSV导入数据集,.net,vb.net,.net,Vb.net,我在谷歌上搜索了一下我的问题,但似乎找不到任何有效的方法。我有一个.csv文件,它的格式就像excel工作表一样,只有我试图导入到数据集中的字符串,但只有一列导入成功。其他一切都是空的 这是我的数据集: dset.Tables.Add(New DataTable With {.TableName = "ImportedData"}) dset.Tables("ImportDataTable").Columns.Add("ID", GetType(String)) dset.Tables("Imp

我在谷歌上搜索了一下我的问题,但似乎找不到任何有效的方法。我有一个.csv文件,它的格式就像excel工作表一样,只有我试图导入到数据集中的字符串,但只有一列导入成功。其他一切都是空的

这是我的数据集:

dset.Tables.Add(New DataTable With {.TableName = "ImportedData"})
dset.Tables("ImportDataTable").Columns.Add("ID", GetType(String))
dset.Tables("ImportDataTable").Columns.Add("Name", GetType(String))
dset.Tables("ImportDataTable").Columns.Add("Type", GetType(String))
dset.Tables("ImportDataTable").Columns.Add("Misc1", GetType(String))
dset.Tables("ImportDataTable").Columns.Add("Misc2", GetType(String))
dset.Tables("ImportDataTable").Columns.Add("Misc3", GetType(String))
dset.Tables("ImportDataTable").Columns.Add("Misc4", GetType(String))
这是我的进口代码:

Dim ImportFileCSV As New OpenFileDialog
With ImportFileCSV 
    .Title = "Import Overview"
    .Filter = "CSV (*.csv)|*.csv"
End With

If ImportFileCSV .ShowDialog = DialogResult.OK Then
    Dim ImportPath As String = ImportDetailedOverview.FileName
    Dim ImportDirectoryPath As String = Path.GetDirectoryName(ImportPath) & "\"
    Dim ImportFileName As String = Path.GetFileName(ImportPath)

    Using MyConnection As System.Data.OleDb.OleDbConnection = New System.Data.OleDb.OleDbConnection("Provider=Microsoft.Jet.OleDb.4.0;Data Source=" & ImportDirectoryPath & ";Extended Properties=""Text;HDR=YES;""")
        Using MyCommand As System.Data.OleDb.OleDbDataAdapter = New System.Data.OleDb.OleDbDataAdapter("SELECT * FROM " & ImportFileName, MyConnection)
            MyConnection.Open()
            MyCommand.Fill(dset.Tables("ImportedData"))
            MyConnection.Close()
        End Using
    End Using
有人有什么见解吗? 编辑: 好的,根据Ahmed的说法,我正在使用GenericParser: 下面的代码通过OpenFileDialog选择文件,然后将返回的表添加到dset.tableImportDataTable

  If ImportDetailedOverview.ShowDialog = DialogResult.OK Then
            Dim ImportPath As String = ImportDetailedOverview.FileName
            dset.Tables("ImportDataTable").Merge(ParseCSV(ImportPath))
我没有发现任何错误。它似乎成功地完成了,但除了Misc3之外,其他所有内容都是空白的。通过绑定源的力量,我正在显示这些信息以确认:

            CType(fBindingSource.Current, DataRowView)("Name") = drow("Name").ToString
            MsgBox(drow("BuildingName").ToString)
            CType(fBindingSource.Current, DataRowView)("Type") = drow("Type").ToString
            CType(fBindingSource.Current, DataRowView)("Misc1") = drow("Misc1").ToString
            CType(fBindingSource.Current, DataRowView)("Misc2") = drow("Misc2").ToString
            CType(fBindingSource.Current, DataRowView)("Misc3") = drow("Misc3").ToString
            CType(fBindingSource.Current, DataRowView)("Misc4") = drow("Misc4").ToString

CSV非常简单,它是一个Excel CSV,因此例如:col1具有ID字段数字,col2具有名称字段字符串等等。

下面是一个简单的示例,说明如何在VB.NET中使用:

首先,需要导入名称空间:

Imports GenericParsing
要返回数据表,请执行以下操作:

Private Shared Function ParseCSV(filePath As String) As DataTable
    Using parser As New GenericParserAdapter(filePath)
        parser.FirstRowHasHeader = True
        Return parser.GetDataTable()
    End Using
End Function
要返回数据集,请执行以下操作:

Private Shared Function ParseCSV(filePath As String) As DataSet
    Using parser As New GenericParserAdapter(filePath)
        parser.FirstRowHasHeader = True
        Return parser.GetDataSet()
    End Using
End Function
参考资料:


我用了一段时间,效果很好。嗨,肯,我已经看过了。我找到了答案中的链接,从我所知道的,这个文件是C语言的,我是vb.net语言的:对不起。另外,我想在内部做这些事情,而不需要单独的类。这个帖子中的第二个答案对我没有帮助,因为它与我已经在使用的答案相似。嘿,艾哈迈德,谢谢!我想我会试一试,因为你和肯似乎都倾向于这样。但是…我目前正在用VB编写代码,而这些东西看起来是用C编写的。我该如何调整呢?@lolikols除非你完全反对使用第三方库的想法,你可以使用上面我的评论中的NuGet包将这个库添加到你的项目中,你仍然可以在VB.NET项目中使用它。嗯…真的很抱歉,因此,由于我试图将这些内容放入dset.tableImportedData,所以我将使用该方法返回一个DataSet方法。所以我解析CsVimPortPath,然后…我如何将它放入dset.tableImportedData?您不必手动创建数据集。GetDataSet方法为您创建它,很简单:但是,如果您不能这样做,因为您的数据集中有其他表,那么您可以使用GetDataTable,它将返回一个DataTable。然后,您可以使用dset.Tables.add.Hey Ahmed将此datatable添加到您的数据集中,我使用的是GenericParser,但它仍然遇到了我在原始帖子中概述的相同问题。你有什么想法吗?如果我是盲人,我帮不了你。如果您需要其他帮助,请回答您的问题、添加您当前的代码、csv数据的一些示例、您得到的确切结果以及您收到的任何错误。