当前位置: 代码迷 >> ASP.NET >> 20W条的数组怎么导出到excel,多谢。目前使用NPOI进行导出。百分
  详细解决方案

20W条的数组怎么导出到excel,多谢。目前使用NPOI进行导出。百分

热度:380   发布时间:2013-02-25 00:00:00.0
20W条的数组如何导出到excel,谢谢。目前使用NPOI进行导出。百分求助
数据格式大概是这样的。
id username status addtime phonelist
1 test 成功 2012-1-1 12:00:00 13312345678 13412345678 13512345678 13612345678 13712345678...
2 myname 成功 2012-1-2 13:00:00 15012345678 15112345678 15212345678 15312345678 15412345678... 
===============
phonelist里面存的是手机号格式的数据,目前每个号码是用换行进行分隔的。

现在的要求是需要把其中一条的数据导成excel文件(excel单个工作簿最多支持65536行,所以到时要分成多个工作簿)
比如读取第一条生成后的文件格式大概如下
 姓名 状态 时间 手机号
test 成功 2012-1-1 12:00:00 13312345678
test 成功 2012-1-1 12:00:00 13412345678
test 成功 2012-1-1 12:00:00 13512345678
test 成功 2012-1-1 12:00:00 13612345678
test 成功 2012-1-1 12:00:00 13712345678
==================
也就是说把phonelist进行分隔后循环写入excel。


目前我是用到NPOI进行导出excel,可如果phonelist的数据一上万,那生成excel的速度明显就受不了了,因为它是要循环的,如下:
string[] strPhone= model.PhoneList.Split(new string[] { "\n" }, StringSplitOptions.RemoveEmptyEntries);
for(int i=1;i<strPhone.length;i++)
{
//这里一行行的生成写入
}
==================
请教大家有没其它好的方法,或者有用过NPOI的朋友能否帮忙解答下,急,非常感谢大家。

之前也有想过用excel的组件,但怕虚拟空间不肯装excel。纠结。。。

------解决方案--------------------------------------------------------
C# code
string strCon = " Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source = c:\\sample.xls;Extended Properties=Excel 8.0" ;     OleDbConnection myConn = new OleDbConnection ( strCon ) ;     string strCom = " SELECT * FROM [Sheet1$] " ;     myConn.Open ( ) ;     file://打开数据链接,得到一个数据集     OleDbDataAdapter myCommand = new OleDbDataAdapter ( strCom , myConn ) ;     file://创建一个 DataSet对象     myDataSet = new DataSet ( ) ;     file://得到自己的DataSet对象     myCommand.Fill ( myDataSet , "[Sheet1$]" ) ;     file://关闭此数据链接     myConn.Close ( )
------解决方案--------------------------------------------------------
最简单的就是直接写文本文件,用逗号分割每个字段,然后保存成 csv格式的文件
反正又不需要做格式化啥的
  相关解决方案