[英]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.