ASP.NET操作Excel---上傳Excel後解析Excel檔案
阿新 • • 發佈:2019-01-03
<tr> <td width="16%" class="c_tdleft"> 上傳Excel檔案: </td> <td width="70%" class="c_td"> <asp:FileUpload ID="FU_Excel" runat="server" Width="202" /> <asp:Button ID="Button2" runat="server" Text="匯入Excel資料" onclick="Button2_Click" /> <asp:Label ID="lblMessage" runat="server" Text=""></asp:Label> </td> </tr>
//一個固定的訪問Excel方法 //訪問Excel檔案 public static DataSet ExcelToDS(string Path) { string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + System.Web.HttpContext.Current.Server.MapPath(Path) + ";" + "Extended Properties=Excel 8.0;"; OleDbConnection conn = new OleDbConnection(strConn); conn.Open(); string strExcel = ""; OleDbDataAdapter myCommand = null; DataSet ds = null; strExcel = "select * from [sheet1$]"; myCommand = new OleDbDataAdapter(strExcel, strConn); ds = new DataSet(); myCommand.Fill(ds, "table1"); return ds; } //上傳Excel到伺服器之後,再解析到伺服器顯示資料 protected void Button2_Click(object sender, EventArgs e) { if (FU_Excel.HasFile) { //判斷檔案是否小於10Mb if (FU_Excel.PostedFile.ContentLength < 10485760) { try { //上傳檔案並指定上傳目錄的路徑 FU_Excel.PostedFile.SaveAs(Server.MapPath("~/admin/TelePhoneExcel/") //在伺服器的路徑,上傳Excel的路徑 + FU_Excel.FileName); /*注意->這裡為什麼不是:FileUpLoad1.PostedFile.FileName * 而是:FileUpLoad1.FileName? * 前者是獲得客戶端完整限定(客戶端完整路徑)名稱 * 後者FileUpLoad1.FileName只獲得檔名. */ //當然上傳語句也可以這樣寫(貌似廢話): //FileUpLoad1.SaveAs(@"D:\"+FileUpLoad1.FileName); lblMessage.Text = "上傳成功!"; } catch (Exception ex) { lblMessage.Text = "出現異常,無法上傳!"; //lblMessage.Text += ex.Message; } } else { lblMessage.Text = "上傳檔案不能大於10MB!"; } } else { lblMessage.Text = "尚未選擇檔案!"; } //解析Excel DataSet ds = new DataSet(); string excelPath = "../TelePhoneExcel/"+FU_Excel.FileName; //獲取Excel路徑 ds = buss.ExcelToDS(excelPath); //呼叫上面那個方法解析Excel string telePhone=""; for (int i = 0; i < ds.Tables[0].Rows.Count; i++) { telePhone+= ds.Tables[0].Rows[i][0].ToString()+",";//取第i行的第0列的值 } txtProduct_name.Text = telePhone.Substring(0,telePhone.Length-1); //擷取逗號 TextBox2.Text = ds.Tables[0].Rows.Count.ToString(); //手機號碼個數 }