日期:2014-05-17  浏览次数:20430 次

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格式的文件
反正又不需要做格式化啥的