首页 > 解决方案 > 从 ASP.net 将 SQL 数据导出到 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

提前致谢

标签: sqlasp.netvb.netcsv

解决方案


该代码实际上有点狡猾,因为它明确地将数据中的逗号替换为分号,并且还在每行的末尾添加了一个额外的逗号。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

推荐阅读