进度条在 网导入超过时的应用实例
本文实例讲述了进度条在。网导入超过时的应用,分享给大家供大家参考。具体实现方法如下:
在程序开发过程中,往往会涉及到将超过表格导入到数据库中的需求,而当超过表格内容很多的时候,我们往往会很难去捕捉它的执行过程进度和一些错误信息,此时我们便可以通过以下方法去解决这些难题,具体实现过程分析如下:
一、建立一个网应用程序,在程序中首先创建一个超文本标记语言文件命名为ProgressBar,文件内容如下:复制代码代码如下: html health eta http-equiv=' Content-Type ' Content=' text/html;charset=utf-8/开始处理函数初学者(msg){ WriteText(msg);} //设置进度条进度函数设置进度栏(msg,pos){进度栏。风格。宽度=位置“%”;WriteText(消息)已完成位置"%");} //处理结束函数EndTrans(msg){ if(msg==' ')写入文本('完成。');否则写文字(msg);} //设置时间信息函数SetTimeInfo(msg){编写文本(msg);} //更新文本显示信息函数write text(str){ var STrtag=' font face=' Verdana,Arial,Helvetica ' size=' 2 ' color=' # ea9b 02 ' B ' str '/B/font ';document.getElementById('Msg2 ').innerHTML=STrtag }/script/head dytable align=' center ' style=' height :100% ' tr style=' height :45% ' TD/TD/tr tr TD div id=' progress bar side ' style=' width :300 px;颜色:银色边框宽度:1 px边框样式style : solid ' div id=' progress bar ' align=' center ' style=' height :20 px;宽度:0%;背景-颜色: # 316 C5/div/div/TD TD div id=' Msg 2 ' style=' height :16 px;/div/TD/tr style=' height :50% ' TD/TD/tr/table/body/html二、创建一个aspx页面,前后端代码分别如下:复制代码代码如下://1.这里为了简便,我只写出了前端页面中的身体体部分供参考:form id=' forms ' runat=' server ' table align=' center ' style=' height :100% ' tr style=' height :45% ' TD/TD/trtr TD align=' center ' style=' height : 24px;宽度: 100像素;超过文件/TD TD TD style=' height : 24px ' ASP 3360文件上传ID=' fuGlossaryXls ' runat=' server '/ASP 3360标签ID=' label 2 ' runat=' server ' Font-Bold=' True '前颜色=' Red ' Text='不能为空可见=' False '/asp:标签/TD TD asp3360按钮ID=' button 1 ' runat=' server ' CSS类=' mybotton ' Text='导入width=' 60px ' onclick=' button 1 _ Click '//TD/tr/table/form//2 .后端部分代码如下://这里是激发导入按钮点击事件受保护的void Button1_Click(对象发送者,EventArgs e){ string cfilename=this。扶摇直上。文件名;//获取准备导入的文件名称if (cfilename=='') { Label2 .可见=真;返回;} else { Label2 .可见=假;} //////////////显示进度//////日期时间。现在;日期时间结束时间=系统。日期时间。现在;
//根据ProgressBar.htm显示进度条界面字符串模板文件名=路径。联合收割机(服务器. MapPath(' . '),'进度条。htm’);流阅读器=新的流阅读器(@模板文件名,系统文本。编码。getencoding(' GB 2312 ');字符串html=阅读器.ReadToEnd();读者close();回应. write(html);回应flush();系统。线程。线程。睡眠(1000);
字符串jsBlock//处理完成jsBlock=' scriptBeginTrans('正在加载数据,请耐心等待.');/script ';回应. write(JSBLock);回应flush();
字符串fileName=fuGlossaryXls .PostedFile。文件名。子字符串(fuGlossaryXls .PostedFile。文件名。的最后一个索引(' \ \ ')1);//获取准备导入文件的文件名字符串后缀=fileName .子字符串(文件名.LastIndexOf(' . ') 1);//获取准备导入文件的后缀名系统。线程。线程。睡眠(200);
int最大行数=0;//用来记录需要加载的数据总行数bool err=false//用来记录加载状态int err计数=0;//用来记录加载错误行数if (fuGlossaryXls .HasFile)//判断当前是否有选取文件{如果(后缀==' xlsx '){ DataTable dt=ExcelImport(FIlename);for(int I=0;我决定。行。计数;I){最大行数;} //////////拓展////////myView .RowFilter='名称不为null ';//int t=myView .计数;//获取满足RowFilter条件的数据行//////////拓展//////;初始目录=测试;用户标识=sa密码=123456;//本地数据库链接SqlConnection conn=new SqlConnection(sqlconnect);SqlTransaction myTrans=null尝试{ SQLCommand cmd=new SQLCommand(null,conn);conn . Open();myTrans=conn . begin inspection();cmd .交易=我的交易.' CommandText='从测试中删除;cmd .execution query();//首先执行清除表内容操作for(int j=0;j dt .行。计数;j )//循环向数据库中插入超过数据{如果(字符串IsNullOrEmpty(dt .行[j][0].ToString())){ jsBlock=' scriptEndTrans('第' j.ToString()'行数据写入错误。');/script ';回应. write(JSBLock);回应flush();err=true错误计数;} else { cmd .CommandText=字符串。格式('插入测试值(“{0}”、“{1}”、“{2}”、“{3}”)”、dt .行[j][0],dt .行[j][1],dt .行[j][2],dt .行[j][3]);cmd .execution query();//逐行向表中插入数据,注意字段的对应}系统。线程。线程。睡眠(1000);浮点CPO SF=0;CPO SF=100 *(j ^ 1)/最大行数;int cpos=(int)CPO SF;jsBlock=' scriptSetPorgressBar('已加载到第(j)1 .' ToString()'条,' ' CPO .ToString()' ');/script ';回应. write(JSBLock);回应flush();} myTrans .commit();//提交}捕获(异常ex) { myTrans .回滚();//回滚ClientScript .RegisterStartupScript(这GetType(),' alert ',' script alert '(例如.消息"");/script ');}最后{ conn . Dispose();conn . Close();//关闭数据库连接} } else { ClientScript .RegisterStartupScript(GetType(),'',' ' alert('请选择超过文件!');',真);} } else { ClientScript .RegisterStartupScript(GetType(),'',' ' alert('请选择要导入的“Excel!”);真);} if(!err)//加载中并没有出现错误{ //处理完成jsBlock=' scriptEndTrans('处理完成。');/script ';回应. write(JSBLock);回应flush();} else { jsBlock='scriptEndTrans('共有maxrows .' ToString()'条数据需要加载,其中有错误计数“. ToString()”条数据录入错误!');/script ';回应. write(JSBLock);回应flush();}系统。线程。线程。睡眠(1000);
结束时间=日期时间。现在;//录入完成所用时间时间跨度ts1=新的时间跨度(开始时间.蜱);时间跨度ts2=新的时间跨度(结束时间。蜱);时间跨度ts=ts2 .减法(ts1).持续时间();//取开始时间和结束时间两个时间差的绝对值字符串spanTime=ts .几个小时。' ToString()'小时ts .'分钟. ToString()'分ts .'秒. ToString()'秒;jsBlock='scriptSetTimeInfo('加载完成,共用时跨度时间' ');/script ';回应. write(JSBLock);回应flush();
}公共数据表excel报表(字符串文件名)//建立超过表链接,返回超过表数据{ //EXCEL的连接串字符串连接字符串='提供程序=微软ACE。OLEDB.12.0 '数据源=C: \\文档和设置\ \管理员\ \桌面\ \ "文件名";扩展属性=' Excel 8.0IMEX=1;//字符串sConnectionString=' Microsoft .ACE。OLEDB.4.0'//'数据源=C: \\文档和设置\ \管理员\ \桌面\ \ "文件名";//"扩展属性=" Excel 8.0IMEX=1 ';';oledb连接Objconn=新的oledb连接(SconnectionString);//建立超过的连接
//说明:程序运行到这里的时候有时会出错"未在本地计算机上注册"微软ACE。OLEDB.12.0 "提供程序",此时大多数情况下我们只需要去http://下载。微软。FFB CB-dc0c-4e 19-b0da-1463960 fdcdb/access database engine。可执行程序的扩展名下载一个AccessDatabaseEngine.exe安装即可,原因在于你的办公室没有安装接近组件objConn .open();oledb命令objCmdSelect=new oledb命令(' SELECT * FROM[sheet 1 $]',objConn);OleDbDataAdapter objadapter 1=new OleDbDataAdapter();objAdapter1 .SelectCommand=Objcmdselectdataset objdata set 1=new DataSet();objAdapter1 .填充(objDataset1,' XlDATa ');数据表dt=objDataset1 .表[0];//DataView myView=new DataView(dt);objConn .close();//关闭超过的连接返回dt;}
三、项目执行过程中的效果图展示如下:
这个是程序测试中使用的超过表格实例。
希望本文所述对大家的。网程序设计有所帮助。
版权声明:进度条在 网导入超过时的应用实例是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。