【问题标题】:Import CSV file to database using VB使用VB将CSV文件导入数据库
【发布时间】:2016-05-07 16:48:31
【问题描述】:

我需要使用表单中的 DataGridView 将信息从 CSV txt 文件导入数据库。应用程序应该允许用户打开一个 .txt 文件,然后更新我的表单中的 DataGridView 表。我能够获取该文件,但无法使用该文件更新网格。我可以更新文本框,但不知道如何更新网格。谁能帮我解决这个问题?

Imports Microsoft.VisualBasic.FileIO
Imports System.IO

Public Class Form1
Private fileToOpen As String                'the file to be opened and read
Private responseFileDialog As DialogResult  'response from OpenFileDialog
Private myStreamReader As StreamReader      'the reader object to get contents of file
Private myStreamWriter As StreamWriter      'the writer object to save contents of textbox
Private myTextFieldParser As TextFieldParser    ' To parse text to searched.
Dim myDataAdapter As OleDb.OleDbDataAdapter
Dim myString() As String
Dim myRow As DataRow



Private Sub PeopleBindingNavigatorSaveItem_Click(sender As Object, e As EventArgs) Handles PeopleBindingNavigatorSaveItem.Click
    Me.Validate()
    Me.PeopleBindingSource.EndEdit()
    Me.TableAdapterManager.UpdateAll(Me.MyContactsDataSet)

End Sub

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    'TODO: This line of code loads data into the 'MyContactsDataSet.People' table. You can move, or remove it, as needed.
    Me.PeopleTableAdapter.Fill(Me.MyContactsDataSet.People)

End Sub

Private Sub OpenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles OpenToolStripMenuItem.Click
    Dim fileContentString As String         'contents of the file
    Dim update As New OleDb.OleDbCommandBuilder(myDataAdapter)
    'Dim myRow As DataRow

    'set the properties of the OpenFileDialog object
    OpenFileDialog1.InitialDirectory = My.Computer.FileSystem.CurrentDirectory
    OpenFileDialog1.Title = "Select File to View..."
    OpenFileDialog1.Filter = "Text Files (*.txt)|*.txt|All Files (*.*)|*.*"


    'responseFileDialog contains holds the response of the user (which button they selected)
    responseFileDialog = OpenFileDialog1.ShowDialog()

    'check to see if the user select OKAY, if not they selected CANCEL so don't open anything
    If (responseFileDialog <> System.Windows.Forms.DialogResult.Cancel) Then
        'make sure there isn't a file already open, if there is then close it
        If (myStreamReader IsNot Nothing) Then
            myStreamReader.Close()
            'TextBoxFileOutput.Clear()
        End If

        'open the file and read its text and display in the textbox
        fileToOpen = OpenFileDialog1.FileName
        myStreamReader = New StreamReader(OpenFileDialog1.FileName)

        initTextFieldParser()

        'loop through the file reading its text and adding it to the textbox on the form
        Do Until myStreamReader.Peek = -1
            fileContentString = myStreamReader.ReadLine()

            'Try
            '    myTextFieldParser = New TextFieldParser(fileToOpen)
            '    myTextFieldParser.TextFieldType = FieldType.Delimited
            '    myTextFieldParser.SetDelimiters(",")
            'Catch ex As Exception
            '    MessageBox.Show("Cannot Open File to Be Read!")
            'End Try


            myTextFieldParser.TextFieldType = FieldType.Delimited

            myString = TextFieldParser.NewLine()

            myRow.Item("FirstName") = myString(1)

            MyContactsDataSet.Tables("People").Rows.Add(myRow)
            PeopleTableAdapter.Update(MyContactsDataSet)
            'TextBoxFileOutput.AppendText(fileContentString)
            'TextBoxFileOutput.AppendText(Environment.NewLine)
        Loop

        'close the StreamReader now that we are done with it
        myStreamReader.Close()
        'SaveToolStripMenuItem.Enabled = True
    End If
End Sub

Private Sub initTextFieldParser()
    'Close myTextFieldParser in case the user is surfing through the records and then
    'decides to search for a particular last name --> Basically      start searching from beginning of the file
    If (myTextFieldParser IsNot Nothing) Then
        myTextFieldParser.Close()
    End If

    Try
        myTextFieldParser = New TextFieldParser(fileToOpen)
        myTextFieldParser.TextFieldType = FieldType.Delimited
        myTextFieldParser.SetDelimiters(",")
    Catch ex As Exception
        MessageBox.Show("Cannot Open File to Be Read!")
    End Try
End Sub
End Class

【问题讨论】:

  • 你能提供你目前尝试过但不起作用的代码吗?
  • 我刚刚报废了它并重新开始。我很快就会把我有的东西放上来。谢谢!!
  • 很多细节缺失。如果用户应该能够在保存之前 编辑/查看数据,则将数据解析为空(已键入)DataTable 并将其绑定到 DGV。使用 TextFieldParser、OleDB 或 CSVHelper 之类的东西来解析 csv 文本文件。这里有无数关于如何做的问题,
  • 到目前为止我已经添加了我的代码。我需要将 CSV 文件中的数据解析到 DataGridView。我知道如何将其解析为文本框,但我不知道如何将其解析为 Grid。
  • 我已经更新了我的代码,其中不工作的部分是:myString = TextFieldParser.NewLine()

标签: vb.net


【解决方案1】:

用你的文件内容更新 gridview

导入 System.IO 因为我们需要 StreamReader

Using reader As New StreamReader("filepath")
    DataGridView1.Columns.Add("col1",reader.ReadToEnd())
End Using

检查这个out!

【讨论】:

    猜你喜欢
    • 2017-04-06
    • 1970-01-01
    • 1970-01-01
    • 2016-12-30
    • 2021-12-30
    • 2015-07-13
    • 2013-02-19
    • 2014-10-25
    相关资源
    最近更新 更多