近来用做了一个综合查询,需要把几乎一个系统的数据完全导入到一个EXCEL里,就不得不对所有导出数据到EXCEL得方法进行了解,以选择一个性能最好的方式:
综和网上的几种方式看,从SQL导出数据到EXCEL主要分成四种方式;(根据个人的理解哈)
第一:以前我在前面的文章里也提到过就是直接通过HtmlText的方式给全部输出到EXCEL,代码如下;
Response.Clear(); 
Response.Buffer
= true
Response.Charset
="GB2312";    
Response.AppendHeader(
"Content-Disposition","attachment;filename=FileName.xls"); 
Response.ContentEncoding
=System.Text.Encoding.GetEncoding("GB2312");//设置输出流为简体中文
Response.ContentType = "application/ms-excel";//设置输出文件类型为excel文件。 
this.EnableViewState = false;    
System.Globalization.CultureInfo myCItrad 
= new System.Globalization.CultureInfo("ZH-CN",true);
System.IO.StringWriter oStringWriter 
= new System.IO.StringWriter(myCItrad); 
System.Web.UI.Writer oHtmlTextWriter 
= new System.Web.UI.HtmlTextWriter(oStringWriter);
this.DataGrid1.RenderControl(oHtmlTextWriter); 
Response.Write(oStringWriter.ToString());
Response.End();

这种方式的缺点是导入到EXCE里的所以的信息不能编辑。
第二:就是最传统的通过COM组件通过对Interop.Excel.dll的引用实现导出数据。(这种方式具体在后面将。)
这种方式是消耗的性能比较大,当你插入数据的适合不得不一个单言格的填充数据,导致数据量大时,性能很差。但是这种方式有一种好处就是可以尽最大可能的操作EXCEL,比如:EXCEL的SHEET等。
第三:用OLEDB把EXCEL文件最为一个目的文件,实现数据的导出。(这种方式具体在后面将。)
这种方式比第二种的性能好些,因为我自己认为他是把EXCEL文件当作是一个数据库,一行当作一格表,他是一行一行的写SQL的插入语句,实现插入到EXCEL。但是这种方式也有格自命的缺点,就是你把数据插入EXCEL时不能包含EXCEL的”保留字“。比如:标题不能为NOTE等。
第四:通过DTS象SQL的备份还原一样在SQL里新建一个包,实现数据的导出。(这种方式具体在后面将。)这种方式我觉得性能好,但灵活性不强,因为你不能对数据按指定的要求导出。
posted on 2007-04-05 18:03  过江  阅读(1548)  评论(0编辑  收藏  举报