<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        進度條在.net導入Excel時的應用實例

        來源:懂視網 責編:小采 時間:2020-11-27 22:38:48
        文檔

        進度條在.net導入Excel時的應用實例

        進度條在.net導入Excel時的應用實例:本文實例講述了進度條在.net導入Excel時的應用,分享給大家供大家參考。具體實現方法如下: 在程序開發過程中,往往會涉及到將Excel表格導入到數據庫中的需求,而當excel表格內容很多的時候,我們往往會很難去捕捉它的執行過程進度和一些錯誤信息,此時我們便
        推薦度:
        導讀進度條在.net導入Excel時的應用實例:本文實例講述了進度條在.net導入Excel時的應用,分享給大家供大家參考。具體實現方法如下: 在程序開發過程中,往往會涉及到將Excel表格導入到數據庫中的需求,而當excel表格內容很多的時候,我們往往會很難去捕捉它的執行過程進度和一些錯誤信息,此時我們便

        本文實例講述了進度條在.net導入Excel時的應用,分享給大家供大家參考。具體實現方法如下:

        在程序開發過程中,往往會涉及到將Excel表格導入到數據庫中的需求,而當excel表格內容很多的時候,我們往往會很難去捕捉它的執行過程進度和一些錯誤信息,此時我們便可以通過以下方法去解決這些難題,具體實現過程分析如下:

        一、建立一個web應用程序,在程序中首先創建一個html文件命名為ProgressBar,文件內容如下:
        代碼如下:<html>
        <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title></title>
        <script type="text/javascript">
            //開始處理
            function BeginTrans(msg) {
                WriteText(msg);
            }
            //設置進度條進度
            function SetPorgressBar(msg, pos) {
                ProgressBar.style.width = pos + "%";
                WriteText(msg + " 已完成" + pos + "%");
            }
            //處理結束
            function EndTrans(msg) {
                if (msg == "")
                    WriteText("完成。");
                else
                    WriteText(msg);
            }
            //設置時間信息
            function SetTimeInfo(msg) {
                WriteText(msg);
            }
            // 更新文本顯示信息
            function WriteText(str) {
                var strTag = '<font face="Verdana, Arial, Helvetica" size="2" color="#ea9b02"><B>' + str + '</B></font>';
                document.getElementById("Msg2").innerHTML = strTag;
            }
        </script>
        </head>
        <body>
        <table align="center" style="height:100%">
            <tr style="height:45%"><td></td></tr>
            <tr>
                <td>
                    <div id="ProgressBarSide" style="width:300px; color:Silver;border-width:1px; border-style:Solid;">
                        <div id="ProgressBar" align="center" style="height:20px; width:0%; background-color:#316AC5;"></div>
                    </div>
                </td>
                <td>
                <div id="Msg2" style="height:16px;"></div>
                </td>
            </tr>
            <tr style="height:50%"><td></td></tr>
        </table>
        </body>
        </html>
        二、創建一個aspx頁面,前后端代碼分別如下:
        代碼如下://1.這里為了簡便,我只寫出了前端頁面中的body體部分供參考:
        <form id="forms" runat = "server">
        <table align="center" style="height:100%">
            <tr style="height:45%"><td></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>
                                                            <td>
                <asp:Button ID="Button1" runat="server" CssClass="mybotton" Text="導入" Width="60px" onclick="Button1_Click"/></td>
        </tr>
        </table>
        </form>
        //2.后端部分代碼如下:
         //這里是激發導入按鈕點擊事件
                protected void Button1_Click(object sender, EventArgs e)
                {
                    string cfilename = this.fuGlossaryXls.FileName;//獲取準備導入的文件名稱
                    if (cfilename == "")
                    {
                        Label2.Visible = true;
                        return;
                    }
                    else
                    {
                        Label2.Visible = false;
                    }
                    //////////////顯示進度/////////////////////////////////////////////////////////////////////////////
                    DateTime startTime = System.DateTime.Now;
                    DateTime endTime = System.DateTime.Now;

                    // 根據 ProgressBar.htm 顯示進度條界面
                    string templateFileName = Path.Combine(Server.MapPath("."), "ProgressBar.htm");
                    StreamReader reader = new StreamReader(@templateFileName, System.Text.Encoding.GetEncoding("gb2312"));
                    string html = reader.ReadToEnd();
                    reader.Close();
                    Response.Write(html);
                    Response.Flush();
                    System.Threading.Thread.Sleep(1000);

                    string jsBlock;
                    // 處理完成
                    jsBlock = "<script>BeginTrans('正在加載數據,請耐心等待...');</script>";
                    Response.Write(jsBlock);
                    Response.Flush();

                     string fileName = fuGlossaryXls.PostedFile.FileName.Substring(fuGlossaryXls.PostedFile.FileName.LastIndexOf("\\") + 1);//獲取準備導入文件的文件名
                     string suffix = fileName.Substring(fileName.LastIndexOf(".") + 1);//獲取準備導入文件的后綴名
                    
                     System.Threading.Thread.Sleep(200);

                     int maxrows = 0;//用來記錄需要加載的數據總行數
                     bool err = false;//用來記錄加載狀態
                     int errcount = 0;//用來記錄加載錯誤行數
                     if (fuGlossaryXls.HasFile)//判斷當前是否有選取文件
                     {
                         if (suffix == "xlsx")
                         {
                             DataTable dt = ExcelImport(fileName);
                             for (int i = 0; i < dt.Rows.Count; i++)
                             {
                                 maxrows++;
                             }
                             //////////拓展////////////////////////////////////////////////////////
                             //DataView myView = new DataView(dt);
                             //myView.RowFilter = "name is not null";
                             //int t = myView.Count;//獲取滿足RowFilter 條件的數據行
                             //////////拓展////////////////////////////////////////////////////////
                             string sqlconnect = "Data Source=.;Initial Catalog=test;User ID=sa;Password=123456;";//本地數據庫鏈接
                             SqlConnection conn = new SqlConnection(sqlconnect);
                             SqlTransaction myTrans = null;
                             try
                             {
                                 SqlCommand cmd = new SqlCommand(null, conn);
                                 conn.Open();
                                 myTrans = conn.BeginTransaction();
                                 cmd.Transaction = myTrans;
                                 cmd.CommandText = "delete from test";
                                 cmd.ExecuteNonQuery();//首先執行清除表內容操作
                                 for (int j = 0; j < dt.Rows.Count; j++)//循環向數據庫中插入excel數據
                                 {
                                     if (string.IsNullOrEmpty(dt.Rows[j][0].ToString()))
                                     {
                                         jsBlock = "<script>EndTrans('第" + j.ToString() + "行數據寫入錯誤。');</script>";
                                         Response.Write(jsBlock);
                                         Response.Flush();
                                         err = true;
                                         errcount++;
                                     }
                                     else
                                     {
                                         cmd.CommandText = string.Format("insert into test values('{0}','{1}','{2}','{3}')", dt.Rows[j][0], dt.Rows[j][1], dt.Rows[j][2], dt.Rows[j][3]);
                                         cmd.ExecuteNonQuery();//逐行向表中插入數據,注意字段的對應
                                     }
                                     System.Threading.Thread.Sleep(1000);
                                     float cposf = 0;
                                     cposf = 100 * (j + 1) / maxrows;
                                     int cpos = (int)cposf;
                                     jsBlock = "<script>SetPorgressBar('已加載到第" + (j + 1).ToString() + "條','" + cpos.ToString() + "');</script>";
                                     Response.Write(jsBlock);
                                     Response.Flush();
                                 }
                                 myTrans.Commit();//提交
                             }
                             catch (Exception ex)
                             {
                                 myTrans.Rollback();//回滾
                                 ClientScript.RegisterStartupScript(this.GetType(), "alert", "<script>alert('" + ex.Message + "');</script>");
                             }
                             finally
                             {
                                 conn.Dispose();
                                 conn.Close();//關閉數據庫連接
                             }
                         }
                         else
                         {
                             ClientScript.RegisterStartupScript(GetType(), "", "alert('請選擇Excel文件!');", true);
                         }
                     }
                     else
                     {
                         ClientScript.RegisterStartupScript(GetType(), "", "alert('請選擇要導入的Excel!');", true);
                     }
                     if (!err)//加載中并沒有出現錯誤
                     {
                         // 處理完成
                         jsBlock = "<script>EndTrans('處理完成。');</script>";
                         Response.Write(jsBlock);
                         Response.Flush();
                     }
                     else
                     {
                         jsBlock = "<script>EndTrans('共有"+maxrows.ToString()+"條數據需要加載,其中 有"+errcount.ToString()+"條數據錄入錯誤!');</script>";
                         Response.Write(jsBlock);
                         Response.Flush();
                     }
                     System.Threading.Thread.Sleep(1000);

                     endTime = DateTime.Now;//錄入完成所用時間
                     TimeSpan ts1 = new TimeSpan(startTime.Ticks);
                     TimeSpan ts2 = new TimeSpan(endTime.Ticks);
                     TimeSpan ts = ts2.Subtract(ts1).Duration(); //取開始時間和結束時間兩個時間差的絕對值
                     String spanTime = ts.Hours.ToString() + "小時" + ts.Minutes.ToString() + "分" + ts.Seconds.ToString() + "秒";
                     jsBlock = "<script>SetTimeInfo('加載完成,共用時" + spanTime + "');</script>";
                     Response.Write(jsBlock);
                     Response.Flush();

                }
                public DataTable ExcelImport(string fileName) //建立Excel表鏈接,返回Excel表數據
                {
                        //EXCEL 的連接串
                        string sConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" +
                        "Data Source=C:\\Documents and Settings\\Administrator\\桌面\\" + fileName + ";" +
                        "Extended Properties='Excel 8.0;IMEX=1';";
                        //string sConnectionString = "Microsoft.ACE.OLEDB.4.0;" +
                        //"Data Source=C:\\Documents and Settings\\Administrator\\桌面\\" + fileName + ";" +
                        //"Extended Properties='Excel 8.0;IMEX=1';";
                        OleDbConnection objConn = new OleDbConnection(sConnectionString);//建立EXCEL的連接

        //說明:程序運行到這里的時候有時會出錯“未在本地計算機上注冊“Microsoft.ACE.OLEDB.12.0”提供程序”,此時大多數情況下我們只需要去http://download.microsoft.com/download/7/0/3/703ffbcb-dc0c-4e19-b0da-1463960fdcdb/AccessDatabaseEngine.exe下載一個AccessDatabaseEngine.exe安裝即可,原因在于你的office沒有安裝ACCESS組件
                        objConn.Open();
                        OleDbCommand objCmdSelect = new OleDbCommand("SELECT * FROM [Sheet1$]", objConn);
                        OleDbDataAdapter objAdapter1 = new OleDbDataAdapter();
                        objAdapter1.SelectCommand = objCmdSelect;
                        DataSet objDataset1 = new DataSet();
                        objAdapter1.Fill(objDataset1, "XLData");
                        DataTable dt = objDataset1.Tables[0];
                        //DataView myView = new DataView(dt);
                        objConn.Close();//關閉EXCEL的連接
                        return dt;
        }

        三、項目執行過程中的效果圖展示如下:


         

         

         

         

         

         


        這個是程序測試中使用的excel表格實例。

        希望本文所述對大家的.net程序設計有所幫助。

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        進度條在.net導入Excel時的應用實例

        進度條在.net導入Excel時的應用實例:本文實例講述了進度條在.net導入Excel時的應用,分享給大家供大家參考。具體實現方法如下: 在程序開發過程中,往往會涉及到將Excel表格導入到數據庫中的需求,而當excel表格內容很多的時候,我們往往會很難去捕捉它的執行過程進度和一些錯誤信息,此時我們便
        推薦度:
        標簽: excel 導入 進度條
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 亚洲图片激情小说| 亚洲AV永久纯肉无码精品动漫| 亚洲一卡2卡4卡5卡6卡在线99 | 国产亚洲视频在线观看网址| 18禁超污无遮挡无码免费网站国产 | tom影院亚洲国产一区二区| 久久精品国产免费观看| 亚洲av片不卡无码久久| 成年女人看片免费视频播放器| 国产精品亚洲综合久久| 韩国二级毛片免费播放| 五月天婷婷免费视频| 亚洲中文久久精品无码ww16| 久草免费福利在线| 久久久久亚洲精品无码系列| 95免费观看体验区视频| 亚洲人成电影院在线观看| 啦啦啦手机完整免费高清观看| 国产成人综合久久精品亚洲| 国产国拍亚洲精品福利| 久久久精品午夜免费不卡| 亚洲精品福利网站| 日韩免费视频播播| 国产特黄特色的大片观看免费视频| 国产A在亚洲线播放| 麻豆视频免费观看| 亚洲av乱码中文一区二区三区| 亚洲一区二区三区在线视频| 国产精成人品日日拍夜夜免费| 亚洲国产综合精品| 亚洲成AⅤ人影院在线观看| 国产在线一区二区综合免费视频| 亚洲免费在线视频播放| 国产成人无码区免费A∨视频网站 国产成人涩涩涩视频在线观看免费 | 亚洲国产一成人久久精品| 黄色永久免费网站| 黄色一级视频免费观看| 亚洲国产人成在线观看69网站| 手机在线毛片免费播放| 国产免费人成视频尤勿视频 | 国产极品粉嫩泬免费观看|