从ASP.net将SQL数据导出到csv文件

时间:2018-08-03 16:08:53

标签: sql asp.net vb.net csv

我在数据库中有一个视图,我想调用该视图并将数据导出到Csv文件。我已经使用以下链接提出了解决方案,但是我的视图返回了一些带有逗号值的列,因此在打开csv时出现错误,提示csv不安全,可能是由sylk文件等引起的。一旦我在其中打开CSV中没有日期。

我使用的链接

https://www.aspsnippets.com/Articles/Export-data-from-SQL-Server-to-CSV-file-in-ASPNet-using-C-and-VBNet.aspx

我正在使用VS 2017 SQL和 VB.Net

预先感谢

1 个答案:

答案 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