在ASP.NET中经常会遇到Excel文件导入数据库的问题,遇到数据量比较大的时候,最好显示进度条。
进度条设计是参考网上某牛人提供的代码,利用JS实现的,谢谢这个大牛了(忘记了当时记录下他的大名了,:()。具体思路:首先将后台服务器上ProgressBar.htm 页面内容(其中有html和js代码)完全读取出来,并write到前台。然后在数据导入前,添加js调用,如下:
jsBlock = "<script>BeginTrans('开始处理...');</script>";
Response.Write(jsBlock);
Response.Flush();
其次,在处理每条数据导入的过程中,添加如下js调用:
System.Threading.Thread.Sleep(20);
float cposf = 0;
cposf = 100 * i / maxrows;
int cpos = (int)cposf;
jsBlock = "<script>SetPorgressBar('" + "第" + i.ToString() + "条','" + cpos.ToString() + "');</script>";
Response.Write(jsBlock);
Response.Flush();
*******************************************************
以下是完整的实现过程......
前台.aspx部分代码:
<tr>
<td align="center" style="height: 25px; width: 100px;">父分类</td>
<td valign="middle" style="height: 25px">
<asp:TextBox ID="tbParent" runat="server" CssClass="textinput" Text="" Width="150px"></asp:TextBox>
<asp:TextBox ID="tbParentId" runat="server" CssClass="textinput" Text=""Width="19px" ></asp:TextBox>
<asp:Label ID="Label1" runat="server" Font-Bold="True" ForeColor="Red" Text="不能为空"
Visible="False"></asp:Label></td>
</tr>
<tr>
<td align="center" style="height: 24px; width: 100px;"> Excel文件</td>
<td style="height: 24px">
<asp:FileUpload ID="fuGlossaryXls" runat="server" />
<asp:Label ID="Label2" runat="server" Font-Bold="True" ForeColor="Red" Text="不能为空"
Visible="False"></asp:Label></td>
</tr>
... ... ...
<asp:Button