我在数据库中有一个视图,我想调用该视图并将数据导出到Csv文件。我已经使用以下链接提出了解决方案,但是我的视图返回了一些带有逗号值的列,因此在打开csv时出现错误,提示csv不安全,可能是由sylk文件等引起的。一旦我在其中打开CSV中没有日期。
我使用的链接
我正在使用VS 2017 SQL和 VB.Net
预先感谢
答案 0 :(得分:-1)
该代码实际上有点狡猾,因为它用分号显式替换了数据中的逗号,并且还在每行的末尾添加了一个额外的逗号。这是从带有引号的字段值的DataTable
生成CSV数据的简洁方法:
Dim csv = String.Join(Environment.NewLine,
myDataTable.AsEnumerable().
Select(Function(row) """" &
String.Join(""",""",
row.ItemArray) &
""""))
如果您对LINQ不满意,这是执行相同操作的更常规方法:
Dim csv As String
For rowIndex = 0 To myDataTable.Rows.Count - 1
'Add a line break before all but the first line.
If rowIndex > 0 Then
csv &= Environment.NewLine
End If
Dim row = myDataTable.Rows(rowIndex)
'Add a double-quote before the first field value.
csv &= """"
For columnIndex = 0 To myDataTable.Columns.Count - 1
'Add a closing double-quote, a delimiting comma and an opening
' Double-quote before all but the first field value.
If columnIndex > 0 Then
csv &= ""","""
End If
csv &= row(columnIndex).ToString()
Next
'Add a double-quote after the last field value.
csv &= """"
Next