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 表的最佳方法? [复制]