开发者论坛

 找回密码
 注册 (请使用非IE浏览器)
查看: 2340|回复: 0

[源码] DataTable快速导到Excel方法

[复制链接]

0

精华

490

贡献

729

赞扬

管理员

Rank: 45Rank: 45Rank: 45Rank: 45Rank: 45

帖子
158
软币
3816
在线时间
576 小时
注册时间
2015-6-30
发表于 2017-10-12 10:39:38 | 显示全部楼层 |阅读模式
本帖最后由 rzt_tao 于 2017-10-12 12:18 编辑

没有格式要求,想快速导出DataTable数据到Excel可以采用以下方式实现,开发人员在调试过程中有时候也可以用来记录比较。100w的数据导出也就1~2秒的时间。
[C#] 纯文本查看 复制代码
void Main()
{
	DataTable dataTable =new DataTable();
	
	for(int i=0;i<10;i++)
	{
		dataTable.Columns.Add("col"+i);
	}
	for(int i=0;i<1000000;i++)
	{
		var dr=dataTable.NewRow();
		foreach(DataColumn col in dataTable.Columns)
		{
			dr[col]=col.ColumnName+i;
		}
		dataTable.Rows.Add(dr);
	}
	string fileName="excel.csv";
	Stopwatch watch=new Stopwatch();
	watch.Start();
	ExportToExcel(dataTable,fileName);
	watch.Stop();
	("导出完毕,用时:"+watch.Elapsed).Dump();
}
public static void ExportToExcel(DataTable dataTable,string fileName,bool isOpen=false)
{
	var lines = new List<string>();
	string[] columnNames = dataTable.Columns
									.Cast<DataColumn>()
									.Select(column => column.ColumnName)
									.ToArray();
	var header = string.Join(",", columnNames);
	lines.Add(header);
	var valueLines = dataTable.AsEnumerable()
					.Select(row => string.Join(",", row.ItemArray));            
	lines.AddRange(valueLines);
	File.WriteAllLines(fileName,lines);
	if(isOpen)
		Process.Start(fileName);
}




评分

参与人数 1赞扬 +1 收起 理由
Agatha + 1 很给力

查看全部评分

回复

使用道具 举报

Archiver|手机版|小黑屋|开发者网 ( 苏ICP备08004430号-2 )
版权所有:南京韵文教育信息咨询有限公司

GMT+8, 2024-5-23 23:04

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表