簡體   English   中英

在.CSV中導出帶有多行行的datagridview

[英]Export datagridview with multiline rows in .CSV

我正在嘗試將一些值和文本從 datagridview 導出到 a.csv 文件。 如果 dgv 中的行是單行,則一切正常,一旦我插入一些多行文本,.cvs 格式看起來像這樣:

ID;RW;Name;Description;Def;Unit;Min;Max
test
machine 1;yes;boiler;2,2;no;mq;-;-
test 
machine 2;no;vent;66,9;no;fq;-;-

所以在另一行上有多行文本 go 的單元格,我如何用逗號換行該文本,以便 excel 可以正確識別它們? 像這樣:

ID;RW;Name;Description;Def;Unit;Min;Max
"test
machine 1";yes;boiler;2,2;no;mq;-;-
"test 
machine 2";no;vent;66,9;no;fq;-;-

以下是到目前為止我為完成第一部分而編寫的代碼。

    Private Sub btnSave_Click(sender As Object, e As EventArgs) Handles btnSave.Click

    Dim sfd As SaveFileDialog = New SaveFileDialog

    sfd.FileName = "export-cvs"
    sfd.Filter = "CSV File|*.csv"

    If sfd.ShowDialog = DialogResult.OK Then

        Using sw As StreamWriter = File.CreateText(sfd.FileName)

            'write the datagridview column into the first line of cvs file
            Dim dgvColumnsNames As List(Of String) = DataGridView1.Columns.Cast(Of DataGridViewColumn).ToList().Select(Function(c) c.HeaderText).ToList

            sw.WriteLine(String.Join(";", dgvColumnsNames))

            For Each row As DataGridViewRow In DataGridView1.Rows
                Dim rowData As New List(Of String)
                For Each column As DataGridViewColumn In DataGridView1.Columns
                    rowData.Add(Convert.ToString(row.Cells(column.Name).Value))
                Next
                sw.WriteLine(String.Join(";", rowData))
            Next

            'open file after being written
            Process.Start(sfd.FileName)

        End Using

    End If

End Sub

我的第一個解決方案是使用它,但我想我會將每個文本值都用雙引號引起來。

     If Convert.ToString(row.Cells(column.Name).Value).Contains(vbNewLine) Then
           Debug.WriteLine("NEWLINE")
           rowData.Add(ControlChars.Quote + Convert.ToString(row.Cells(column.Name).Value) + ControlChars.Quote)
     Else
           rowData.Add(Convert.ToString(row.Cells(column.Name).Value))
     End If 
                   

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM