C# Windows 应用程序将数据表数据导出到 .csv 文件

Posted

技术标签:

【中文标题】C# Windows 应用程序将数据表数据导出到 .csv 文件【英文标题】:C# Windows Application export datatable data to .csv file 【发布时间】:2018-05-10 09:03:05 【问题描述】:

我想要的是将 datatable 导出到 .csv 文件。

这是我尝试过的,但花费的时间太长:

string strFilePath= @"C:\myCSVfile.csv";

--

public void CreateCSVFile(DataTable dtDataTablesList, string strFilePath)


    // Create the CSV file to which grid data will be exported.

    StreamWriter sw = new StreamWriter(strFilePath, false);

    //First we will write the headers.

    int iColCount = dtDataTablesList.Columns.Count;

    for (int i = 0; i < iColCount; i++)
    
        sw.Write(dtDataTablesList.Columns[i]);
        if (i < iColCount - 1)
        
            sw.Write(",");
        
    
    sw.Write(sw.NewLine);

    // Now write all the rows.

    foreach (DataRow dr in dtDataTablesList.Rows)
    
        for (int i = 0; i < iColCount; i++)
        
            if (!Convert.IsDBNull(dr[i]))
            
                sw.Write(dr[i].ToString());
            
            if (i < iColCount - 1)

            
                sw.Write(",");
            
        
        sw.Write(sw.NewLine);
    
    sw.Close();

有没有其他方法可以更快地做到这一点?

提前感谢您的任何建议。

【问题讨论】:

您是否从数据库中获取数据? dtDataTablesList 中有多少行? 几十万甚至一百万 具体哪个部分需要很长时间。您的“百万”记录产生的文件有多大? 我认为它在获取。大约 90 万到 300 万或更多 【参考方案1】:

现在更快了,这就是我所做的:

    我数了一下处理器的数量 为每个线程创建一个线程 在线程上划分行 将每个文件导出到自己的文件中 最后合并文件 添加漂亮的进度显示

【讨论】:

为了编写 CSV 文件,我使用 CsvHelper 或 FileHelpers。要从 SQL 查询中读取数据,我使用 Dapper。您可以将两者结合起来,为您的任务提供一个非常快速、可靠且占用内存更少的解决方案

以上是关于C# Windows 应用程序将数据表数据导出到 .csv 文件的主要内容,如果未能解决你的问题,请参考以下文章

尝试在 64 位 Windows-7 中从 c# 应用程序将 datagridview 导出到 OpenOffice Calc 时出现 cli 程序集错误

使用 C# 和 ASP.NET 将数据从 Excel 文件导出到 SQL Server 表的最佳方法? [复制]

如何在wpf c#中从数据表导出到excel文件

如何从 c# 将 SQL Server 数据库转换/导出到 MSAccess

C# 中的 DataGridView 导出器

C#程序,将数据从dataset导出到excel表格里的时间类型为啥显示成“#”号呢