要导入的EXCEL表很多,速度慢怎么办? 本帖最后由 xuguv 于 2010-01-29 10:48:25 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用oledb 去select excel 表格行不行? 你这样一行一行的写肯定慢啊,可以试试这个方法直接将数据表以EXCEL的方式打开或则保存public virtual void PageExcel(DataTable pDataTable) { if (pDataTable != null && pDataTable.Rows.Count > 0) { Response.Clear(); Response.Buffer = true; Response.Charset = "gb2312"; Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312"); Response.ContentType = "application/vnd.ms-excel"; // Response.ContentEncoding = System.Text.Encoding.GetEncoding("utf-8"); //Response.AddHeader("Content-Disposition", "inline;filename=" // + HttpUtility.UrlEncode("下载文件.xls")); Response.AppendHeader("content-disposition", "attachment;filename=\"" + System.Web.HttpUtility.UrlEncode("中文名称", System.Text.Encoding.UTF8) + ".xls\""); DataGrid dataGrid = new DataGrid(); dataGrid.DataSource = pDataTable; dataGrid.DataBind(); //如果输出为Word,修改为以下代码 //Response.ContentType = "application/ms-word" //Response.AddHeader("Content-Disposition", "inline;filename=test.doc") StringBuilder sb = new StringBuilder(); System.IO.StringWriter sw = new System.IO.StringWriter(sb); System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(sw); sb.Append("<html><body>"); dataGrid.RenderControl(hw); sb.Append("</body></html>"); Response.Write(sb.ToString()); Response.End(); } } 但是我的EXCEL表不是标准表。里面是有格式的。比如有列合并以及行合并。这样直接select excel是不是读不对? 要想解脱,就要如此格式问题 可以让写EXCEL的人注意下然后程序写的牛点,可以处理一般的格式错误 同意,Excel访问组件确实很慢 用OleDB 把Excel作为表来查询 ,好像是解决了从头到尾读EXCEL内容的问题。但是每张表是不是还需要打开关闭EXCEL呢?如果需要的话,这个时间还是很长。另外,我的表是很不规则的表,比如(2,40里有个数据,(3,7)里有个数据,(5,2)里有个数据。然后批量的数据要到21行以后才会出现。并且也不是都一样,有些行和行在某些列上会合并。这样读的话,是不是很困难? 学习下,我都是用mysql的;excel操作本来就很慢,我以前试过很多方法也不行就放弃了;现在excel基本都用csv文件来代替了 在SQL中直接导入数据到excel通过二维数组赋值给单元格多线程 这个excel本来就很慢,最好是能省则省。尽量不要一个一个cells去读,部分由规则的地方用数组一次性读出来,再解析数组。就会省不少时间比如 object[,] = (Range)Excel.....效率会提高很多的,你可以试试。 建议你把excel中的数据先放入到DataTable中,然后批量插入数据库,不要循环构造insert语句。 现对200张表的EXCEL进行汇总,用VBA写,这时候还可以做数据check,放到一个工作表中然后再进行导入。 印象里EXCEL里的数据和格式是分离的? axWindowsMediaPlayer 播放的问题? 这个功能怎么实现? 通过.NET的WindowService 访问PHP的数据【请高手解惑】 c#调用dll碰到的问题 枚举问题 开源框架vmukti视频会议谁用过么 C# 窗体上一页用Hide隐藏后怎么跳转回去 一个看似简单,实则很难的问题:如何使用主机头来调试网站?[盼高手解答] Json文件中有中文,C#如何解析出来 求应用程序框架! 郁闷 刚学C#,(有C++基础了)在控制台输入输出遇到点小问题 求C#书一本&案例源码
直接将数据表以EXCEL的方式打开或则保存
public virtual void PageExcel(DataTable pDataTable)
{
if (pDataTable != null && pDataTable.Rows.Count > 0)
{
Response.Clear();
Response.Buffer = true;
Response.Charset = "gb2312";
Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312"); Response.ContentType = "application/vnd.ms-excel";
// Response.ContentEncoding = System.Text.Encoding.GetEncoding("utf-8"); //Response.AddHeader("Content-Disposition", "inline;filename="
// + HttpUtility.UrlEncode("下载文件.xls"));
Response.AppendHeader("content-disposition", "attachment;filename=\"" + System.Web.HttpUtility.UrlEncode("中文名称", System.Text.Encoding.UTF8) + ".xls\"");
DataGrid dataGrid = new DataGrid();
dataGrid.DataSource = pDataTable;
dataGrid.DataBind();
//如果输出为Word,修改为以下代码
//Response.ContentType = "application/ms-word"
//Response.AddHeader("Content-Disposition", "inline;filename=test.doc")
StringBuilder sb = new StringBuilder();
System.IO.StringWriter sw = new System.IO.StringWriter(sb);
System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(sw);
sb.Append("<html><body>");
dataGrid.RenderControl(hw);
sb.Append("</body></html>");
Response.Write(sb.ToString());
Response.End();
}
}
格式问题 可以让写EXCEL的人注意下
然后程序写的牛点,可以处理一般的格式错误
同意,Excel访问组件确实很慢
excel操作本来就很慢,我以前试过很多方法也不行就放弃了;
现在excel基本都用csv文件来代替了
通过二维数组赋值给单元格
多线程
尽量不要一个一个cells去读,部分由规则的地方用数组一次性读出来,再解析数组。就会省不少时间
比如 object[,] = (Range)Excel.....
效率会提高很多的,你可以试试。