如何读取CSV文件并在Visual Basic 2010的网格中显示结果?这听起来很简单,但Google搜索一段时间后仍然无法找到答案。我有一个窗体上的DataGridView,它被称为DataGridView1。我有一个只有3列数据的csv,我希望能够显示它们。如何读取CSV文件并在Visual Basic 2010的网格中显示结果?
回答
考虑这段代码。按照您认为合适的方式修改,或适合您的要求。您需要为System.IO
和System.Data.OleDb
提供Imports
对帐单。
Dim fi As New FileInfo("c:\foo.csv")
Dim connectionString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=Text;Data Source=" & fi.DirectoryName
Dim conn As New OleDbConnection(connectionString)
conn.Open()
'the SELECT statement is important here,
'and requires some formatting to pull dates and deal with headers with spaces.
Dim cmdSelect As New OleDbCommand("SELECT Foo, Bar, FORMAT(""SomeDate"",'YYYY/MM/DD') AS SomeDate, ""SOME MULTI WORD COL"", FROM " & fi.Name, conn)
Dim adapter1 As New OleDbDataAdapter
adapter1.SelectCommand = cmdSelect
Dim ds As New DataSet
adapter1.Fill(ds, "DATA")
myDataGridView.DataSource = ds.Tables(0).DefaultView
myDataGridView.DataBind
conn.Close()
您正在使用的数据库引擎解析一个CSV文件?这似乎是超级大胆的矫枉过正。至少代码是简短的:) – 2010-08-15 02:26:23
@梅林:谢谢,我想。不知道什么可以考虑通过OleDb/Jet查询矫枉过正。据我估计,过度使用将会是Excel COM API。 OP对性能,优雅,冷静或企业模式没有任何要求。这只是一个建议。期待您的解决方案。 – 2010-08-15 03:25:05
谢谢你们我会试试 – xiaodai 2010-08-15 07:49:41
请看这个CodeProject文章/项目:LINQ TO CSV。
它将使您能够创建一个类似.csv文件列的自定义类。然后,您将使用CSV并绑定到您的DataGridView。
Dim cc As new CsvContext()
Dim inputFileDescription As New CsvFileDescription() With { _
.SeparatorChar = ","C, _
.FirstLineHasColumnNames = True _
}
Dim products As IEnumerable(Of Product) = _
cc.Read(Of Product)("products.csv", inputFileDescription)
' query from CSV, load into a new class of your own
Dim productsByName = From p In products
Select New CustomDisplayClass With _
{.Name = p.Name, .SomeDate = p.SomeDate, .Price = p.Price}, _
Order By p.Name
myDataGridView1.DataSource = products
myDataGridView1.DataBind()
我会有一个破解 – xiaodai 2010-08-16 00:14:11
使用内置于.Net框架中的TextFieldParser类。
下面是Paul Clement的一个MSDN forum post复制的代码。它的CSV转换成新的内存中的DataTable,然后绑定的DataGridView到DataTable
Dim TextFileReader As New Microsoft.VisualBasic.FileIO.TextFieldParser("C:\Documents and Settings\...\My Documents\My Database\Text\SemiColonDelimited.txt")
TextFileReader.TextFieldType = FileIO.FieldType.Delimited
TextFileReader.SetDelimiters(";")
Dim TextFileTable As DataTable = Nothing
Dim Column As DataColumn
Dim Row As DataRow
Dim UpperBound As Int32
Dim ColumnCount As Int32
Dim CurrentRow As String()
While Not TextFileReader.EndOfData
Try
CurrentRow = TextFileReader.ReadFields()
If Not CurrentRow Is Nothing Then
''# Check if DataTable has been created
If TextFileTable Is Nothing Then
TextFileTable = New DataTable("TextFileTable")
''# Get number of columns
UpperBound = CurrentRow.GetUpperBound(0)
''# Create new DataTable
For ColumnCount = 0 To UpperBound
Column = New DataColumn()
Column.DataType = System.Type.GetType("System.String")
Column.ColumnName = "Column" & ColumnCount
Column.Caption = "Column" & ColumnCount
Column.ReadOnly = True
Column.Unique = False
TextFileTable.Columns.Add(Column)
Next
End If
Row = TextFileTable.NewRow
For ColumnCount = 0 To UpperBound
Row("Column" & ColumnCount) = CurrentRow(ColumnCount).ToString
Next
TextFileTable.Rows.Add(Row)
End If
Catch ex As _
Microsoft.VisualBasic.FileIO.MalformedLineException
MsgBox("Line " & ex.Message & _
"is not valid and will be skipped.")
End Try
End While
TextFileReader.Dispose()
frmMain.DataGrid1.DataSource = TextFileTable
这真是太棒了!!!!!谢谢 – MonkeyDoug 2013-11-22 18:57:27
伟大的代码,明确表决。 – htm11h 2014-01-24 16:20:36
'TextFileReader.SetDelimeters(new string(){“;”})'这可以帮助任何人,因为它帮助我 – Yog 2016-03-25 08:47:28
For Each line As String In System.IO.File.ReadAllLines("D:\abc.csv")
DataGridView1.Rows.Add(line.Split(","))
Next
这似乎多了几分优雅
'populate DT from .csv file
Dim items = (From line In IO.File.ReadAllLines("C:YourData.csv") _
Select Array.ConvertAll(line.Split(","c), Function(v) _
v.ToString.TrimStart(""" ".ToCharArray).TrimEnd(""" ".ToCharArray))).ToArray
Dim Your_DT As New DataTable
For x As Integer = 0 To items(0).GetUpperBound(0)
Your_DT.Columns.Add()
Next
For Each a In items
Dim dr As DataRow = Your_DT.NewRow
dr.ItemArray = a
Your_DT.Rows.Add(dr)
Next
Your_DataGrid.DataSource = Your_DT
这是你可以读取数据.csv
文件使用OLEDB
供应商。
If OpenFileDialog1.ShowDialog(Me) = DialogResult.OK Then
Try
Dim fi As New FileInfo(OpenFileDialog1.FileName)
Dim sConnectionStringz As String = "Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=Text;Data Source=" & fi.DirectoryName
Dim objConn As New OleDbConnection(sConnectionStringz)
objConn.Open()
'DataGridView1.TabIndex = 1
Dim objCmdSelect As New OleDbCommand("SELECT * FROM " & fi.Name, objConn)
Dim objAdapter1 As New OleDbDataAdapter
objAdapter1.SelectCommand = objCmdSelect
Dim objDataset1 As New DataSet
objAdapter1.Fill(objDataset1)
'--objAdapter1.Update(objDataset1) '--updating
DataGridView1.DataSource = objDataset1.Tables(0).DefaultView
Catch ex as Exception
MsgBox("Error: " + ex.Message)
Finally
objConn.Close()
End Try
End If
执行以下操作:
Dim dataTable1 As New DataTable
dataTable1.Columns.Add("FECHA")
dataTable1.Columns.Add("TT")
dataTable1.Columns.Add("DESCRIPCION")
dataTable1.Columns.Add("No. DOC")
dataTable1.Columns.Add("DEBE")
dataTable1.Columns.Add("HABER")
dataTable1.Columns.Add("SALDO")
For Each line As String In System.IO.File.ReadAllLines(objetos.url)
dataTable1.Rows.Add(line.Split(","))
Next
你可以使用Datatable :) – 2016-10-31 16:40:32
- 1. 如何读取txt文件并在Visual Basic 2010 Express中的网格标题中显示结果?
- 2. 在Visual Basic 2010控件中显示PDF
- 3. 从CSV文件读取只返回在Visual Basic中的一行
- 4. 在sdcard中读取sqlite文件并在android中显示结果
- 5. 读取文本文件并在窗口中显示结果
- 6. 读取并显示CSV文件
- 7. Visual Basic读取文本文件
- 8. 如何压缩和提取Visual Basic 2010中的JAR文件?
- 9. 如何读取excel文件并在DOS下以csv格式显示输出?
- 10. 如何将Visual Studio loadtest结果文件(.trx)显示为可读格式?
- 11. 如何在Visual Basic中读取.doc文件?
- 12. VB.NET Visual Basic头文件读取器
- 13. visual basic 2010 express:从公共存储库读取xml文件
- 14. 如何计算并显示数据网格中列的结果?
- 15. 在Visual Basic 2010
- 16. 如何在网格中显示csv文件?
- 17. 从文本文件中读取并在C#表格中显示
- 18. Visual Basic 2010 Html表格
- 19. Visual Basic,搜索框和在列表框中显示结果
- 20. 如何使用PHP读取CSV文件并在Table/DIV中显示内容?
- 21. 从保存文件在Visual Basic 2010
- 22. Visual Basic从文件读取 - 一行并将其分开
- 23. 如何显示与形式访问2010的Visual Basic
- 24. Visual Basic - “If”声明不显示标签中的结果
- 25. Visual Basic 2010 Express - 如何在Visual Basic 2010 Express中使用excel函数
- 26. 读取CSV文件和显示值
- 27. 如何读取文件并在VB.NET的列表框中显示?
- 28. 如何在网格视图C#中显示XML文件的结果?
- 29. 从文本文件中的列表中读取某个行,并在列表框中显示,Visual Studio 2010
- 30. 使用Visual Basic 2010的Zip文件夹
你有没有看着http://stackoverflow.com/questions/1405038/reading-csv-files-in-net – InSane 2010-08-15 02:25:04