asp.net(C#) 读取excel文件大量数据的性能问题?

xiangzi002 2007-05-23 12:21:42
我在vs2005平台上要实现这么一个功能,点击一个按钮一次将大量的excel文件数据导入到sqlserver2005中
我用的是ajax技术,在前台用javascript操做excel文件,循环读取所有的excel文件,每读取一行就放进一个数组里通过web服务传到后台用c#语言将一行数据插入到数据库。思路大概就是这样。
现在功能已经实现了,具体代码如下
用javascript定义一个函数,循环读取excel文件数据
function readExcel()
{

try
{

var ExcelNum=new Array();
//重复导入之前,删除上次导入的同期数据
WebServiceExcel.deleteOldNumber();
var oXL = new ActiveXObject("Excel.Application");
\\r_c_num[5]的值为excel文件的名字
var path=document.all.excelpath.value+"\\"+r_c_num[5]
var oWB = oXL.Workbooks.open(path);
\\如果excel文件有多个sheet的话从第一个sheet循环读取
for(var x=1;x<=oWB.worksheets.count;x++)
{
oWB.worksheets(x).select();
var oSheet =oWB.ActiveSheet;
\\按指定开始行和开始列读取excel文件的数据
for(var i=parseInt(r_c_num[6]);i<=parseInt(r_c_num[7]);i++)
{
for(var j=parseInt(r_c_num[8]);j<=parseInt(r_c_num[9]);j++)
{
if(typeof(oSheet.Cells(i,j).value)=="undefined")
{
ExcelNum[j-parseInt(r_c_num[8])+6]="";
}
else
{
switch_letter(j);
ExcelNum[j-parseInt(r_c_num[8])+6]=oSheet.Cells(i,j).value;
}
}
//将读取的一行数据传到后台插入到数据库
WebServiceExcel.insert_From_Excel(ExcelNum);
}
}
}
}
catch(err)
{
alert("出错了,"+err.message);
}
}
这只是前台的关键代码。
现在的问题是,如果excel文件数据太多的话,导入过程要等好长时间,性能太差了,不知道该怎么改进???如果导几千行数据就不行了,时间让我无法忍受。请高手赐教,很着急用,谢谢了!!!
...全文
722 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
litingduo 2007-07-19
  • 打赏
  • 举报
回复
你可以看查一下sqlbulkcopy,也许可以提高效率.
batiraul 2007-07-18
  • 打赏
  • 举报
回复
修改循环方式估计可能性不大了,不如修改你的“WebServiceExcel.insert_From_Excel(ExcelNum);”方法,执行insert_From_Excel的时候不是直接插入到数据库,而是保存到你的待插入数据库操作队列里,这样页面响应肯定会快点,数据库插入工作在后台处理中完成,也就是说页面操作与后台是异步的。
此外可以在页面加个进度条之类的,不要让用户觉得页面没反应了
jtg98g3 2007-07-18
  • 打赏
  • 举报
回复
学习。
xiangzi002 2007-05-23
  • 打赏
  • 举报
回复
自己顶以下,希望高手们,赐教呀,谢谢了!!!!!

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧