public void F_LoadExcel() { //引用//ReferenceCode/ExcelColumn.cs的類別 CustomerRate GetExcelDefine = new CustomerRate(); //導入匯入table GetExcelDefine.RateDT(); //上傳路徑 String savePath = Server.MapPath(@"~\ExcelUpLoad\Finance\CustomerRate"); string str頁簽名稱 = "", str三巡時間年 = "", str三巡時間月 = "", str三巡時間巡 = ""; DataTable D_table = new DataTable("Excel"); //建立Excel欄位 D_table = GetExcelDefine.CustomerRateDataTable.Copy(); DataTable D_errortable = new DataTable("Error"); //實際顯示欄位 int Excel欄位數 = D_table.Columns.Count - 2; int iyear = 0; if (文件上傳FU.HasFile) { string fileName = 文件上傳FU.FileName; Session["FileName"] = fileName; savePath = savePath + fileName; 文件上傳FU.SaveAs(savePath); bool bCheckTime = true, bCheckDB = true; #region ErrorTable // D_errortable.Columns.Add("SheetName"); D_errortable.Columns.Add("Error"); //D_errortable.Columns.Add("Error"); #endregion if (fileName.Substring(fileName.Length - 4, 4).ToUpper() == "XLSX") { XSSFWorkbook workbook = new XSSFWorkbook(文件上傳FU.FileContent); //==只能讀取 System.IO.Stream for (int x = 0; x < workbook.NumberOfSheets; x++) { XSSFSheet u_sheet = (XSSFSheet)workbook.GetSheetAt(x); //-- 0表示:第一個 worksheet工作表 XSSFRow headerRow = (XSSFRow)u_sheet.GetRow(3); //-- Excel 表頭列 //抓第一行資料 IRow DateRow = (IRow)u_sheet.GetRow(0); //-- v.1.2.4版修改 //Session["Date"] = SearchTB.Text; str頁簽名稱 = u_sheet.SheetName.ToString(); //str三巡時間 = DateRow.GetCell(3).ToString(); if ("三巡外匯表" == str頁簽名稱) { try { if (string.IsNullOrEmpty(DateRow.Cells[5].ToString())) { bCheckTime = false; } str三巡時間年 = DateRow.Cells[5].ToString(); if (string.IsNullOrEmpty(DateRow.Cells[7].ToString())) { bCheckTime = false; } str三巡時間月 = DateRow.Cells[7].ToString(); if (string.IsNullOrEmpty(DateRow.Cells[9].ToString())) { bCheckTime = false; } str三巡時間巡 = DateRow.Cells[9].ToString(); int.TryParse(str三巡時間年, out iyear); if (iyear > 0) { iyear = iyear + 1911; str三巡時間年 = iyear.ToString(); } else { bCheckTime = false; } if (bCheckTime) { bCheckDB = F_CheckData(str三巡時間巡, str三巡時間年 + str三巡時間月); } } catch (Exception) { //日期確認失敗 bCheckTime = false; } //執行程式 if (bCheckTime && bCheckDB) { //i=1第二列開始 for (int i = 1; i <= u_sheet.LastRowNum; i++) //-- 每一列做迴圈 { //--不包含 Excel表頭列的 "其他資料列" IRow row = (IRow)u_sheet.GetRow(i); F_資料確認(D_table, D_errortable, str頁簽名稱, row); } } else if (!bCheckTime) { F_ErrorShow("三巡日期錯誤"); } } //-- 釋放 NPOI的資源 u_sheet = null; } //-- 釋放 NPOI的資源 workbook = null; } else { HSSFWorkbook workbook = new HSSFWorkbook(文件上傳FU.FileContent); //==只能讀取 System.IO.Stream for (int x = 0; x < workbook.NumberOfSheets; x++) { HSSFSheet u_sheet = (HSSFSheet)workbook.GetSheetAt(x); //-- 0表示:第一個 worksheet工作表 HSSFRow headerRow = (HSSFRow)u_sheet.GetRow(3); //-- Excel 表頭列 IRow DateRow = (IRow)u_sheet.GetRow(2); //-- v.1.2.4版修改 str頁簽名稱 = u_sheet.SheetName.ToString(); if ("三巡外匯表" == str頁簽名稱) { try { if (string.IsNullOrEmpty(DateRow.Cells[5].ToString())) { bCheckTime = false; } //str三巡時間年 = DateRow.Cells[5].ToString(); if (string.IsNullOrEmpty(DateRow.Cells[7].ToString())) { bCheckTime = false; } str三巡時間月 = DateRow.Cells[7].ToString(); if (string.IsNullOrEmpty(DateRow.Cells[9].ToString())) { bCheckTime = false; } str三巡時間巡 = DateRow.Cells[9].ToString(); int.TryParse(str三巡時間年, out iyear); if (iyear > 0) { iyear = iyear + 1911; str三巡時間年 = iyear.ToString(); } else { bCheckTime = false; } if (bCheckTime) { bCheckTime = F_CheckData(str三巡時間巡, str三巡時間年 + str三巡時間月); } } catch (Exception) { //日期確認失敗 bCheckTime = false; } //執行程式 if (bCheckTime) { //i=1第二列開始 for (int i = 1; i <= u_sheet.LastRowNum; i++) //-- 每一列做迴圈 { //--不包含 Excel表頭列的 "其他資料列" IRow row = (IRow)u_sheet.GetRow(i); F_資料確認(D_table, D_errortable, str頁簽名稱, row); } } else { F_ErrorShow("三巡日期錯誤"); } } //-- 釋放 NPOI的資源 u_sheet = null; } //-- 釋放 NPOI的資源 workbook = null; } } else { F_Show(false); F_ErrorShow("???? ...... 請先挑選檔案之後,再來上傳"); } // FileUpload使用的第一個 if判別式 if (D_table.Rows.Count > 0) { Session["Excel"] = D_table; Session["三巡時間年"] = iyear.ToString(); Session["三巡時間月"] = str三巡時間月; Session["str三巡時間巡"] = str三巡時間巡; YearLB.Text = iyear.ToString(); MonthLB.Text = str三巡時間月; switch (str三巡時間巡) { case "1": 巡LB.Text = "上巡"; break; case "2": 巡LB.Text = "中巡"; break; default: 巡LB.Text = "下巡"; break; } F_Show(true); DataGV.DataSource = D_table; DataGV.DataBind(); } else { Session["Excel"] = null; } if (D_errortable.Rows.Count > 0) { Session["ExcelError"] = D_errortable; } else { Session["ExcelError"] = null; ErrorGV.DataSource = null; ErrorGV.DataBind(); } }
//If this code does not exist in the file, add the code into the file after the following line: protected void CheckBT_Click(object sender, EventArgs e) { ////引用//ReferenceCode/ExcelColumn.cs的類別 //ExcelImportTemplate GetExcelDefine = new ExcelImportTemplate(); ////建立匯入table //GetExcelDefine.F_ImportTable(); ////上傳路徑 //// 根目錄/路徑(~/路徑) //String savePath = Server.MapPath(@"~\ExcelUpLoad\Sales\AMZForcast"); //DataTable D_table = new DataTable("Excel"); ////建立Excel欄位 //D_table = GetExcelDefine.Dt1.Copy(); //DataTable D_errortable = new DataTable("Error"); ////實際顯示欄位 //int Excel欄位數 = D_table.Columns.Count - 2; if ((upload_file.PostedFile != null) && (upload_file.PostedFile.ContentLength > 0)) { string fileName = System.IO.Path.GetFileName(upload_file.PostedFile.FileName); string LocationFiled = Server.MapPath(@"~\ExcelUpLoad\"); string str頁簽名稱 = ""; try { DataTable D_table = new DataTable("Excel"); DataTable D_errortable = new DataTable("Error"); string 副檔名 = System.IO.Path.GetExtension(fileName); DataTable DtColumnDefine = GetDBData("欄位定義"); if (Session["DataDefine"] != null) { Session.Remove("DataDeffine"); } Session["DataDeffine"] = DtColumnDefine; //指定Import Sheet Name string StrSheetNameCheck = ""; Boolean BCheck = false; int I資料起始欄, I資料起始列; #region 基本資料欄位 //D_table.Columns.Add("預設資料"); #endregion #region ErrorTable //D_errortable.Columns.Add("SheetName"); //D_errortable.Columns.Add("Dept"); D_errortable.Columns.Add("Error"); #endregion // foreach (DataRow Dr in DtColumnDefine.Rows) { D_table.Columns.Add(Dr["資料名稱中文"].ToString()); } if (DtColumnDefine.Rows.Count > 0) { StrSheetNameCheck = (string.IsNullOrEmpty(DtColumnDefine.Rows[0]["指定頁籤名稱"].ToString()))?"": DtColumnDefine.Rows[0]["指定頁籤名稱"].ToString(); if (!Boolean.TryParse(DtColumnDefine.Rows[0]["是否指定頁籤"].ToString(), out BCheck)) { BCheck = false; } if (!int.TryParse(DtColumnDefine.Rows[0]["資料起始列"].ToString(), out I資料起始列)) { I資料起始列 = 1; } if (!int.TryParse(DtColumnDefine.Rows[0]["資料起始欄"].ToString(), out I資料起始欄)) { I資料起始欄 = 0; } while (File.Exists(LocationFiled + fileName)) { fileName = fileName.Substring(0, fileName.Length - 副檔名.Length) + DateTime.Now.ToString("yyyyMMddhhmmssfff") + 副檔名; } upload_file.PostedFile.SaveAs(LocationFiled + fileName); if (副檔名.ToUpper() == ".XLSX") { XSSFWorkbook workbook = new XSSFWorkbook(upload_file.PostedFile.InputStream); //==只能讀取 System.IO.Stream for (int x = 0; x < workbook.NumberOfSheets; x++) { //-- 0表示:第一個 worksheet工作表 XSSFSheet u_sheet = (XSSFSheet)workbook.GetSheetAt(x); str頁簽名稱 = u_sheet.SheetName.ToString(); //檢查是否有要對應資料 if (BCheck && StrSheetNameCheck != str頁簽名稱) { continue; } //-- Excel 表頭列 XSSFRow headerRow = (XSSFRow)u_sheet.GetRow(I資料起始列); IRow DateRow = (IRow)u_sheet.GetRow(I資料起始列); //-- for迴圈的「啟始值」要加一,表示不包含 Excel表頭列 // for (int i = (u_sheet.FirstRowNum + 1); i <= u_sheet.LastRowNum; i++) //-- 每一列做迴圈 //i=1第二列開始 for (int i = I資料起始列; i <= u_sheet.LastRowNum; i++) { //--不包含 Excel表頭列的 "其他資料列" IRow row = (IRow)u_sheet.GetRow(i); #region 關鍵資料沒有不執行,避免USER亂填EXCEL string Str款號 = ""; try { Str款號 = row.GetCell(1).ToString(); } catch (Exception) { } if (string.IsNullOrEmpty(Str款號)) { continue; } #endregion F_資料確認(ref D_table, ref D_errortable, str頁簽名稱, row, DtColumnDefine, i, I資料起始欄); } //-- 釋放 NPOI的資源 u_sheet = null; } //-- 釋放 NPOI的資源 workbook = null; } else { HSSFWorkbook workbook = new HSSFWorkbook(upload_file.PostedFile.InputStream); //==只能讀取 System.IO.Stream for (int x = 0; x < workbook.NumberOfSheets; x++) { HSSFSheet u_sheet = (HSSFSheet)workbook.GetSheetAt(x); //-- 0表示:第一個 worksheet工作表 HSSFRow headerRow = (HSSFRow)u_sheet.GetRow(I資料起始列); //-- Excel 表頭列 IRow DateRow = (IRow)u_sheet.GetRow(I資料起始列); //-- v.1.2.4版修改 //檢查是否有要對應資料 if (BCheck && StrSheetNameCheck != str頁簽名稱) { continue; } str頁簽名稱 = u_sheet.SheetName.ToString(); for (int i = I資料起始列; i <= u_sheet.LastRowNum; i++) //-- 每一列做迴圈 { //--不包含 Excel表頭列的 "其他資料列" IRow row = (IRow)u_sheet.GetRow(i); #region 關鍵資料沒有不執行,避免USER亂填EXCEL string Str款號 = ""; try { Str款號 = row.GetCell(1).ToString(); } catch (Exception) { } if (string.IsNullOrEmpty(Str款號)) { continue; } #endregion F_資料確認(ref D_table, ref D_errortable, str頁簽名稱, row, DtColumnDefine, i, I資料起始欄); } //-- 釋放 NPOI的資源 u_sheet = null; } //-- 釋放 NPOI的資源 workbook = null; } //--錯誤資料顯示 if (D_errortable.Rows.Count > 0) { DataView D_View3 = new DataView(D_errortable); ErrorGV.DataSource = D_View3; ErrorGV.DataBind(); } if (D_table.Rows.Count > 0) { GridView1.DataSource = D_table; GridView1.DataBind(); if (D_errortable.Rows.Count == 0) { Session["ImportExcelData"] = D_table; } } } else { F_ErrorShow("Please contact Mis : Import format is not defined"); } } catch (Exception ex) { F_ErrorShow($"Error: {ex.Message}"); } } else { F_ErrorShow("Please select a file to upload."); } }
protected void CheckBT_Click(object sender, EventArgs e) { if ((upload_file.PostedFile != null) && (upload_file.PostedFile.ContentLength > 0)) { string fileName = System.IO.Path.GetFileName(upload_file.PostedFile.FileName); string LocationFiled = Server.MapPath(Str上傳路徑); string str頁簽名稱 = ""; try { DataTable D_table = new DataTable("Excel"); DataTable D_errortable = new DataTable("Error"); DataTable DtCula = new DataTable("CulTable"); List <ColorClass> colorClasses = new List <ColorClass>(); string 副檔名 = System.IO.Path.GetExtension(fileName); if (Session["DataDefine"] != null) { Session.Remove("DataDeffine"); } int I資料起始列; #region 基本資料欄位 #endregion #region ErrorTable //D_errortable.Columns.Add("SheetName"); //D_errortable.Columns.Add("Dept"); D_errortable.Columns.Add("Error"); #endregion // //foreach (DataRow Dr in DtColumnDefine.Rows) //{ // D_table.Columns.Add(Dr["資料名稱中文"].ToString()); //} I資料起始列 = 0; while (File.Exists(LocationFiled + fileName)) { fileName = fileName.Substring(0, fileName.Length - 副檔名.Length) + DateTime.Now.ToString("yyyyMMddhhmmssfff") + 副檔名; } upload_file.PostedFile.SaveAs(LocationFiled + fileName); if (副檔名.ToUpper() == ".XLSX") { XSSFWorkbook workbook = new XSSFWorkbook(upload_file.PostedFile.InputStream); //==只能讀取 System.IO.Stream for (int x = 0; x < workbook.NumberOfSheets; x++) { //-- 0表示:第一個 worksheet工作表 XSSFSheet u_sheet = (XSSFSheet)workbook.GetSheetAt(x); str頁簽名稱 = u_sheet.SheetName.ToString(); //-- Excel 表頭列 XSSFRow headerRow = (XSSFRow)u_sheet.GetRow(I資料起始列); IRow DateRow = (IRow)u_sheet.GetRow(I資料起始列); //i=1第二列開始 for (int i = I資料起始列; i <= u_sheet.LastRowNum; i++) { //--不包含 Excel表頭列的 "其他資料列" IRow row = (IRow)u_sheet.GetRow(i); F_資料確認(ref D_table, ref D_errortable, ref DtCula, row, i, ref colorClasses); } //-- 釋放 NPOI的資源 u_sheet = null; } //-- 釋放 NPOI的資源 workbook = null; } else { HSSFWorkbook workbook = new HSSFWorkbook(upload_file.PostedFile.InputStream); //==只能讀取 System.IO.Stream for (int x = 0; x < workbook.NumberOfSheets; x++) { HSSFSheet u_sheet = (HSSFSheet)workbook.GetSheetAt(x); //-- 0表示:第一個 worksheet工作表 HSSFRow headerRow = (HSSFRow)u_sheet.GetRow(I資料起始列); //-- Excel 表頭列 IRow DateRow = (IRow)u_sheet.GetRow(I資料起始列); //-- v.1.2.4版修改 str頁簽名稱 = u_sheet.SheetName.ToString(); for (int i = I資料起始列; i <= u_sheet.LastRowNum; i++) //-- 每一列做迴圈 { //--不包含 Excel表頭列的 "其他資料列" IRow row = (IRow)u_sheet.GetRow(i); F_資料確認(ref D_table, ref D_errortable, ref DtCula, row, i, ref colorClasses); } //-- 釋放 NPOI的資源 u_sheet = null; } //-- 釋放 NPOI的資源 workbook = null; } //--錯誤資料顯示 if (D_errortable.Rows.Count > 0) { DataView D_View3 = new DataView(D_errortable); ErrorGV.DataSource = D_View3; ErrorGV.DataBind(); } if (D_table.Rows.Count > 0) { int i顏色數量 = 0; int.TryParse(匯入筆數DDL.SelectedValue, out i顏色數量); var DistinctColor = ListColor.Distinct().ToList(); if (DistinctColor.Count() > 0 && i顏色數量 > 0) { using (DataTable dt = DtCula.Clone()) { if (i顏色數量 == 4) { dt.Columns.RemoveAt(3); dt.Columns.RemoveAt(2); } if (i顏色數量 >= 2) { dt.Columns.RemoveAt(1); } dt.Columns[0].ColumnName = "單一顏色"; foreach (var item in DistinctColor) { try { DataRow dr = dt.NewRow(); dr[0] = item; DataView dv1 = new DataView(DtCula), dv2 = new DataView(DtCula), dv3 = new DataView(DtCula), dv4 = new DataView(DtCula); dv1.RowFilter = $" {DtCula.Columns[0].ColumnName} = '{item}'"; if (i顏色數量 >= 2) { dv2.RowFilter = $" {DtCula.Columns[1].ColumnName} = '{item}'"; } else { dv2.Dispose(); } if (i顏色數量 == 4) { dv3.RowFilter = $" {DtCula.Columns[2].ColumnName} = '{item}'"; dv4.RowFilter = $" {DtCula.Columns[3].ColumnName} = '{item}'"; } else { dv3.Dispose(); dv4.Dispose(); } for (int i = i顏色數量; i < dt.Columns.Count + i顏色數量 - 1; i++) { try { int x = 0; if (dv1.Count > 0) { x = F_filter單一顏色數量(dv1, i, x); } if (dv2.Count > 0) { x = F_filter單一顏色數量(dv2, i, x); } if (dv3.Count > 0) { x = F_filter單一顏色數量(dv3, i, x); } if (dv4.Count > 0) { x = F_filter單一顏色數量(dv4, i, x); } dr[i - i顏色數量 + 1] = x; } catch (Exception ex2) { F_ErrorShow($"Error: {ex2.Message}"); } } dt.Rows.Add(dr); } catch (Exception ex1) { F_ErrorShow($"Error: {ex1.Message}"); } } if (dt.Rows.Count > 0) { GridView3.DataSource = dt; GridView3.DataBind(); using (XLWorkbook wb = new XLWorkbook()) { wb.Worksheets.Add(DtCula, "AMZ_PO_Qty"); wb.Worksheets.Add(dt, "AMZ_Color_Qty"); Response.Clear(); Response.Buffer = true; Response.Charset = ""; Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; Response.AddHeader("content-disposition", string.Format("attachment;filename={0}.xlsx", "AMZ_PO")); using (MemoryStream MyMemoryStream = new MemoryStream()) { wb.SaveAs(MyMemoryStream); MyMemoryStream.WriteTo(Response.OutputStream); Response.Flush(); Response.End(); } } } } } } } catch (Exception ex) { F_ErrorShow($"Error: {ex.Message}"); } } }
//If this code does not exist in the file, add the code into the file after the following line: protected void CheckBT_Click(object sender, EventArgs e) { if ((upload_file.PostedFile != null) && (upload_file.PostedFile.ContentLength > 0)) { string fileName = System.IO.Path.GetFileName(upload_file.PostedFile.FileName); string LocationFiled = Server.MapPath(Str上傳路徑); string str頁簽名稱 = ""; try { DataTable D_table = new DataTable("Excel"); DataTable D_errortable = new DataTable("Error"); string 副檔名 = System.IO.Path.GetExtension(fileName); int I資料起始列 = 1; #region 基本資料欄位 D_table.Columns.Add("款號"); D_table.Columns.Add("地區"); D_table.Columns.Add("顏色"); D_table.Columns.Add("Size"); DataColumn Col數量 = new DataColumn("數量"); Col數量.DataType = System.Type.GetType("System.Int32"); D_table.Columns.Add(Col數量); #endregion #region ErrorTable D_errortable.Columns.Add("Error"); #endregion // if (副檔名.ToUpper() == ".XLSX") { XSSFWorkbook workbook = new XSSFWorkbook(upload_file.PostedFile.InputStream); //==只能讀取 System.IO.Stream for (int x = 0; x < workbook.NumberOfSheets; x++) { //-- 0表示:第一個 worksheet工作表 XSSFSheet u_sheet = (XSSFSheet)workbook.GetSheetAt(x); str頁簽名稱 = u_sheet.SheetName.ToString(); //-- Excel 表頭列 XSSFRow headerRow = (XSSFRow)u_sheet.GetRow(I資料起始列); IRow DateRow = (IRow)u_sheet.GetRow(0); //-- for迴圈的「啟始值」要加一,表示不包含 Excel表頭列 // for (int i = (u_sheet.FirstRowNum + 1); i <= u_sheet.LastRowNum; i++) //-- 每一列做迴圈 //i=1第二列開始 for (int i = I資料起始列; i <= u_sheet.LastRowNum; i++) { //--不包含 Excel表頭列的 "其他資料列" IRow row = (IRow)u_sheet.GetRow(i); #region 關鍵資料沒有不執行,避免USER亂填EXCEL string Str款號 = ""; try { Str款號 = row.GetCell(0).ToString(); } catch (Exception) { } if (string.IsNullOrEmpty(Str款號)) { continue; } #endregion F_資料確認(ref D_table, ref D_errortable, str頁簽名稱, row, i, DateRow); } //-- 釋放 NPOI的資源 u_sheet = null; } //-- 釋放 NPOI的資源 workbook = null; } else { HSSFWorkbook workbook = new HSSFWorkbook(upload_file.PostedFile.InputStream); //==只能讀取 System.IO.Stream for (int x = 0; x < workbook.NumberOfSheets; x++) { HSSFSheet u_sheet = (HSSFSheet)workbook.GetSheetAt(x); //-- 0表示:第一個 worksheet工作表 HSSFRow headerRow = (HSSFRow)u_sheet.GetRow(I資料起始列); //-- Excel 表頭列 IRow DateRow = (IRow)u_sheet.GetRow(0); //-- v.1.2.4版修改 //檢查是否有要對應資料 str頁簽名稱 = u_sheet.SheetName.ToString(); for (int i = I資料起始列; i <= u_sheet.LastRowNum; i++) //-- 每一列做迴圈 { //--不包含 Excel表頭列的 "其他資料列" IRow row = (IRow)u_sheet.GetRow(i); #region 關鍵資料沒有不執行,避免USER亂填EXCEL string Str款號 = ""; try { Str款號 = row.GetCell(0).ToString(); } catch (Exception) { } if (string.IsNullOrEmpty(Str款號)) { continue; } #endregion F_資料確認(ref D_table, ref D_errortable, str頁簽名稱, row, i, DateRow); } //-- 釋放 NPOI的資源 u_sheet = null; } //-- 釋放 NPOI的資源 workbook = null; } //--錯誤資料顯示 if (D_errortable.Rows.Count > 0) { DataView D_View3 = new DataView(D_errortable); } if (D_table.Rows.Count > 0) { if (D_errortable.Rows.Count == 0) { ReportViewer1.Visible = true; ReportViewer1.ProcessingMode = ProcessingMode.Local; ReportDataSource source = new ReportDataSource("AMZ_Po", D_table); ReportViewer1.LocalReport.DataSources.Clear(); if (SumCB.Checked) { ReportViewer1.LocalReport.ReportPath = @"ReportSource\Sales\ReportSales027.rdlc"; } else { ReportViewer1.LocalReport.ReportPath = @"ReportSource\Sales\ReportSales027_V2.rdlc"; } ReportViewer1.LocalReport.DisplayName = "AMZ_Po拆分"; ReportViewer1.LocalReport.DataSources.Add(source); ReportViewer1.DataBind(); ReportViewer1.LocalReport.Refresh(); ErrorGV.Visible = false; } else { ErrorGV.DataSource = D_errortable; ErrorGV.DataBind(); ErrorGV.Visible = true; } } } catch (Exception ex) { F_ErrorShow($"Error: {ex.Message}"); } } else { F_ErrorShow("Please select a file to upload."); } }
protected void SearchBT_Click(object sender, EventArgs e) { Session.Remove("DT正確"); Session.Remove("DT異常要處理資料"); using (DataTable DT確認資料 = DbInit("")) { if (DT確認資料.Rows.Count > 0) { UpDateBT.Visible = false; UpdateGV.Visible = false; ErrorGV.Visible = false; ErrorLB.Visible = false; using (DataTable DT正確資料 = new DataTable(), DT異常要處理資料 = new DataTable(), DT異常資料 = new DataTable()) { DT正確資料.Columns.Add("sam_nbr"); DT正確資料.Columns.Add("cus_style_no"); DT異常資料.Columns.Add("搜尋單號"); DT異常資料.Columns.Add("sam_nbr"); DT異常資料.Columns.Add("Error"); DT異常要處理資料.Columns.Add("搜尋單號"); DT異常要處理資料.Columns.Add("sam_nbr"); DT異常要處理資料.Columns.Add("Error"); foreach (DataRow item in DT確認資料.Rows) { try { DataRow DR正確 = DT正確資料.NewRow(), DR異常 = DT異常資料.NewRow(), DR異常要處理資料 = DT異常要處理資料.NewRow(); //有款號有借出紀錄 if (!string.IsNullOrEmpty(item["cus_style_no"].ToString()) && (item["借出狀態"].ToString() == "30" || item["借出狀態"].ToString() == "40")) { DR正確["sam_nbr"] = item["sam_nbr"].ToString(); DR正確["cus_style_no"] = item["cus_style_no"].ToString(); DT正確資料.Rows.Add(DR正確); } //沒有打樣單 else { if (string.IsNullOrEmpty(item["cus_style_no"].ToString())) { DR異常["搜尋單號"] = item["打樣單號"].ToString(); DR異常["sam_nbr"] = ""; DR異常["Error"] = "沒有打樣單資料"; DT異常資料.Rows.Add(DR異常); } //有借出紀錄未歸還 else { if (!string.IsNullOrEmpty(item["借出狀態"].ToString())) { DR異常要處理資料["搜尋單號"] = item["打樣單號"].ToString(); DR異常要處理資料["sam_nbr"] = item["sam_nbr"].ToString(); DR異常要處理資料["Error"] = "有借出狀態不是打樣室歸還,或TD借出,狀態:" + item["狀態"].ToString(); DT異常要處理資料.Rows.Add(DR異常要處理資料); } else { DR異常["搜尋單號"] = item["打樣單號"].ToString(); DR異常["sam_nbr"] = item["sam_nbr"].ToString(); DR異常["Error"] = "版套為借出狀態未借出、已歸還或已結案"; DT異常資料.Rows.Add(DR異常); } } } } catch (Exception ex) { Log.ErrorLog(ex, "Search Error", StrProgram); F_ErrorShow(ex.ToString()); } } if (DT正確資料.Rows.Count > 0) { Session["DT正確"] = DT正確資料; UpDateBT.Visible = true; UpdateGV.Visible = true; UpdateGV.DataSource = DT正確資料; UpdateGV.DataBind(); } //Session["DT異常"] = (DT異常資料.Rows.Count > 0) ? DT異常資料 : null; if (DT異常資料.Rows.Count > 0) { //Session["DT異常"] = DT異常資料; ErrorGV.Visible = true; ErrorLB.Visible = true; //DeleteBT.Visible = true; //CloseBT.Visible = true; ErrorGV.DataSource = DT異常資料; ErrorGV.DataBind(); } if (DT異常要處理資料.Rows.Count > 0) { Session["DT異常要處理資料"] = DT異常要處理資料; ErrorContinueGV.Visible = true; ErrorContinueLB.Visible = true; DeleteBT.Visible = true; CloseBT.Visible = true; ErrorContinueGV.DataSource = DT異常要處理資料; ErrorContinueGV.DataBind(); } } } } }
public void F_LoadExcel() { //引用//ReferenceCode/ExcelColumn.cs的類別 AMZForcast GetExcelDefine = new AMZForcast(); //導入匯入table GetExcelDefine.ForcastDT(); //上傳路徑 String savePath = Server.MapPath(@"~\ExcelUpLoad\Sales\AMZForcast"); DataTable D_table = new DataTable("Excel"); //建立Excel欄位 D_table = GetExcelDefine.ForcastDataTable.Copy(); DataTable D_errortable = new DataTable("Error"); //實際顯示欄位 int Excel欄位數 = D_table.Columns.Count - 2; if (F_CheckData()) { if (文件上傳FU.HasFile) { String fileName = 文件上傳FU.FileName; Session["FileName"] = fileName; savePath = savePath + fileName; 文件上傳FU.SaveAs(savePath); string str頁簽名稱 = ""; //Label1.Text = "Kiểm tra tệp tin dữ liệu thành công, tên tệp tin---- " + fileName; //-------------------------------------------------- //---- (以上是)上傳 FileUpload的部分,成功運作! //-------------------------------------------------- #region D_table //D_table.Columns.Add("SheetName"); //D_table.Columns.Add("閱卷序號"); //D_table.Columns.Add("款號"); //D_table.Columns.Add("組別"); //D_table.Columns.Add("日期"); //D_table.Columns.Add("工號"); //D_table.Columns.Add("工段"); //D_table.Columns.Add("數量"); #endregion #region ErrorTable // D_errortable.Columns.Add("SheetName"); D_errortable.Columns.Add("款號"); //D_errortable.Columns.Add("尺寸"); //D_errortable.Columns.Add("顏色"); //D_errortable.Columns.Add("訂單數量"); //D_errortable.Columns.Add("可用庫存量"); D_errortable.Columns.Add("Error"); #endregion if (fileName.Substring(fileName.Length - 4, 4).ToUpper() == "XLSX") { XSSFWorkbook workbook = new XSSFWorkbook(文件上傳FU.FileContent); //==只能讀取 System.IO.Stream for (int x = 0; x < workbook.NumberOfSheets; x++) { XSSFSheet u_sheet = (XSSFSheet)workbook.GetSheetAt(x); //-- 0表示:第一個 worksheet工作表 XSSFRow headerRow = (XSSFRow)u_sheet.GetRow(3); //-- Excel 表頭列 IRow DateRow = (IRow)u_sheet.GetRow(2); //-- v.1.2.4版修改 //Session["Date"] = SearchTB.Text; str頁簽名稱 = u_sheet.SheetName.ToString(); //-- for迴圈的「啟始值」要加一,表示不包含 Excel表頭列 // for (int i = (u_sheet.FirstRowNum + 1); i <= u_sheet.LastRowNum; i++) //-- 每一列做迴圈 //i=1第二列開始 for (int i = 1; i <= u_sheet.LastRowNum; i++) //-- 每一列做迴圈 { //--不包含 Excel表頭列的 "其他資料列" IRow row = (IRow)u_sheet.GetRow(i); F_資料確認(D_table, D_errortable, str頁簽名稱, row); } //-- 釋放 NPOI的資源 u_sheet = null; } //-- 釋放 NPOI的資源 workbook = null; ////--Excel資料顯示 //DataView D_View2 = new DataView(D_table); //ExcelGV.DataSource = D_View2; //ExcelGV.DataBind(); //--錯誤資料顯示 if (D_errortable.Rows.Count > 0) { DataView D_View3 = new DataView(D_errortable); ErrorGV.DataSource = D_View3; ErrorGV.DataBind(); } //-------------------------------------------------- //---- (以下是)上傳 FileUpload的部分! //-------------------------------------------------- } else { HSSFWorkbook workbook = new HSSFWorkbook(文件上傳FU.FileContent); //==只能讀取 System.IO.Stream for (int x = 0; x < workbook.NumberOfSheets; x++) { HSSFSheet u_sheet = (HSSFSheet)workbook.GetSheetAt(x); //-- 0表示:第一個 worksheet工作表 HSSFRow headerRow = (HSSFRow)u_sheet.GetRow(3); //-- Excel 表頭列 IRow DateRow = (IRow)u_sheet.GetRow(2); //-- v.1.2.4版修改 //Session["Date"] = SearchTB.Text; str頁簽名稱 = u_sheet.SheetName.ToString(); for (int i = 1; i <= u_sheet.LastRowNum; i++) //-- 每一列做迴圈 { //--不包含 Excel表頭列的 "其他資料列" IRow row = (IRow)u_sheet.GetRow(i); F_資料確認(D_table, D_errortable, str頁簽名稱, row); } //-- 釋放 NPOI的資源 u_sheet = null; } //-- 釋放 NPOI的資源 workbook = null; ////--Excel資料顯示 //DataView D_View2 = new DataView(D_table); //ExcelGV.DataSource = D_View2; //ExcelGV.DataBind(); //--錯誤資料顯示 if (D_errortable.Rows.Count > 0) { DataView D_View3 = new DataView(D_errortable); ErrorGV.DataSource = D_View3; ErrorGV.DataBind(); } //-------------------------------------------------- //---- (以下是)上傳 FileUpload的部分! //-------------------------------------------------- } } else { F_ErrorShow("???? ...... 請先挑選檔案之後,再來上傳"); } // FileUpload使用的第一個 if判別式 if (D_table.Rows.Count > 0) { Session["Excel"] = D_table; } else { Session["Excel"] = null; } if (D_errortable.Rows.Count > 0) { Session["ExcelError"] = D_errortable; } else { Session["ExcelError"] = null; ErrorGV.DataSource = null; ErrorGV.DataBind(); } } else { //if (F_CheckData() == false) // Page.ClientScript.RegisterStartupScript(Page.GetType(), "", "<script>alert('當日已有匯入資料');</script>"); //else // Page.ClientScript.RegisterStartupScript(Page.GetType(), "", "<script>alert('請選擇匯入日期');</script>"); } }
public void F_LoadExcel() { //引用//ReferenceCode/ExcelColumn.cs的類別 AMZForcast GetExcelDefine = new AMZForcast(); //導入匯入table GetExcelDefine.ForcastDT(); //上傳路徑 String savePath = Server.MapPath(@"~\ExcelUpLoad\Sales\AMZForcast"); DataTable D_table = new DataTable("Excel"); //建立Excel欄位 D_table = GetExcelDefine.ForcastDataTable.Copy(); DataTable D_errortable = new DataTable("Error"); //實際顯示欄位 int Excel欄位數 = D_table.Columns.Count - 2; //啟始周 if (文件上傳FU.HasFile) { String fileName = 文件上傳FU.FileName; Session["FileName"] = fileName; savePath = savePath + fileName; 文件上傳FU.SaveAs(savePath); string str頁簽名稱 = ""; //-------------------------------------------------- //---- (以上是)上傳 FileUpload的部分,成功運作! //-------------------------------------------------- #region ErrorTable D_errortable.Columns.Add("Error"); #endregion if (fileName.Substring(fileName.Length - 4, 4).ToUpper() == "XLSX") { XSSFWorkbook workbook = new XSSFWorkbook(文件上傳FU.FileContent); //==只能讀取 System.IO.Stream for (int x = 0; x < workbook.NumberOfSheets; x++) { XSSFSheet u_sheet = (XSSFSheet)workbook.GetSheetAt(x); //-- 0表示:第一個 worksheet工作表 XSSFRow headerRow = (XSSFRow)u_sheet.GetRow(0); //-- Excel 表頭列 IRow DateRow = (IRow)u_sheet.GetRow(2); //-- v.1.2.4版修改 str頁簽名稱 = u_sheet.SheetName.ToString(); string strtime = headerRow.GetCell(1).ToString(); //-- for迴圈的「啟始值」要加一,表示不包含 Excel表頭列 // for (int i = (u_sheet.FirstRowNum + 1); i <= u_sheet.LastRowNum; i++) //-- 每一列做迴圈 //i=1第二列開始 for (int i = 1; i <= u_sheet.LastRowNum; i++) //-- 每一列做迴圈 { //--不包含 Excel表頭列的 "其他資料列" IRow row = (IRow)u_sheet.GetRow(i); F_資料確認(D_table, D_errortable, str頁簽名稱, row); } //-- 釋放 NPOI的資源 u_sheet = null; } //-- 釋放 NPOI的資源 workbook = null; ////--Excel資料顯示 //DataView D_View2 = new DataView(D_table); //ExcelGV.DataSource = D_View2; //ExcelGV.DataBind(); //--錯誤資料顯示 if (D_errortable.Rows.Count > 0) { DataView D_View3 = new DataView(D_errortable); ErrorGV.DataSource = D_View3; ErrorGV.DataBind(); } //-------------------------------------------------- //---- (以下是)上傳 FileUpload的部分! //-------------------------------------------------- } else { HSSFWorkbook workbook = new HSSFWorkbook(文件上傳FU.FileContent); //==只能讀取 System.IO.Stream for (int x = 0; x < workbook.NumberOfSheets; x++) { HSSFSheet u_sheet = (HSSFSheet)workbook.GetSheetAt(x); //-- 0表示:第一個 worksheet工作表 HSSFRow headerRow = (HSSFRow)u_sheet.GetRow(3); //-- Excel 表頭列 IRow DateRow = (IRow)u_sheet.GetRow(2); //-- v.1.2.4版修改 //Session["Date"] = SearchTB.Text; str頁簽名稱 = u_sheet.SheetName.ToString(); for (int i = 1; i <= u_sheet.LastRowNum; i++) //-- 每一列做迴圈 { //--不包含 Excel表頭列的 "其他資料列" IRow row = (IRow)u_sheet.GetRow(i); F_資料確認(D_table, D_errortable, str頁簽名稱, row); } //-- 釋放 NPOI的資源 u_sheet = null; } //-- 釋放 NPOI的資源 workbook = null; ////--Excel資料顯示 //DataView D_View2 = new DataView(D_table); //ExcelGV.DataSource = D_View2; //ExcelGV.DataBind(); //--錯誤資料顯示 if (D_errortable.Rows.Count > 0) { DataView D_View3 = new DataView(D_errortable); ErrorGV.DataSource = D_View3; ErrorGV.DataBind(); } //-------------------------------------------------- //---- (以下是)上傳 FileUpload的部分! //-------------------------------------------------- } } else { F_ErrorShow("???? ...... 請先挑選檔案之後,再來上傳"); } // FileUpload使用的第一個 if判別式 if (D_table.Rows.Count > 0) { Session["Excel"] = D_table; } else { Session["Excel"] = null; } if (D_errortable.Rows.Count > 0) { Session["ExcelError"] = D_errortable; } else { Session["ExcelError"] = null; ErrorGV.DataSource = null; ErrorGV.DataBind(); } }
protected void DbInit() { DataTable dt = new DataTable(), dt2 = new DataTable(); ErrorGV.DataSource = null; ErrorGV.DataBind(); SamGV.DataSource = null; SamGV.DataBind(); try { using (SqlConnection Conn = new SqlConnection(strConnectString)) { SqlDataAdapter myAdapter = new SqlDataAdapter(selectsql("CheckData").ToString(), Conn); myAdapter.Fill(dt); //---- 這時候執行SQL指令。取出資料,放進 DataSet。 } #region query 使用 In // using (SqlConnection conn1 = new SqlConnection(strConnectString)) // { // SqlCommand command1 = conn1.CreateCommand(); // SqlTransaction transaction1; // conn1.Open(); // transaction1 = conn1.BeginTransaction("createExcelImport"); // try // { // command1.Connection = conn1; // command1.Transaction = transaction1; // #region 匯入 // string[] parameters = SamArray.Select((s, i) => "@sam_nbr" + i.ToString()).ToArray(); // command1.CommandText = string.Format(@"SELECT a.receipt_date AS 發版日期, // b.cus_name AS 客戶名稱, a.cus_style_no AS 款號, // a.sam_nbr AS 打樣單號, dbo.F_DateToNull(a.samc_fin_date) AS 打版完成日期, // a.samc_remark60 AS 備註, a.plan_fin_date AS 預計完成日, // a.online_date AS 上線日期, a.samc_plan_fin_date AS 打版預計完成日, // a.plan_fin_date AS 預計完日, dbo.F_DateToNull(a.last_date) AS 需求日 // ,dbo.F_DateToNull(a.samc_fin_date) 打版完成日 //from samc_reqm a left join bas_cus_master b on a.site=b.site and a.cus_id=b.cus_id // where sam_nbr in ( {0} ) and a.site='GGF' // ", string.Join(",", parameters)); // command1.Parameters.Add("@samc_fin_date", SqlDbType.DateTime).Value = DateRangeTB.Text; // for (int i = 0; i < SamArray.Length; i++) // command1.Parameters.AddWithValue(parameters[i], SamArray[i]); // //command1.Parameters.Add("@sam_nbr", SqlDbType.DateTime).Value = DateRangeTB.Text; // command1.ExecuteNonQuery(); // SqlDataReader dr = command1.ExecuteReader(CommandBehavior.CloseConnection); // dt.Load(dr); // #endregion // //transaction1.Commit(); // } // catch (Exception ex) // { // Log.ErrorLog(ex, "上傳失敗", StrProgram); // transaction1.Rollback(); // throw; // } // finally // { // conn1.Close(); // transaction1.Dispose(); // } // } #endregion if (dt.Rows.Count > 0) { DataView dv = new DataView(dt); dv.RowFilter = " 打樣單狀態 = '無資料' or 打版完成日 = '無打版完成日'"; ErrorGV.DataSource = dv.ToTable(); ErrorGV.DataBind(); dv.RowFilter = String.Empty; dv.RowFilter = " 打樣單狀態 = '有打樣單' and 打版完成日 <> '無打版完成日' "; dt2 = dv.ToTable(); dv.RowFilter = String.Empty; DataTable dt4 = new DataTable(); dv.RowFilter = "打版完成日 = '無打版完成日' and 打樣單狀態 = '有打樣單' "; dt4 = dv.ToTable(); if (dt4.Rows.Count > 0) { SystemFunction systemFunction = new SystemFunction(); StringBuilder sb = new StringBuilder(); sb.Append(@"<h1><strong>樣品主副料到齊,未收到版套</strong></h1> <table style='width: 498px; height: 180px;' border='1'> <tbody> <tr style='height: 52px;'> <td style='width: 136px; height: 52px; text-align: center;'> <h1><strong>打樣單號</strong></h1> </td> <td style='width: 143px; height: 52px; text-align: center;'> <h1><strong>款號</strong></h1> </td> <td style='width: 130px; height: 52px;'> <h1 style='text-align: center;'><strong>客戶代號</strong></h1> </td> </tr>"); foreach (DataRow item in dt4.Rows) { sb.AppendFormat(@"<tr style='height: 53.4688px;'> <td style='width: 136px; height: 53.4688px; text-align: center;'><strong>{0}</strong></td> <td style='width: 143px; height: 53.4688px; text-align: center;'><strong>{1}</strong></td> <td style='width: 130px; height: 53.4688px; text-align: center;'><strong>{2}</strong></td> </tr>", item["打樣單號"].ToString(), item["款號"].ToString(), item["客戶代號"].ToString()); } sb.Append("</tbody></ table > "); systemFunction.SendMail("[email protected];[email protected];", "樣品主副料到期,未收到版套", sb.ToString()); } if (dt2.Rows.Count > 0) { if (UpDate(dt2)) { using (SqlConnection Conn = new SqlConnection(strConnectString)) { DataTable dt3 = new DataTable(); SqlDataAdapter myAdapter = new SqlDataAdapter(selectsql("Search", dt2).ToString(), Conn); myAdapter.Fill(dt3); //---- 這時候執行SQL指令。取出資料,放進 DataSet。 SamGV.DataSource = dt3; SamGV.DataBind(); } } } //TESTGV.DataBind(); } else { F_ErrorShow("搜尋不到資料"); } } catch (Exception ex) { Log.ErrorLog(ex, "資料搜尋異常", StrProgram); F_ErrorShow("資料搜尋異常"); //throw; } }
protected void DbInit() { DataTable dt = new DataTable(), dt2 = new DataTable(); try { using (SqlConnection Conn = new SqlConnection(strConnectString)) { SqlDataAdapter myAdapter = new SqlDataAdapter(selectsql("CheckData").ToString(), Conn); myAdapter.Fill(dt); //---- 這時候執行SQL指令。取出資料,放進 DataSet。 } #region query 使用 In // using (SqlConnection conn1 = new SqlConnection(strConnectString)) // { // SqlCommand command1 = conn1.CreateCommand(); // SqlTransaction transaction1; // conn1.Open(); // transaction1 = conn1.BeginTransaction("createExcelImport"); // try // { // command1.Connection = conn1; // command1.Transaction = transaction1; // #region 匯入 // string[] parameters = SamArray.Select((s, i) => "@sam_nbr" + i.ToString()).ToArray(); // command1.CommandText = string.Format(@"SELECT a.receipt_date AS 發版日期, // b.cus_name AS 客戶名稱, a.cus_style_no AS 款號, // a.sam_nbr AS 打樣單號, dbo.F_DateToNull(a.samc_fin_date) AS 打版完成日期, // a.samc_remark60 AS 備註, a.plan_fin_date AS 預計完成日, // a.online_date AS 上線日期, a.samc_plan_fin_date AS 打版預計完成日, // a.plan_fin_date AS 預計完日, dbo.F_DateToNull(a.last_date) AS 需求日 // ,dbo.F_DateToNull(a.samc_fin_date) 打版完成日 //from samc_reqm a left join bas_cus_master b on a.site=b.site and a.cus_id=b.cus_id // where sam_nbr in ( {0} ) and a.site='GGF' // ", string.Join(",", parameters)); // command1.Parameters.Add("@samc_fin_date", SqlDbType.DateTime).Value = DateRangeTB.Text; // for (int i = 0; i < SamArray.Length; i++) // command1.Parameters.AddWithValue(parameters[i], SamArray[i]); // //command1.Parameters.Add("@sam_nbr", SqlDbType.DateTime).Value = DateRangeTB.Text; // command1.ExecuteNonQuery(); // SqlDataReader dr = command1.ExecuteReader(CommandBehavior.CloseConnection); // dt.Load(dr); // #endregion // //transaction1.Commit(); // } // catch (Exception ex) // { // Log.ErrorLog(ex, "上傳失敗", StrProgram); // transaction1.Rollback(); // throw; // } // finally // { // conn1.Close(); // transaction1.Dispose(); // } // } #endregion if (dt.Rows.Count > 0) { DataView dv = new DataView(dt); dv.RowFilter = " 打樣單狀態 <> '有打樣單' or 打樣處理 <> '有資料'"; ErrorGV.DataSource = dv.ToTable(); ErrorGV.DataBind(); dv.RowFilter = String.Empty; dv.RowFilter = " 打樣單狀態 = '有打樣單' and 打樣處理 = '有資料'"; dt2 = dv.ToTable(); if (dt2.Rows.Count > 0) { if (UpDate(dt2)) { using (SqlConnection Conn = new SqlConnection(strConnectString)) { DataTable dt3 = new DataTable(); SqlDataAdapter myAdapter = new SqlDataAdapter(selectsql("Search").ToString(), Conn); myAdapter.Fill(dt3); //---- 這時候執行SQL指令。取出資料,放進 DataSet。 SamGV.DataSource = dt3; SamGV.DataBind(); } } } //TESTGV.DataBind(); } else { F_ErrorShow("搜尋不到資料"); } } catch (Exception ex) { Log.ErrorLog(ex, "資料搜尋異常", StrProgram); F_ErrorShow("資料搜尋異常"); //throw; } }