using System.IO; using System.Data; using NPOI.HSSF.UserModel; using NPOI.SS.UserModel; using NPOI.HSSF.Util; using NPOI.XSSF.UserModel; using System; using UAS_LabelMachine.Entity; using UAS_LabelMachine.PublicMethod; using System.Collections.Generic; using System.Windows.Forms; using System.Text.RegularExpressions; namespace UAS_LabelMachine { class ExcelHandler { DataHelper dh = SystemInf.dh; //展示抬头日期的索引 int ShowDataIndex = 7; //展示芯片尺寸的索引 int ShowSizeIndex = 5; //显示计数的索引 int ShowCountIndex = 2; //显示片数的索引 int ShowPieceIndex = 1; //显示备注的片 int ShowRemarkPiece = 5; int NumIndex = 0; /// /// 导出Excel,返回文件在客户端的路径 /// public string ExportExcel(DataTable dt, string FolderPath, string FileName) { //创建一个内存流,用来接收转换成Excel的内容 MemoryStream ms; ms = DataTableToExcel(dt); //以系统当前时间命名文件,FileMode.Create表示创建文件,FileAccess.Write表示拥有写的权限 string filePath = @FolderPath + "\\" + FileName + ".xls"; FileStream fs = new FileStream(filePath, FileMode.Create, FileAccess.Write); byte[] data = ms.ToArray(); fs.Write(data, 0, data.Length); fs.Flush(); //释放当前Excel文件,否则打开文件的时候会显示文件被占用 ms.Dispose(); fs.Dispose(); return filePath; } /// /// 导出Excel,返回文件在客户端的路径 /// public string ExportExcel_Normal(DataTable firstsdt, DataTable dt, string FolderPath, string FileName, string Type, int PageSize, List conditionbox) { //创建一个内存流,用来接收转换成Excel的内容 MemoryStream ms; ms = DataTableToExcel_Normal(firstsdt, dt, Type, FileName, PageSize, conditionbox); //以系统当前时间命名文件,FileMode.Create表示创建文件,FileAccess.Write表示拥有写的权限 string filePath = @FolderPath + "\\" + FileName + ".xls"; int counter = 1; string filename = FileName + ".xls"; while (File.Exists(filePath)) { filename = string.Format("{0}({1}){2}", FileName, counter, ".xls"); //文件名+(count)+后缀 filePath = Path.Combine(FolderPath, filename); //保存路径 counter++; //count+1 } FileStream fs = new FileStream(filePath, FileMode.Create, FileAccess.Write); byte[] data = ms.ToArray(); fs.Write(data, 0, data.Length); fs.Flush(); //释放当前Excel文件,否则打开文件的时候会显示文件被占用 ms.Dispose(); fs.Dispose(); return filePath; } /// /// 晶源客户特殊方案 /// public string JINYUAN(DataTable firstsdt, DataTable dt, string FolderPath, string FileName, string Type, int PageSize, List conditionbox) { //创建一个内存流,用来接收转换成Excel的内容 MemoryStream ms; ms = DataTableToExcel_JINYUAN(firstsdt, dt, Type, FileName, PageSize, conditionbox); //以系统当前时间命名文件,FileMode.Create表示创建文件,FileAccess.Write表示拥有写的权限 string filePath = @FolderPath + "\\" + FileName + ".xls"; int counter = 1; string filename = FileName + ".xls"; while (File.Exists(filePath)) { filename = string.Format("{0}({1}){2}", FileName, counter, ".xls"); //文件名+(count)+后缀 filePath = Path.Combine(FolderPath, filename); //保存路径 counter++; //count+1 } FileStream fs = new FileStream(filePath, FileMode.Create, FileAccess.Write); byte[] data = ms.ToArray(); fs.Write(data, 0, data.Length); fs.Flush(); //释放当前Excel文件,否则打开文件的时候会显示文件被占用 ms.Dispose(); fs.Dispose(); return filePath; } /// /// 利普芯客户特殊方案 /// public string LIPIUXIN(DataTable firstsdt, DataTable dt, string FolderPath, string FileName, string Type, int PageSize, List conditionbox) { //创建一个内存流,用来接收转换成Excel的内容 MemoryStream ms; ms = DataTableToExcel_LIPUXIN(firstsdt, dt, Type, FileName, PageSize, conditionbox); //以系统当前时间命名文件,FileMode.Create表示创建文件,FileAccess.Write表示拥有写的权限 string filePath = @FolderPath + "\\" + FileName + ".xls"; int counter = 1; string filename = FileName + ".xls"; while (File.Exists(filePath)) { filename = string.Format("{0}({1}){2}", FileName, counter, ".xls"); //文件名+(count)+后缀 filePath = Path.Combine(FolderPath, filename); //保存路径 counter++; //count+1 } FileStream fs = new FileStream(filePath, FileMode.Create, FileAccess.Write); byte[] data = ms.ToArray(); fs.Write(data, 0, data.Length); fs.Flush(); //释放当前Excel文件,否则打开文件的时候会显示文件被占用 ms.Dispose(); fs.Dispose(); return filePath; } /// /// 导入Excel /// public void ImportExcel(DataTable DataTable, string TableName) { int columnNum = DataTable.Columns.Count; int rowNum = DataTable.Columns.Count; string[] field = new string[columnNum]; for (int i = 0; i < columnNum; i++) { field[i] = DataTable.Rows[0][i].ToString(); } } public static DataTable ExcelToDataTable(string filePath, bool isColumnName) { DataTable dataTable = null; FileStream fs = null; DataColumn column = null; DataRow dataRow = null; IWorkbook workbook = null; ISheet sheet = null; IRow row = null; ICell cell = null; int startRow = 0; try { using (fs = File.OpenRead(filePath)) { // 2007版本 if (filePath.IndexOf(".xlsx") > 0) { workbook = new XSSFWorkbook(fs); } // 2003版本 else if (filePath.IndexOf(".xls") > 0) { workbook = new HSSFWorkbook(fs); } if (workbook != null) { sheet = workbook.GetSheetAt(0);//读取第一个sheet,当然也可以循环读取每个sheet dataTable = new DataTable(); if (sheet != null) { int rowCount = sheet.LastRowNum;//总行数 if (rowCount > 0) { IRow firstRow = sheet.GetRow(0);//第一行 int cellCount = firstRow.LastCellNum;//列数 //构建datatable的列 if (isColumnName) { startRow = 1;//如果第一行是列名,则从第二行开始读取 for (int i = firstRow.FirstCellNum; i < cellCount; ++i) { cell = firstRow.GetCell(i); if (cell != null) { if (cell.StringCellValue != null) { column = new DataColumn(cell.StringCellValue); dataTable.Columns.Add(column); } } } } else { for (int i = firstRow.FirstCellNum; i < cellCount; ++i) { column = new DataColumn("column" + (i + 1)); dataTable.Columns.Add(column); } } //填充行 for (int i = startRow; i <= rowCount; ++i) { row = sheet.GetRow(i); if (row == null) continue; dataRow = dataTable.NewRow(); for (int j = row.FirstCellNum; j < cellCount; ++j) { cell = row.GetCell(j); if (cell == null) { dataRow[j] = ""; } else { //CellType(Unknown = -1,Numeric = 0,String = 1,Formula = 2,Blank = 3,Boolean = 4,Error = 5,) switch (cell.CellType) { case CellType.Blank: dataRow[j] = ""; break; case CellType.Numeric: short format = cell.CellStyle.DataFormat; //对时间格式(2015.12.5、2015/12/5、2015-12-5等)的处理 if (format == 14 || format == 31 || format == 57 || format == 58) dataRow[j] = cell.DateCellValue; else dataRow[j] = cell.NumericCellValue; break; case CellType.String: dataRow[j] = cell.StringCellValue; break; } } } dataTable.Rows.Add(dataRow); } } } } } return dataTable; } catch (Exception) { if (fs != null) { fs.Close(); } return null; } } int RowHeight = 12; /// /// 将DataTable形式的数据转成Excel格式的,然后用字节流的形式写入文件 /// /// /// public MemoryStream DataTableToExcel(DataTable DataTable) { //创建内存流 MemoryStream ms = new MemoryStream(); //创建一个Book,相当于一个Excel文件 HSSFWorkbook book = new HSSFWorkbook(); //Excel中的Sheet ISheet sheet = book.CreateSheet("sheet1"); //获取行数量和列数量 int rowNum = DataTable.Rows.Count; int columnNum = DataTable.Columns.Count; //设置列的宽度,根据首行的列的内容的长度来设置 for (int i = 0; i < columnNum; i++) { int dataLength; //如果内容比标题短则取标题长度 if (DataTable.Rows[0][i].ToString().Length < DataTable.Columns[i].ColumnName.Length) { dataLength = DataTable.Columns[i].ColumnName.Length; dataLength = dataLength * 300; } else { dataLength = DataTable.Rows[0][i].ToString().Length; dataLength = dataLength * 300; } sheet.SetColumnWidth(i, dataLength); } //首先画好第一行带颜色的,单独写出来,避免写在循环里面 IRow row = sheet.CreateRow(0); //冻结第一行 sheet.CreateFreezePane(0, 1, 0, 1); ICellStyle style = book.CreateCellStyle(); style.FillForegroundColor = HSSFColor.PaleBlue.Index; style.FillPattern = FillPattern.BigSpots; style.FillBackgroundColor = HSSFColor.LightGreen.Index; //设置边框 style.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin; style.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin; style.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin; style.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin; row.HeightInPoints = 20; //固定第一行 //row.RowStyle.IsLocked=true; //给第一行的标签赋值样式和值 for (int j = 0; j < columnNum; j++) { row.CreateCell(j); row.Cells[j].CellStyle = style; row.Cells[j].CellStyle.VerticalAlignment = VerticalAlignment.Center; row.Cells[j].CellStyle.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center; row.Cells[j].SetCellValue(DataTable.Columns[j].Caption); } //将DataTable的值循环赋值给book,Aligment设置居中 //之前已经画了带颜色的第一行,所以从i=1开始画 for (int i = 0; i < rowNum; i++) { IRow row1 = sheet.CreateRow(i + 1); row1.HeightInPoints = 20; for (int j = 0; j < columnNum; j++) { row1.CreateCell(j); row1.Cells[j].SetCellValue(DataTable.Rows[i][j].ToString()); row1.GetCell(j).CellStyle.VerticalAlignment = VerticalAlignment.Center; } } //将book的内容写入内存流中返回 book.Write(ms); return ms; } /// /// 将DataTable形式的数据转成Excel格式的,然后用字节流的形式写入文件 /// /// /// public MemoryStream DataTableToExcel_Normal(DataTable FirstDT, DataTable DataTable, string Type, string Inoutno, int PageSize, List conditionbox) { string 小计 = ""; string 总计 = ""; string 片 = ""; string companyname = ""; Dictionary PercentSum = new Dictionary(); if (dh.getFieldDataByCondition("ProdInout", "pi_exporttype", "pi_inoutno='" + Inoutno + "'").ToString() == "Chinese") { 小计 = "小计"; 总计 = "总计"; companyname = "深爱半导体股份有限公司芯片出货清单"; } else { 小计 = "total"; 总计 = "total"; companyname = "SHENZHEN SI SEMICONDUCTORS CO.,LTD"; } bool CountQty = false; if (dh.getFieldDataByCondition("ProdInout", "pi_exporttype1", "pi_inoutno='" + Inoutno + "'").ToString() == "QTY") { CountQty = true; } //转换为序列 CheckBox[] box = conditionbox.ToArray(); //创建内存流 MemoryStream ms = new MemoryStream(); //创建一个Book,相当于一个Excel文件 HSSFWorkbook book = new HSSFWorkbook(); //Excel中的Sheet ISheet sheet = book.CreateSheet("分页"); sheet.SetMargin(MarginType.TopMargin, 0.4); sheet.SetMargin(MarginType.BottomMargin, 0.4); sheet.SetMargin(MarginType.LeftMargin, 0.4); sheet.SetMargin(MarginType.RightMargin, 0.4); sheet.FitToPage = true; sheet.PrintSetup.FitHeight = 200; //芯片号需要作为更新盒号的条件 HSSFFont ffont = (HSSFFont)book.CreateFont(); ffont.FontName = "宋体"; //更新箱号 List pib_id = new List(); //系统打印箱号 List pib_outboxcode1 = new List(); int BoxCode = 1; ICellStyle style = book.CreateCellStyle(); style.VerticalAlignment = VerticalAlignment.Center; style.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Left; style.SetFont(ffont); ICellStyle styleborder = book.CreateCellStyle(); styleborder.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin; styleborder.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin; styleborder.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin; styleborder.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin; styleborder.VerticalAlignment = VerticalAlignment.Center; styleborder.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Left; styleborder.SetFont(ffont); string pi_inoutno = ""; HSSFFont ColumnTitle = (HSSFFont)book.CreateFont(); ColumnTitle.FontName = "宋体"; ColumnTitle.Boldweight = (short)FontBoldWeight.Bold; ICellStyle ColumnTitleStyle = book.CreateCellStyle(); ColumnTitleStyle.SetFont(ColumnTitle); ColumnTitleStyle.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin; ColumnTitleStyle.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin; ColumnTitleStyle.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin; ColumnTitleStyle.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin; List NotShowColumn = new List(); NotShowColumn.Add("ch_level"); NotShowColumn.Add("pib_id"); NotShowColumn.Add("chw_itemname1"); NotShowColumn.Add("chw_itemname2"); NotShowColumn.Add("chw_itemname3"); NotShowColumn.Add("chw_itemname4"); NotShowColumn.Add("chw_itemname5"); NotShowColumn.Add("pd_ordercode"); NotShowColumn.Add("pr_size"); NotShowColumn.Add("me_desc"); NotShowColumn.Add("pr_orispeccode"); NotShowColumn.Add("pr_orispeccode1"); NotShowColumn.Add("pi_title"); NotShowColumn.Add("pi_chipouttype"); NotShowColumn.Add("pi_date"); int ShowColumnCount = 0; bool ShowSplitBatch = true; //展示的内容列 //设置列的宽度,根据首行的列的内容的长度来设置 for (int i = DataTable.Columns.Count - 1; i > 0; i--) { for (int j = 0; j < box.Length; j++) { if (box[j].Name.ToLower() == "ch_bluefilm" && !box[j].Checked) { if (DataTable.Columns[i].ColumnName.ToLower().Contains("ch_bluefilm")) { DataTable.Columns.RemoveAt(i); break; } } if (box[j].Name.ToLower() == "ch_code" && !box[j].Checked) { if (DataTable.Columns[i].ColumnName.ToLower().Contains("ch_code")) { DataTable.Columns.RemoveAt(i); break; } } if (box[j].Name.ToLower() == "ch_splitbatch" && !box[j].Checked) { if (DataTable.Columns[i].ColumnName.ToLower().Contains("ch_splitbatch")) { DataTable.Columns.RemoveAt(i); break; } } if (box[j].Name.ToLower() == "ch_waterid" && !box[j].Checked) { if (DataTable.Columns[i].ColumnName.ToLower().Contains("ch_waterid")) { DataTable.Columns.RemoveAt(i); break; } } if (box[j].Name.ToLower() == "ch_pbcode" && !box[j].Checked) { if (DataTable.Columns[i].ColumnName.ToLower().Contains("ch_pbcode")) { DataTable.Columns.RemoveAt(i); break; } } if (box[j].Name.ToLower() == "ch_remark" && !box[j].Checked) { if (DataTable.Columns[i].ColumnName.ToLower().Contains("ch_remark")) { DataTable.Columns.RemoveAt(i); break; } } if (box[j].Name.ToLower() == "ch_yield" && !box[j].Checked) { if (DataTable.Columns[i].ColumnName.ToLower().Contains("ch_yield")) { DataTable.Columns.RemoveAt(i); break; } } } } //获取行数量和列数量 int rowNum = DataTable.Rows.Count; int columnNum = DataTable.Columns.Count; //首先画好第一行带颜色的,单独写出来,避免写在循环里面 IRow row = sheet.CreateRow(0); //冻结第一行 sheet.CreateFreezePane(0, 1, 0, 1); row.HeightInPoints = RowHeight; //固定第一行 //row.RowStyle.IsLocked=true; //给第一行的标签赋值样式和值 // ffont.FontHeight = 13; row.CreateCell(0); row.Cells[0].SetCellValue(" " + companyname); row.GetCell(0).CellStyle.SetFont((ffont)); //ffont.FontHeight = 10; //开始绘制的Index int PaintIndex = 1; int sumCount = 0; int totalCount = 0; switch (Type) { case "FixRow": //清理系统取出来的数据 BaseUtil.CleanDataTableData(FirstDT); //首页参数拼接 string First_OrderCode = ""; string First_Prspec = ""; string First_Batch = ""; ArrayList First_WID = new ArrayList(); for (int i = 0; i < rowNum; i++) { IRow row1 = sheet.CreateRow(PaintIndex); PaintIndex = PaintIndex + 1; row1.HeightInPoints = RowHeight; //不包含的订单号 if (DataTable.Columns.Contains("pd_ordercode") && !First_OrderCode.Contains(DataTable.Rows[i]["pd_ordercode"].ToString())) { First_OrderCode += DataTable.Rows[i]["pd_ordercode"].ToString() + " "; } //不包含的物料型号 if (DataTable.Columns.Contains("pr_orispeccode") && !First_Prspec.Contains(DataTable.Rows[i]["pr_orispeccode"].ToString())) { First_Prspec += DataTable.Rows[i]["pr_orispeccode"].ToString() + " "; } //不包含扩撒批号 if (DataTable.Columns.Contains("ch_splitbatch") && !First_Batch.Contains(DataTable.Rows[i]["ch_splitbatch"].ToString())) { First_Batch += DataTable.Rows[i]["ch_splitbatch"].ToString() + " "; } //不包含Wafer_id if (DataTable.Columns.Contains("Wafer_ID") && !First_WID.Contains(DataTable.Rows[i]["Wafer_ID"].ToString())) { First_WID.Add(DataTable.Rows[i]["Wafer_ID"].ToString()); } if (i / PageSize >= 1 && i % PageSize == 0) { DataRow dr = FirstDT.NewRow(); dr["me_desc"] = DataTable.Rows[i]["me_desc"].ToString(); dr["pr_size"] = DataTable.Rows[i]["pr_size"].ToString(); dr["pi_chipouttype"] = DataTable.Rows[i]["pi_chipouttype"].ToString(); dr["ch_level"] = DataTable.Rows[i]["ch_level"].ToString(); dr["pr_orispeccode"] = DataTable.Rows[i]["pr_orispeccode"].ToString(); dr["pi_inoutno"] = DataTable.Rows[i]["pi_inoutno"].ToString(); pi_inoutno = DataTable.Rows[i]["pi_inoutno"].ToString(); dr["pi_title"] = DataTable.Rows[i]["pi_title"].ToString(); dr["pi_date"] = DataTable.Rows[i]["pi_date"].ToString(); dr["pd_ordercode"] = First_OrderCode; dr["pr_orispeccode"] = First_Prspec; dr["ch_splitbatch"] = First_Batch; dr["ch_waterid"] = BaseUtil.GetArrStr(First_WID, " "); dr["num"] = PageSize; dr["io_qty"] = sumCount; FirstDT.Rows.Add(dr); First_OrderCode = ""; First_Prspec = ""; First_Batch = ""; First_WID.Clear(); BoxCode = BoxCode + 1; for (int j = 0; j < ShowColumnCount; j++) { row1.CreateCell(j); if (j == 0) { row1.Cells[j].SetCellValue(小计); } else if (j == ShowPieceIndex) { row1.Cells[ShowPieceIndex].SetCellValue((i % PageSize == 0 ? PageSize : i)); row1.Cells[j].CellStyle = styleborder; } else if (j == ShowCountIndex) { row1.Cells[j].SetCellValue(sumCount); } if (CountQty) { for (int k = 0; k < PercentSum.Count; k++) { if (PercentSum.ContainsKey(j)) { if (PercentSum[j] != 0) { row1.Cells[j].SetCellValue(PercentSum[j] / PercentSum.Count); PercentSum[j] = 0; } } } } row1.Cells[j].CellStyle = styleborder; } sumCount = 0; row1 = sheet.CreateRow(PaintIndex); sheet.SetRowBreak(PaintIndex - 1); sheet.Footer.Center = "第&P页,共&N页"; PaintIndex = PaintIndex + 1; } //每次到了页数开始分页 if (i % PageSize == 0 || i == rowNum - 1) { //第一行添加客户信息 rownum只有一行的情 if (i != rowNum - 1 || rowNum == 1 || (rowNum - i == rowNum % PageSize)) { for (int j = 0; j < columnNum - 3; j++) { if (j == 0) { row1.CreateCell(j); row1.Cells[j].SetCellValue(DataTable.Columns["pi_title"].Caption + ":" + DataTable.Rows[i]["pi_title"].ToString() + " " + DataTable.Columns["ch_level"].Caption + ":" + DataTable.Rows[i]["ch_level"].ToString()); } else if (j == ShowDataIndex) { row1.CreateCell(j); row1.Cells[j].SetCellValue(DataTable.Columns["pi_inoutno"].Caption + ":" + DataTable.Rows[i]["pi_inoutno"].ToString()); } else { row1.CreateCell(j); } row1.GetCell(j).CellStyle = style; } row1 = sheet.CreateRow(PaintIndex); PaintIndex = PaintIndex + 1; //第二行添加型号 for (int j = 0; j < columnNum - 3; j++) { if (j == 0) { row1.CreateCell(j).SetCellValue(DataTable.Columns["pr_orispeccode"].Caption + ":" + DataTable.Rows[i]["pr_orispeccode"].ToString() + " " + "(" + DataTable.Rows[i]["me_desc"].ToString() + ")" + DataTable.Columns["pi_chipouttype"].Caption + ":" + DataTable.Rows[i]["pi_chipouttype"].ToString()); } else if (j == ShowSizeIndex) { row1.CreateCell(j).SetCellValue(DataTable.Columns["pr_size"].Caption + ":" + DataTable.Rows[i]["pr_size"].ToString()); } else if (j == ShowDataIndex) { row1.CreateCell(j).SetCellValue(DataTable.Columns["pi_date"].Caption + ":" + DataTable.Rows[i]["pi_date"].ToString()); } } //添加列名 row1 = sheet.CreateRow(PaintIndex); PaintIndex = PaintIndex + 1; //计数列所在的索引 int showcount = 0; for (int j = 4; j < columnNum; j++) { if (DataTable.Columns[j].ColumnName.ToLower() == "chw_percent1") { if (!PercentSum.ContainsKey(j - 4)) PercentSum.Add(j - 4, 0); showcount = showcount + 1; row1.CreateCell(j - 4); row1.Cells[j - 4].CellStyle = ColumnTitleStyle; row1.Cells[j - 4].SetCellValue(DataTable.Rows[0]["chw_itemname1"].ToString()); } else if (DataTable.Columns[j].ColumnName.ToLower() == "chw_percent2") { if (!PercentSum.ContainsKey(j - 4)) PercentSum.Add(j - 4, 0); showcount = showcount + 1; row1.CreateCell(j - 4); row1.Cells[j - 4].CellStyle = ColumnTitleStyle; row1.Cells[j - 4].SetCellValue(DataTable.Rows[0]["chw_itemname2"].ToString()); } else if (DataTable.Columns[j].ColumnName.ToLower() == "chw_percent3") { if (!PercentSum.ContainsKey(j - 4)) PercentSum.Add(j - 4, 0); showcount = showcount + 1; row1.CreateCell(j - 4); row1.Cells[j - 4].CellStyle = ColumnTitleStyle; row1.Cells[j - 4].SetCellValue(DataTable.Rows[0]["chw_itemname3"].ToString()); } else if (DataTable.Columns[j].ColumnName.ToLower() == "chw_percent4") { if (!PercentSum.ContainsKey(j - 4)) PercentSum.Add(j - 4, 0); showcount = showcount + 1; row1.CreateCell(j - 4); row1.Cells[j - 4].CellStyle = ColumnTitleStyle; row1.Cells[j - 4].SetCellValue(DataTable.Rows[0]["chw_itemname4"].ToString()); } else if (DataTable.Columns[j].ColumnName.ToLower() == "chw_percent5") { if (!PercentSum.ContainsKey(j - 4)) PercentSum.Add(j - 4, 0); showcount = showcount + 1; row1.CreateCell(j - 4); row1.Cells[j - 4].CellStyle = ColumnTitleStyle; row1.Cells[j - 4].SetCellValue(DataTable.Rows[0]["chw_itemname5"].ToString()); } else if ((NotShowColumn.Contains(DataTable.Columns[j].ColumnName.ToLower()))) { } else { showcount = showcount + 1; row1.CreateCell(j - 4); row1.Cells[j - 4].CellStyle = ColumnTitleStyle; row1.Cells[j - 4].SetCellValue(DataTable.Columns[j].Caption); } if (DataTable.Columns[j].ColumnName.ToString() == "io_qty") { NumIndex = j; if (ShowCountIndex == NumIndex - 4) { ShowCountIndex = ShowCountIndex + 1; } } } ShowColumnCount = showcount; row1 = sheet.CreateRow(PaintIndex); PaintIndex = PaintIndex + 1; } } //添加数据内容 for (int j = 4; j < columnNum; j++) { string Data = DataTable.Rows[i][j].ToString(); row1.CreateCell(j - 4); if (DataTable.Columns[j].ColumnName.ToLower() == "ch_bluefilm") { row1.CreateCell(j - 4, CellType.String); } if ((NotShowColumn.Contains(DataTable.Columns[j].ColumnName.ToLower()))) { } else { double Num = 0; if (double.TryParse(Data, out Num)&& DataTable.Columns[j].ColumnName.ToLower() != "ch_bluefilm") { row1.Cells[j - 4].SetCellValue(Num); for (int k = 0; k < PercentSum.Count; k++) { if (PercentSum.ContainsKey(j - 4)) { PercentSum[j - 4] += Num; } } } else { row1.Cells[j - 4].SetCellValue(Data); } row1.Cells[j - 4].CellStyle = styleborder; } if (DataTable.Columns[j].ColumnName == "io_qty") { row1.Cells[j - 4].SetCellValue(int.Parse(Data)); sumCount += int.Parse(DataTable.Rows[i][j].ToString()); totalCount += int.Parse(DataTable.Rows[i][j].ToString()); } if (DataTable.Columns[j].ColumnName == "rownum") { row1.Cells[j - 4].SetCellValue(i + 1); } if (DataTable.Columns[j].ColumnName == "ch_code") { sheet.AutoSizeColumn(j - 4); sheet.SetColumnWidth(j - 4, sheet.GetColumnWidth(j - 4) + 1000); } } //固定行号分组的时候自动拼接新的DataTable if (i == rowNum - 1) { DataRow dr = FirstDT.NewRow(); dr["me_desc"] = DataTable.Rows[i]["me_desc"].ToString(); dr["pr_size"] = DataTable.Rows[i]["pr_size"].ToString(); dr["pi_chipouttype"] = DataTable.Rows[i]["pi_chipouttype"].ToString(); dr["ch_level"] = DataTable.Rows[i]["ch_level"].ToString(); dr["pr_orispeccode"] = DataTable.Rows[i]["pr_orispeccode"].ToString(); dr["pi_inoutno"] = DataTable.Rows[i]["pi_inoutno"].ToString(); dr["pi_title"] = DataTable.Rows[i]["pi_title"].ToString(); dr["pi_date"] = DataTable.Rows[i]["pi_date"].ToString(); dr["pd_ordercode"] = First_OrderCode; dr["pr_orispeccode"] = First_Prspec; dr["ch_splitbatch"] = First_Batch; dr["ch_waterid"] = BaseUtil.GetArrStr(First_WID, " "); dr["num"] = (i % PageSize) + 1; dr["io_qty"] = sumCount; FirstDT.Rows.Add(dr); row1 = sheet.CreateRow(PaintIndex); PaintIndex = PaintIndex + 1; for (int j = 0; j < ShowColumnCount; j++) { row1.CreateCell(j); if (j == 0) { row1.Cells[j].SetCellValue(小计); } else if (j == ShowPieceIndex) { row1.Cells[ShowPieceIndex].SetCellValue((rowNum % PageSize == 0 ? PageSize : (rowNum % PageSize))); row1.Cells[j].CellStyle = styleborder; } else if (j == ShowCountIndex) { row1.Cells[j].SetCellValue(sumCount); } if (CountQty) { for (int k = 0; k < PercentSum.Count; k++) { if (PercentSum.ContainsKey(j)) { if (PercentSum[j] != 0) { row1.Cells[j].SetCellValue(PercentSum[j] / PercentSum.Count); PercentSum[j] = 0; } } } } row1.Cells[j].CellStyle = styleborder; } row1 = sheet.CreateRow(PaintIndex); for (int j = 0; j < columnNum - 3; j++) { if (j == 0) { row1.CreateCell(j); row1.Cells[j].SetCellValue("备注"); } else if (j == ShowCountIndex) { row1.CreateCell(j); row1.Cells[j].SetCellValue(totalCount); } else if (j == ShowRemarkPiece) { row1.CreateCell(j); row1.Cells[j].SetCellValue(rowNum + "片"); } else { row1.CreateCell(j); } row1.Cells[j].CellStyle = style; } sheet.SetRowBreak(PaintIndex); sheet.Footer.Center = "第&P页,共&N页"; PaintIndex = PaintIndex + 1; } pib_id.Add(DataTable.Rows[i]["pib_id"].ToString()); pib_outboxcode1.Add(BoxCode.ToString()); } break; case "BatchCode": string LastBatchCode = ""; int PageNum = 0; for (int i = 0; i < rowNum; i++) { IRow row1 = sheet.CreateRow(PaintIndex); PaintIndex = PaintIndex + 1; row1.HeightInPoints = RowHeight; //如果批号不相等的时候 if (LastBatchCode != "" && LastBatchCode != DataTable.Rows[i]["ch_splitbatch"].ToString()) { BoxCode = BoxCode + 1; for (int j = 0; j < ShowColumnCount; j++) { row1.CreateCell(j); if (j == 0) { row1.Cells[j].SetCellValue(小计); row1.Cells[j].CellStyle = styleborder; } else if (j == ShowPieceIndex) { row1.Cells[ShowPieceIndex].SetCellValue(PageNum); row1.Cells[j].CellStyle = styleborder; } else if (j == ShowCountIndex) { row1.Cells[j].SetCellValue(sumCount); row1.Cells[j].CellStyle = styleborder; } else { row1.Cells[j].CellStyle = styleborder; } if (CountQty) { for (int k = 0; k < PercentSum.Count; k++) { if (PercentSum.ContainsKey(j)) { if (PercentSum[j] != 0) { row1.Cells[j].SetCellValue(PercentSum[j] / PercentSum.Count); PercentSum[j] = 0; } } } } } sumCount = 0; row1 = sheet.CreateRow(PaintIndex); sheet.SetRowBreak(PaintIndex - 1); sheet.Footer.Center = "第&P页,共&N页"; PaintIndex = PaintIndex + 1; PageNum = 0; } int SplitBatchIndex = 0; //每次到了页数开始分页 if (LastBatchCode == "" || (LastBatchCode != "" && LastBatchCode != DataTable.Rows[i]["ch_splitbatch"].ToString()) || (i == rowNum - 1 && (LastBatchCode != "" && LastBatchCode != DataTable.Rows[i]["ch_splitbatch"].ToString()))) { LastBatchCode = DataTable.Rows[i]["ch_splitbatch"].ToString(); //第一行添加客户信息 //if (i != rowNum - 1) { for (int j = 0; j < columnNum - 3; j++) { if (j == 0) { row1.CreateCell(j); row1.Cells[j].SetCellValue(DataTable.Columns["pi_title"].Caption + ":" + DataTable.Rows[i]["pi_title"].ToString() + " " + DataTable.Columns["ch_level"].Caption + ":" + DataTable.Rows[i]["ch_level"].ToString()); } else if (j == ShowDataIndex) { row1.CreateCell(j); row1.Cells[j].SetCellValue(DataTable.Columns["pi_inoutno"].Caption + ":" + DataTable.Rows[i]["pi_inoutno"].ToString()); } else { row1.CreateCell(j); } row1.GetCell(j).CellStyle = style; } row1 = sheet.CreateRow(PaintIndex); PaintIndex = PaintIndex + 1; //第二行添加型号 for (int j = 0; j < columnNum - 3; j++) { if (j == 0) { row1.CreateCell(j).SetCellValue(DataTable.Columns["pr_orispeccode"].Caption + ":" + DataTable.Rows[i]["pr_orispeccode"].ToString() + " " + "(" + DataTable.Rows[i]["me_desc"].ToString() + ")" + DataTable.Columns["pi_chipouttype"].Caption + ":" + DataTable.Rows[i]["pi_chipouttype"].ToString()); } else if (j == ShowSizeIndex) { row1.CreateCell(j).SetCellValue(DataTable.Columns["pr_size"].Caption + ":" + DataTable.Rows[i]["pr_size"].ToString()); } else if (j == ShowDataIndex) { row1.CreateCell(j).SetCellValue(DataTable.Columns["pi_date"].Caption + ":" + DataTable.Rows[i]["pi_date"].ToString()); } } //添加列名 row1 = sheet.CreateRow(PaintIndex); PaintIndex = PaintIndex + 1; int showcount = 0; for (int j = 4; j < columnNum; j++) { if (DataTable.Columns[j].ColumnName.ToLower() == "ch_splitbatch") { SplitBatchIndex = j - 4; } if (DataTable.Columns[j].ColumnName.ToLower() == "chw_percent1") { if (!PercentSum.ContainsKey(j - 4)) PercentSum.Add(j - 4, 0); showcount = showcount + 1; row1.CreateCell(j - 4); row1.Cells[j - 4].CellStyle = ColumnTitleStyle; row1.Cells[j - 4].SetCellValue(DataTable.Rows[0]["chw_itemname1"].ToString()); } else if (DataTable.Columns[j].ColumnName.ToLower() == "chw_percent2") { if (!PercentSum.ContainsKey(j - 4)) PercentSum.Add(j - 4, 0); showcount = showcount + 1; row1.CreateCell(j - 4); row1.Cells[j - 4].CellStyle = ColumnTitleStyle; row1.Cells[j - 4].SetCellValue(DataTable.Rows[0]["chw_itemname2"].ToString()); } else if (DataTable.Columns[j].ColumnName.ToLower() == "chw_percent3") { if (!PercentSum.ContainsKey(j - 4)) PercentSum.Add(j - 4, 0); showcount = showcount + 1; row1.CreateCell(j - 4); row1.Cells[j - 4].CellStyle = ColumnTitleStyle; row1.Cells[j - 4].SetCellValue(DataTable.Rows[0]["chw_itemname3"].ToString()); } else if (DataTable.Columns[j].ColumnName.ToLower() == "chw_percent4") { if (!PercentSum.ContainsKey(j - 4)) PercentSum.Add(j - 4, 0); showcount = showcount + 1; row1.CreateCell(j - 4); row1.Cells[j - 4].CellStyle = ColumnTitleStyle; row1.Cells[j - 4].SetCellValue(DataTable.Rows[0]["chw_itemname4"].ToString()); } else if (DataTable.Columns[j].ColumnName.ToLower() == "chw_percent5") { if (!PercentSum.ContainsKey(j - 4)) PercentSum.Add(j - 4, 0); showcount = showcount + 1; row1.CreateCell(j - 4); row1.Cells[j - 4].CellStyle = ColumnTitleStyle; row1.Cells[j - 4].SetCellValue(DataTable.Rows[0]["chw_itemname5"].ToString()); } else if ((NotShowColumn.Contains(DataTable.Columns[j].ColumnName.ToLower()))) { } else { showcount = showcount + 1; row1.CreateCell(j - 4); row1.Cells[j - 4].CellStyle = ColumnTitleStyle; row1.Cells[j - 4].SetCellValue(DataTable.Columns[j].Caption); } if (DataTable.Columns[j].ColumnName.ToString() == "io_qty") { NumIndex = j; if (ShowCountIndex == NumIndex - 4) { ShowCountIndex = ShowCountIndex + 1; } } } ShowColumnCount = showcount; row1 = sheet.CreateRow(PaintIndex); PaintIndex = PaintIndex + 1; } } //添加数据内容 for (int j = 4; j < columnNum; j++) { string Data = DataTable.Rows[i][j].ToString(); row1.CreateCell(j - 4); if (DataTable.Columns[j].ColumnName.ToLower() == "ch_bluefilm") { row1.CreateCell(j - 4, CellType.String); } if ((NotShowColumn.Contains(DataTable.Columns[j].ColumnName.ToLower()))) { } else { double Num = 0; if (double.TryParse(Data, out Num)&& DataTable.Columns[j].ColumnName.ToLower() != "ch_bluefilm") { row1.Cells[j - 4].SetCellValue(Num); for (int k = 0; k < PercentSum.Count; k++) { if (PercentSum.ContainsKey(j - 4)) { PercentSum[j - 4] += Num; } } } else { row1.Cells[j - 4].SetCellValue(Data); } row1.Cells[j - 4].CellStyle = styleborder; } if (DataTable.Columns[j].ColumnName == "io_qty") { row1.Cells[j - 4].SetCellValue(int.Parse(Data)); sumCount += int.Parse(DataTable.Rows[i][j].ToString()); totalCount += int.Parse(DataTable.Rows[i][j].ToString()); } if (DataTable.Columns[j].ColumnName == "rownum") { row1.Cells[j - 4].SetCellValue(i + 1); } if (DataTable.Columns[j].ColumnName == "ch_code") { sheet.AutoSizeColumn(j - 4); sheet.SetColumnWidth(j - 4, sheet.GetColumnWidth(j - 4) + 1000); } } if (i == rowNum - 1) { PageNum = PageNum + 1; row1 = sheet.CreateRow(PaintIndex); PaintIndex = PaintIndex + 1; for (int j = 0; j < ShowColumnCount; j++) { row1.CreateCell(j); if (j == 0) { row1.Cells[j].SetCellValue(小计); row1.Cells[j].CellStyle = styleborder; } else if (j == ShowPieceIndex) { row1.Cells[ShowPieceIndex].SetCellValue(PageNum); row1.Cells[j].CellStyle = styleborder; } else if (j == ShowCountIndex) { if (ShowCountIndex == SplitBatchIndex) { row1.CreateCell(j+1); row1.Cells[j + 1].SetCellValue(sumCount); row1.Cells[j + 1].CellStyle = styleborder; } else { row1.Cells[j].SetCellValue(sumCount); row1.Cells[j].CellStyle = styleborder; } } else { row1.Cells[j].CellStyle = styleborder; } if (CountQty) { for (int k = 0; k < PercentSum.Count; k++) { if (PercentSum.ContainsKey(j)) { if (PercentSum[j] != 0) { row1.Cells[j].SetCellValue(PercentSum[j] / PercentSum.Count); PercentSum[j] = 0; } } } } } //创建备注内容 row1 = sheet.CreateRow(PaintIndex); for (int j = 0; j < columnNum - 3; j++) { if (j == 0) { row1.CreateCell(j); row1.Cells[j].SetCellValue("备注"); } else if (j == ShowCountIndex) { row1.CreateCell(j); row1.Cells[j].SetCellValue(totalCount); } else if (j == ShowRemarkPiece) { row1.CreateCell(j); row1.Cells[j].SetCellValue(rowNum + "片"); } else if (j == 4) { row1.CreateCell(j); row1.Cells[j].SetCellValue(片); } else { row1.CreateCell(j); } row1.Cells[j].CellStyle = style; } sheet.SetRowBreak(PaintIndex); sheet.Footer.Center = "第&P页,共&N页"; PaintIndex = PaintIndex + 1; PageNum = 0; } PageNum = PageNum + 1; pib_id.Add(DataTable.Rows[i]["pib_id"].ToString()); pib_outboxcode1.Add(BoxCode.ToString()); } break; case "BoxCode": string LastBoxCode = ""; int PageNum1 = 0; for (int i = 0; i < rowNum; i++) { IRow row1 = sheet.CreateRow(PaintIndex); PaintIndex = PaintIndex + 1; row1.HeightInPoints = RowHeight; //如果批号不相等的时候 if (LastBoxCode != "" && LastBoxCode != DataTable.Rows[i]["CH_PBCODE"].ToString()) { BoxCode = BoxCode + 1; for (int j = 0; j < ShowColumnCount; j++) { row1.CreateCell(j); if (j == 0) { row1.Cells[j].SetCellValue(小计); row1.Cells[j].CellStyle = styleborder; } else if (j == ShowPieceIndex) { row1.Cells[ShowPieceIndex].SetCellValue(PageNum1); row1.Cells[j].CellStyle = styleborder; } else if (j == ShowCountIndex) { row1.Cells[j].SetCellValue(sumCount); row1.Cells[j].CellStyle = styleborder; } else { row1.Cells[j].CellStyle = styleborder; } if (CountQty) { for (int k = 0; k < PercentSum.Count; k++) { if (PercentSum.ContainsKey(j)) { if (PercentSum[j] != 0) { row1.Cells[j].SetCellValue(PercentSum[j] / PercentSum.Count); PercentSum[j] = 0; } } } } } sumCount = 0; row1 = sheet.CreateRow(PaintIndex); sheet.SetRowBreak(PaintIndex - 1); sheet.Footer.Center = "第&P页,共&N页"; PaintIndex = PaintIndex + 1; PageNum1 = 0; } //每次到了页数开始分页 if (LastBoxCode == "" || (LastBoxCode != "" && LastBoxCode != DataTable.Rows[i]["ch_pbcode"].ToString()) || ((i == rowNum - 1) && (LastBoxCode != "" && LastBoxCode != DataTable.Rows[i]["ch_pbcode"].ToString()))) { LastBoxCode = DataTable.Rows[i]["CH_PBCODE"].ToString(); //第一行添加客户信息 //if (i != rowNum - 1) { for (int j = 0; j < columnNum - 3; j++) { if (j == 0) { row1.CreateCell(j); row1.Cells[j].SetCellValue(DataTable.Columns["pi_title"].Caption + ":" + DataTable.Rows[i]["pi_title"].ToString() + " " + DataTable.Columns["ch_level"].Caption + ":" + DataTable.Rows[i]["ch_level"].ToString()); } else if (j == ShowDataIndex) { row1.CreateCell(j); row1.Cells[j].SetCellValue(DataTable.Columns["pi_inoutno"].Caption + ":" + DataTable.Rows[i]["pi_inoutno"].ToString()); } else { row1.CreateCell(j); } row1.GetCell(j).CellStyle = style; } row1 = sheet.CreateRow(PaintIndex); PaintIndex = PaintIndex + 1; //第二行添加型号 for (int j = 0; j < columnNum - 3; j++) { if (j == 0) { row1.CreateCell(j).SetCellValue(DataTable.Columns["pr_orispeccode"].Caption + ":" + DataTable.Rows[i]["pr_orispeccode"].ToString() + " " + "(" + DataTable.Rows[i]["me_desc"].ToString() + ")" + DataTable.Columns["pi_chipouttype"].Caption + ":" + DataTable.Rows[i]["pi_chipouttype"].ToString()); } else if (j == ShowSizeIndex) { row1.CreateCell(j).SetCellValue(DataTable.Columns["pr_size"].Caption + ":" + DataTable.Rows[i]["pr_size"].ToString()); } else if (j == ShowDataIndex) { row1.CreateCell(j).SetCellValue(DataTable.Columns["pi_date"].Caption + ":" + DataTable.Rows[i]["pi_date"].ToString()); } } //添加列名 row1 = sheet.CreateRow(PaintIndex); PaintIndex = PaintIndex + 1; int showcount = 0; for (int j = 4; j < columnNum; j++) { if (DataTable.Columns[j].ColumnName.ToLower() == "chw_percent1") { if (!PercentSum.ContainsKey(j - 4)) PercentSum.Add(j - 4, 0); showcount = showcount + 1; row1.CreateCell(j - 4); row1.Cells[j - 4].CellStyle = ColumnTitleStyle; row1.Cells[j - 4].SetCellValue(DataTable.Rows[0]["chw_itemname1"].ToString()); } else if (DataTable.Columns[j].ColumnName.ToLower() == "chw_percent2") { if (!PercentSum.ContainsKey(j - 4)) PercentSum.Add(j - 4, 0); showcount = showcount + 1; row1.CreateCell(j - 4); row1.Cells[j - 4].CellStyle = ColumnTitleStyle; row1.Cells[j - 4].SetCellValue(DataTable.Rows[0]["chw_itemname2"].ToString()); } else if (DataTable.Columns[j].ColumnName.ToLower() == "chw_percent3") { if (!PercentSum.ContainsKey(j - 4)) PercentSum.Add(j - 4, 0); showcount = showcount + 1; row1.CreateCell(j - 4); row1.Cells[j - 4].CellStyle = ColumnTitleStyle; row1.Cells[j - 4].SetCellValue(DataTable.Rows[0]["chw_itemname3"].ToString()); } else if (DataTable.Columns[j].ColumnName.ToLower() == "chw_percent4") { if (!PercentSum.ContainsKey(j - 4)) PercentSum.Add(j - 4, 0); showcount = showcount + 1; row1.CreateCell(j - 4); row1.Cells[j - 4].CellStyle = ColumnTitleStyle; row1.Cells[j - 4].SetCellValue(DataTable.Rows[0]["chw_itemname4"].ToString()); } else if (DataTable.Columns[j].ColumnName.ToLower() == "chw_percent5") { if (!PercentSum.ContainsKey(j - 4)) PercentSum.Add(j - 4, 0); showcount = showcount + 1; row1.CreateCell(j - 4); row1.Cells[j - 4].CellStyle = ColumnTitleStyle; row1.Cells[j - 4].SetCellValue(DataTable.Rows[0]["chw_itemname5"].ToString()); } else if ((NotShowColumn.Contains(DataTable.Columns[j].ColumnName.ToLower()))) { } else { showcount = showcount + 1; row1.CreateCell(j - 4); row1.Cells[j - 4].CellStyle = ColumnTitleStyle; row1.Cells[j - 4].SetCellValue(DataTable.Columns[j].Caption); } if (DataTable.Columns[j].ColumnName.ToString() == "io_qty") { NumIndex = j; if (ShowCountIndex == NumIndex - 4) { ShowCountIndex = ShowCountIndex + 1; } } } ShowColumnCount = showcount; row1 = sheet.CreateRow(PaintIndex); PaintIndex = PaintIndex + 1; } } //添加数据内容 for (int j = 4; j < columnNum; j++) { string Data = DataTable.Rows[i][j].ToString(); row1.CreateCell(j - 4); if (DataTable.Columns[j].ColumnName.ToLower() == "ch_bluefilm") { row1.CreateCell(j - 4, CellType.String); } if ((NotShowColumn.Contains(DataTable.Columns[j].ColumnName.ToLower()))) { } else { double Num = 0; if (double.TryParse(Data, out Num)&& DataTable.Columns[j].ColumnName.ToLower() != "ch_bluefilm") { row1.Cells[j - 4].SetCellValue(Num); for (int k = 0; k < PercentSum.Count; k++) { if (PercentSum.ContainsKey(j - 4)) { PercentSum[j - 4] += Num; } } } else { row1.Cells[j - 4].SetCellValue(Data); } row1.Cells[j - 4].CellStyle = styleborder; } if (DataTable.Columns[j].ColumnName == "io_qty") { row1.Cells[j - 4].SetCellValue(int.Parse(Data)); sumCount += int.Parse(DataTable.Rows[i][j].ToString()); totalCount += int.Parse(DataTable.Rows[i][j].ToString()); } if (DataTable.Columns[j].ColumnName == "rownum") { row1.Cells[j - 4].SetCellValue(i + 1); } if (DataTable.Columns[j].ColumnName == "ch_code") { sheet.AutoSizeColumn(j - 4); sheet.SetColumnWidth(j - 4, sheet.GetColumnWidth(j - 4) + 1000); } } if (i == rowNum - 1) { PageNum1 = PageNum1 + 1; row1 = sheet.CreateRow(PaintIndex); PaintIndex = PaintIndex + 1; for (int j = 0; j < ShowColumnCount; j++) { row1.CreateCell(j); if (j == 0) { row1.Cells[j].SetCellValue(小计); row1.Cells[j].CellStyle = styleborder; } else if (j == ShowPieceIndex) { row1.Cells[ShowPieceIndex].SetCellValue(PageNum1); row1.Cells[j].CellStyle = styleborder; } else if (j == ShowCountIndex) { row1.Cells[j].SetCellValue(sumCount); row1.Cells[j].CellStyle = styleborder; } else { row1.Cells[j].CellStyle = styleborder; } if (CountQty) { for (int k = 0; k < PercentSum.Count; k++) { if (PercentSum.ContainsKey(j)) { if (PercentSum[j] != 0) { row1.Cells[j].SetCellValue(PercentSum[j] / PercentSum.Count); PercentSum[j] = 0; } } } } } row1 = sheet.CreateRow(PaintIndex); for (int j = 0; j < columnNum - 3; j++) { if (j == 0) { row1.CreateCell(j); row1.Cells[j].SetCellValue("备注"); } else if (j == ShowCountIndex) { row1.CreateCell(j); row1.Cells[j].SetCellValue(totalCount); } else if (j == ShowRemarkPiece) { row1.CreateCell(j); row1.Cells[j].SetCellValue(rowNum + "片"); } else { row1.CreateCell(j); } row1.Cells[j].CellStyle = style; } sheet.SetRowBreak(PaintIndex); sheet.Footer.Center = "第&P页,共&N页"; PaintIndex = PaintIndex + 1; PageNum1 = 0; } PageNum1 = PageNum1 + 1; pib_id.Add(DataTable.Rows[i]["pib_id"].ToString()); pib_outboxcode1.Add(BoxCode.ToString()); } //for (int i = 0; i < sheet.LastRowNum; i++) //{ // if (i != 0) // { // sheet.AutoSizeColumn(i); // sheet.SetColumnWidth(i, sheet.GetColumnWidth(i) + 1000); // } //} break; default: break; } dh.BatchInsert("update prodiobarcode set pib_outboxcode1=:pib_outboxcode1 where pib_inoutno='" + Inoutno + "' and pib_id=:pib_id", new string[] { "pib_outboxcode1", "pib_id" }, pib_outboxcode1.ToArray(), pib_id.ToArray()); //删除下载链接再重新插入 HttpHandler.GenDownLoadLinK(Inoutno); //填充首页 sumCount = 0; totalCount = 0; PaintIndex = 1; ISheet sheet2 = book.CreateSheet("首页"); row = sheet2.CreateRow(0); row.CreateCell(0); row.Cells[0].SetCellValue(" " + companyname); row.GetCell(0).CellStyle = style; rowNum = FirstDT.Rows.Count; //不需要显示的列移除 for (int i = FirstDT.Columns.Count - 1; i > 0; i--) { for (int j = 0; j < box.Length; j++) { if (box[j].Name == "FirstPage_WID" && !box[j].Checked) { if (FirstDT.Columns[i].ColumnName.ToLower().Contains("ch_waterid")) { FirstDT.Columns.RemoveAt(i); } } if (box[j].Name == "FirstPage_YIELD" && !box[j].Checked) { if (FirstDT.Columns[i].ColumnName.ToLower().Contains("ch_yeild")) { FirstDT.Columns.RemoveAt(i); } } if (box[j].Name == "FirstPage_REMARK" && !box[j].Checked) { if (FirstDT.Columns[i].ColumnName.ToLower().Contains("ch_remark")) { FirstDT.Columns.RemoveAt(i); } } if (box[j].Name == "FirstPage_BOXCODE" && !box[j].Checked) { if (FirstDT.Columns[i].ColumnName.ToLower().Contains("ch_pbcode")) { FirstDT.Columns.RemoveAt(i); } } } } columnNum = FirstDT.Columns.Count; for (int i = 0; i < rowNum; i++) { IRow row1 = sheet2.CreateRow(PaintIndex); PaintIndex = PaintIndex + 1; row1.HeightInPoints = RowHeight; //只需要绘制一行 if (i == 0) { for (int j = 0; j < columnNum - 3; j++) { if (j == 0) { row1.CreateCell(j); row1.Cells[j].SetCellValue(FirstDT.Columns["pi_title"].Caption + ":" + FirstDT.Rows[i]["pi_title"].ToString() + " " + FirstDT.Columns["ch_level"].Caption + ":" + FirstDT.Rows[i]["ch_level"].ToString()); } else if (j > 5 && j == columnNum - 5) { row1.CreateCell(j); row1.Cells[j].SetCellValue(FirstDT.Columns["pi_inoutno"].Caption + ":" + FirstDT.Rows[i]["pi_inoutno"].ToString()); } else if (columnNum > 5 && j == columnNum - 5) { row1.CreateCell(j); row1.Cells[j].SetCellValue(FirstDT.Columns["pi_inoutno"].Caption + ":" + FirstDT.Rows[i]["pi_inoutno"].ToString()); } else { row1.CreateCell(j); } row1.GetCell(j).CellStyle = style; } row1 = sheet2.CreateRow(PaintIndex); PaintIndex = PaintIndex + 1; //第二行添加型号 for (int j = 0; j < columnNum - 3; j++) { if (j == 0) { row1.CreateCell(j).SetCellValue(FirstDT.Columns["pr_orispeccode"].Caption + ":" + FirstDT.Rows[i]["pr_orispeccode"].ToString() + " " + "(" + FirstDT.Rows[i]["me_desc"].ToString() + ")" + FirstDT.Columns["pi_chipouttype"].Caption + ":" + FirstDT.Rows[i]["pi_chipouttype"].ToString()); } else if (j == ShowSizeIndex) { row1.CreateCell(j); row1.Cells[j].SetCellValue(FirstDT.Columns["pr_size"].Caption + ":" + FirstDT.Rows[i]["pr_size"].ToString()); } else if (j > 5 && j == columnNum - 5) { row1.CreateCell(j); row1.Cells[j].SetCellValue(FirstDT.Columns["pi_date"].Caption + ":" + FirstDT.Rows[i]["pi_date"].ToString()); } else if (columnNum > 5 && j == columnNum - 5) { row1.CreateCell(j); row1.Cells[j].SetCellValue(FirstDT.Columns["pi_date"].Caption + ":" + FirstDT.Rows[i]["pi_date"].ToString()); } else { row1.CreateCell(j); } row1.GetCell(j).CellStyle = style; } row1 = sheet2.CreateRow(PaintIndex); PaintIndex = PaintIndex + 1; //添加列名 for (int j = 4; j < columnNum; j++) { row1.CreateCell(j - 4); if (NotShowColumn.Contains(FirstDT.Columns[j].ColumnName.ToLower())) { } else { row1.Cells[j - 4].CellStyle = styleborder; row1.Cells[j - 4].SetCellValue(FirstDT.Columns[j].Caption); } } row1 = sheet2.CreateRow(PaintIndex); PaintIndex = PaintIndex + 1; } //添加数据内容 ShowColumnCount = 0; for (int j = 4; j < columnNum; j++) { row1.CreateCell(j - 4); if (FirstDT.Columns[j].ColumnName == "ch_bluefilm") { row1.CreateCell(j - 4, CellType.String); } if (!NotShowColumn.Contains(FirstDT.Columns[j].ColumnName.ToLower())) { string Data = FirstDT.Rows[i][j].ToString(); row1.Cells[j - 4].SetCellValue(Data); row1.GetCell(j - 4).CellStyle = styleborder; if (FirstDT.Columns[j].ColumnName == "num") { row1.Cells[j - 4].SetCellValue(int.Parse(Data)); sumCount += int.Parse(Data); } if (FirstDT.Columns[j].ColumnName == "io_qty") { totalCount += int.Parse(Data); row1.Cells[j - 4].SetCellValue(int.Parse(Data)); } ShowColumnCount = ShowColumnCount + 1; } else { } } //添加总计行 if (i == rowNum - 1) { row1 = sheet2.CreateRow(PaintIndex); PaintIndex = PaintIndex + 1; for (int j = 0; j < ShowColumnCount; j++) { if (j == 0) { row1.CreateCell(j); row1.Cells[j].CellStyle = styleborder; row1.Cells[j].SetCellValue(总计); } else if (j == ShowColumnCount - 2) { row1.CreateCell(j); row1.Cells[j].CellStyle = styleborder; row1.Cells[j].SetCellValue(sumCount); } else if (j == ShowColumnCount - 1) { row1.CreateCell(j); row1.Cells[j].CellStyle = styleborder; row1.Cells[j].SetCellValue(totalCount); } else { row1.CreateCell(j); row1.Cells[j].CellStyle = styleborder; } } } } for (int i = 0; i < sheet2.LastRowNum; i++) { if (i != 0) { sheet2.AutoSizeColumn(i); sheet2.SetColumnWidth(i, sheet2.GetColumnWidth(i) + 1000); } } //将book的内容写入内存流中返回 book.Write(ms); return ms; } /// /// 将DataTable形式的数据转成Excel格式的,然后用字节流的形式写入文件 /// /// /// private MemoryStream DataTableToExcel_JINYUAN(DataTable FirstDT, DataTable DataTable, string Type, string Inoutno, int PageSize, List conditionbox) { string 小计 = ""; string 总计 = ""; string 片 = ""; string companyname = ""; //晶源的需要显示在数量列下面 int ShowCountIndex = 2; if (dh.getFieldDataByCondition("ProdInout", "pi_exporttype", "pi_inoutno='" + Inoutno + "'").ToString() == "Chinese") { 小计 = "小计"; 总计 = "总计"; 片 = "片"; companyname = "深爱半导体股份有限公司芯片出货清单"; } else { 小计 = "total"; 总计 = "total"; 片 = "slice"; companyname = "SHENZHEN SI SEMICONDUCTORS CO.,LTD"; } //转换为序列 CheckBox[] box = conditionbox.ToArray(); //创建内存流 MemoryStream ms = new MemoryStream(); //创建一个Book,相当于一个Excel文件 HSSFWorkbook book = new HSSFWorkbook(); //Excel中的Sheet ISheet sheet = book.CreateSheet("分页"); sheet.SetMargin(MarginType.TopMargin, 0.4); sheet.SetMargin(MarginType.BottomMargin, 0.1); sheet.SetMargin(MarginType.LeftMargin, 0.4); sheet.SetMargin(MarginType.RightMargin, 0.4); sheet.PrintSetup.NoColor = true; sheet.PrintSetup.Landscape = true; //芯片号需要作为更新盒号的条件 HSSFFont ffont = (HSSFFont)book.CreateFont(); ffont.FontName = "宋体"; //更新箱号 List pib_id = new List(); //系统打印箱号 List pib_outboxcode1 = new List(); int BoxCode = 1; ICellStyle style = book.CreateCellStyle(); style.VerticalAlignment = VerticalAlignment.Center; style.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Left; style.SetFont(ffont); ICellStyle styleborder = book.CreateCellStyle(); styleborder.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin; styleborder.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin; styleborder.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin; styleborder.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin; styleborder.VerticalAlignment = VerticalAlignment.Center; styleborder.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Left; styleborder.SetFont(ffont); string pi_inoutno = ""; List NotShowColumn = new List(); NotShowColumn.Add("ch_level"); NotShowColumn.Add("pib_id"); NotShowColumn.Add("chw_itemname1"); NotShowColumn.Add("chw_itemname2"); NotShowColumn.Add("chw_itemname3"); NotShowColumn.Add("chw_itemname4"); NotShowColumn.Add("chw_itemname5"); NotShowColumn.Add("pd_ordercode"); NotShowColumn.Add("pr_size"); NotShowColumn.Add("me_desc"); NotShowColumn.Add("pr_orispeccode"); NotShowColumn.Add("pr_orispeccode1"); NotShowColumn.Add("pi_title"); NotShowColumn.Add("pi_date"); NotShowColumn.Add("pi_chipouttype"); //设置列的宽度,根据首行的列的内容的长度来设置 for (int i = DataTable.Columns.Count - 1; i > 0; i--) { for (int j = 0; j < box.Length; j++) { if (box[j].Name.ToLower() == "ch_bluefilm" && !box[j].Checked) { if (DataTable.Columns[i].ColumnName.ToLower().Contains("ch_bluefilm")) { DataTable.Columns.RemoveAt(i); break; } } if (box[j].Name.ToLower() == "ch_code" && !box[j].Checked) { if (DataTable.Columns[i].ColumnName.ToLower().Contains("ch_code")) { DataTable.Columns.RemoveAt(i); break; } } if (box[j].Name.ToLower() == "ch_splitbatch" && !box[j].Checked) { if (DataTable.Columns[i].ColumnName.ToLower().Contains("ch_splitbatch")) { DataTable.Columns.RemoveAt(i); break; } } if (box[j].Name.ToLower() == "ch_waterid" && !box[j].Checked) { if (DataTable.Columns[i].ColumnName.ToLower().Contains("ch_waterid")) { DataTable.Columns.RemoveAt(i); break; } } if (box[j].Name.ToLower() == "ch_pbcode" && !box[j].Checked) { if (DataTable.Columns[i].ColumnName.ToLower().Contains("ch_pbcode")) { DataTable.Columns.RemoveAt(i); break; } } if (box[j].Name.ToLower() == "ch_remark" && !box[j].Checked) { if (DataTable.Columns[i].ColumnName.ToLower().Contains("ch_remark")) { DataTable.Columns.RemoveAt(i); break; } } if (box[j].Name.ToLower() == "ch_yield" && !box[j].Checked) { if (DataTable.Columns[i].ColumnName.ToLower().Contains("ch_yield")) { DataTable.Columns.RemoveAt(i); break; } } } } //获取行数量和列数量 int rowNum = DataTable.Rows.Count; int columnNum = DataTable.Columns.Count; //首先画好第一行带颜色的,单独写出来,避免写在循环里面 //ffont.FontHeight = 10; //开始绘制的Index int PaintIndex = 0; int sumCount = 0; int totalCount = 0; //Title的字体 HSSFFont titlefont = (HSSFFont)book.CreateFont(); titlefont.FontName = "宋体"; titlefont.FontHeight = 270; titlefont.Boldweight = (short)FontBoldWeight.Bold; HSSFFont ColumnTitle = (HSSFFont)book.CreateFont(); ColumnTitle.FontName = "宋体"; ColumnTitle.Boldweight = (short)FontBoldWeight.Bold; ICellStyle ColumnTitleStyle = book.CreateCellStyle(); ColumnTitleStyle.SetFont(ColumnTitle); ColumnTitleStyle.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin; ColumnTitleStyle.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin; ColumnTitleStyle.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin; ColumnTitleStyle.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin; ICellStyle TitleStyle = book.CreateCellStyle(); TitleStyle.SetFont(titlefont); int ShowColumnCount = 0; IRow row1 = null; switch (Type) { case "FixRow": //清理系统取出来的数据 BaseUtil.CleanDataTableData(FirstDT); //首页参数拼接 string First_OrderCode = ""; string First_Prspec = ""; string First_Batch = ""; ArrayList First_WID = new ArrayList(); for (int i = 0; i < rowNum; i++) { if (PaintIndex != 0) { row1 = sheet.CreateRow(PaintIndex); PaintIndex = PaintIndex + 1; row1.HeightInPoints = RowHeight; } //不包含的订单号 if (DataTable.Columns.Contains("pd_ordercode") && !First_OrderCode.Contains(DataTable.Rows[i]["pd_ordercode"].ToString())) { First_OrderCode += DataTable.Rows[i]["pd_ordercode"].ToString() + " "; } //不包含的物料型号 if (DataTable.Columns.Contains("pr_orispeccode") && !First_Prspec.Contains(DataTable.Rows[i]["pr_orispeccode"].ToString())) { First_Prspec += DataTable.Rows[i]["pr_orispeccode"].ToString() + " "; } //不包含扩撒批号 if (DataTable.Columns.Contains("ch_splitbatch") && !First_Batch.Contains(DataTable.Rows[i]["ch_splitbatch"].ToString())) { First_Batch += DataTable.Rows[i]["ch_splitbatch"].ToString() + " "; } //不包含Wafer_id if (DataTable.Columns.Contains("Wafer_ID") && !First_WID.Contains(DataTable.Rows[i]["Wafer_ID"].ToString())) { First_WID.Add(DataTable.Rows[i]["Wafer_ID"].ToString()); } if (i / PageSize >= 1 && i % PageSize == 0) { DataRow dr = FirstDT.NewRow(); dr["me_desc"] = DataTable.Rows[i]["me_desc"].ToString(); dr["pr_size"] = DataTable.Rows[i]["pr_size"].ToString(); dr["pi_chipouttype"] = DataTable.Rows[i]["pi_chipouttype"].ToString(); dr["ch_level"] = DataTable.Rows[i]["ch_level"].ToString(); dr["pr_orispeccode"] = DataTable.Rows[i]["pr_orispeccode"].ToString(); dr["pi_inoutno"] = DataTable.Rows[i]["pi_inoutno"].ToString(); pi_inoutno = DataTable.Rows[i]["pi_inoutno"].ToString(); dr["pi_title"] = DataTable.Rows[i]["pi_title"].ToString(); dr["pi_date"] = DataTable.Rows[i]["pi_date"].ToString(); dr["pd_ordercode"] = First_OrderCode; dr["pr_orispeccode"] = First_Prspec; dr["ch_splitbatch"] = First_Batch; dr["ch_waterid"] = BaseUtil.GetArrStr(First_WID, " "); dr["num"] = PageSize; dr["io_qty"] = sumCount; FirstDT.Rows.Add(dr); First_OrderCode = ""; First_Prspec = ""; First_Batch = ""; First_WID.Clear(); BoxCode = BoxCode + 1; for (int j = 0; j < ShowColumnCount; j++) { row1.CreateCell(j); if (j == 0) { row1.Cells[j].SetCellValue(小计); } else if (j == ShowPieceIndex) { row1.Cells[ShowPieceIndex].SetCellValue((i % PageSize == 0 ? PageSize : i) + 片); row1.Cells[1].CellStyle = ColumnTitleStyle; } else if (j == ShowCountIndex) { row1.Cells[j].SetCellValue(sumCount); } row1.Cells[j].CellStyle = styleborder; } sumCount = 0; row1 = sheet.CreateRow(PaintIndex); sheet.SetRowBreak(PaintIndex - 1); sheet.Footer.Center = "第&P页,共&N页"; } //每次到了页数开始分页 if (i % PageSize == 0 || i == rowNum - 1) { //第一行添加客户信息 rownum只有一行的情 if (i != rowNum - 1 || rowNum == 1 || (rowNum - i == rowNum % PageSize)) { //抬头设置 row1 = sheet.CreateRow(PaintIndex); PaintIndex = PaintIndex + 1; row1.CreateCell(0).SetCellValue(" " + companyname); row1.GetCell(0).CellStyle = TitleStyle; row1 = sheet.CreateRow(PaintIndex); PaintIndex = PaintIndex + 1; for (int j = 0; j < columnNum - 3; j++) { if (j == 0) { row1.CreateCell(j); row1.Cells[j].SetCellValue(DataTable.Columns["pi_title"].Caption + ":" + DataTable.Rows[i]["pi_title"].ToString() + " " + DataTable.Columns["ch_level"].Caption + ":" + DataTable.Rows[i]["ch_level"].ToString()); } else if (j == ShowDataIndex) { row1.CreateCell(j); row1.Cells[j].SetCellValue(DataTable.Columns["pi_inoutno"].Caption + ":" + DataTable.Rows[i]["pi_inoutno"].ToString()); } else { row1.CreateCell(j); } row1.GetCell(j).CellStyle = style; } row1 = sheet.CreateRow(PaintIndex); PaintIndex = PaintIndex + 1; //第二行添加型号 for (int j = 0; j < columnNum - 3; j++) { if (j == 0) { row1.CreateCell(j); row1.Cells[j].SetCellValue(DataTable.Columns["pr_orispeccode"].Caption + ":" + DataTable.Rows[i]["pr_orispeccode"].ToString() + " " + DataTable.Columns["pi_chipouttype"].Caption + ":" + DataTable.Rows[i]["pi_chipouttype"].ToString()); } else if (j == ShowSizeIndex) { row1.CreateCell(j); row1.Cells[j].SetCellValue(DataTable.Columns["pr_size"].Caption + ":" + DataTable.Rows[i]["pr_size"].ToString()); } else if (j == ShowDataIndex) { row1.CreateCell(j); row1.Cells[j].SetCellValue(DataTable.Columns["pi_date"].Caption + ":" + DataTable.Rows[i]["pi_date"].ToString()); } else { row1.CreateCell(j); } row1.GetCell(j).CellStyle = style; } //特殊客户添加一列空行 row1 = sheet.CreateRow(PaintIndex); PaintIndex = PaintIndex + 1; for (int j = 0; j < columnNum; j++) { row1.CreateCell(j).SetCellValue(""); } //添加列名 row1 = sheet.CreateRow(PaintIndex); PaintIndex = PaintIndex + 1; //计数列所在的索引 int showcount = 0; //前面有4列标题内容,数据库设置的,需要从4开始索引 for (int j = 4; j < columnNum; j++) { if (DataTable.Columns[j].ColumnName.ToLower() == "chw_percent1") { showcount = showcount + 1; row1.CreateCell(j - 4); row1.Cells[j - 4].CellStyle = ColumnTitleStyle; row1.Cells[j - 4].SetCellValue(DataTable.Rows[0]["chw_itemname1"].ToString()); } else if (DataTable.Columns[j].ColumnName.ToLower() == "chw_percent2") { showcount = showcount + 1; row1.CreateCell(j - 4); row1.Cells[j - 4].CellStyle = ColumnTitleStyle; row1.Cells[j - 4].SetCellValue(DataTable.Rows[0]["chw_itemname2"].ToString()); } else if (DataTable.Columns[j].ColumnName.ToLower() == "chw_percent3") { showcount = showcount + 1; row1.CreateCell(j - 4); row1.Cells[j - 4].CellStyle = ColumnTitleStyle; row1.Cells[j - 4].SetCellValue(DataTable.Rows[0]["chw_itemname3"].ToString()); } else if (DataTable.Columns[j].ColumnName.ToLower() == "chw_percent4") { showcount = showcount + 1; row1.CreateCell(j - 4); row1.Cells[j - 4].CellStyle = ColumnTitleStyle; row1.Cells[j - 4].SetCellValue(DataTable.Rows[0]["chw_itemname4"].ToString()); } else if (DataTable.Columns[j].ColumnName.ToLower() == "chw_percent5") { showcount = showcount + 1; row1.CreateCell(j - 4); row1.Cells[j - 4].CellStyle = ColumnTitleStyle; row1.Cells[j - 4].SetCellValue(DataTable.Rows[0]["chw_itemname5"].ToString()); } else if ((NotShowColumn.Contains(DataTable.Columns[j].ColumnName.ToLower()))) { } else { showcount = showcount + 1; row1.CreateCell(j - 4); row1.Cells[j - 4].CellStyle = ColumnTitleStyle; row1.Cells[j - 4].SetCellValue(DataTable.Columns[j].Caption); } if (DataTable.Columns[j].ColumnName.ToString() == "io_qty") { NumIndex = j - 4; } } ShowColumnCount = showcount; row1 = sheet.CreateRow(PaintIndex); PaintIndex = PaintIndex + 1; } } //添加数据内容 for (int j = 4; j < columnNum; j++) { string Data = DataTable.Rows[i][j].ToString(); row1.CreateCell(j - 4); if (DataTable.Columns[j].ColumnName.ToLower() == "ch_bluefilm") { row1.CreateCell(j - 4, CellType.String); } if ((NotShowColumn.Contains(DataTable.Columns[j].ColumnName.ToLower()))) { } else { double Num = 0; if (double.TryParse(Data, out Num)&& DataTable.Columns[j].ColumnName.ToLower() != "ch_bluefilm") { row1.Cells[j - 4].SetCellValue(Num); } else { row1.Cells[j - 4].SetCellValue(Data); } row1.Cells[j - 4].CellStyle = styleborder; } if (DataTable.Columns[j].ColumnName == "io_qty") { row1.Cells[j - 4].SetCellValue(int.Parse(Data)); sumCount += int.Parse(DataTable.Rows[i][j].ToString()); totalCount += int.Parse(DataTable.Rows[i][j].ToString()); } if (DataTable.Columns[j].ColumnName == "rownum") { row1.Cells[j - 4].SetCellValue(i + 1); } if (DataTable.Columns[j].ColumnName == "ch_code") { sheet.AutoSizeColumn(j - 4); sheet.SetColumnWidth(j - 4, sheet.GetColumnWidth(j - 4) + 1000); } } //固定行号分组的时候自动拼接新的DataTable if (i == rowNum - 1) { DataRow dr = FirstDT.NewRow(); dr["me_desc"] = DataTable.Rows[i]["me_desc"].ToString(); dr["pr_size"] = DataTable.Rows[i]["pr_size"].ToString(); dr["pi_chipouttype"] = DataTable.Rows[i]["pi_chipouttype"].ToString(); dr["ch_level"] = DataTable.Rows[i]["ch_level"].ToString(); dr["pr_orispeccode"] = DataTable.Rows[i]["pr_orispeccode"].ToString(); dr["pi_inoutno"] = DataTable.Rows[i]["pi_inoutno"].ToString(); dr["pi_title"] = DataTable.Rows[i]["pi_title"].ToString(); dr["pi_date"] = DataTable.Rows[i]["pi_date"].ToString(); dr["pd_ordercode"] = First_OrderCode; dr["pr_orispeccode"] = First_Prspec; dr["ch_splitbatch"] = First_Batch; dr["ch_waterid"] = BaseUtil.GetArrStr(First_WID, " "); dr["num"] = (i % PageSize) + 1; dr["io_qty"] = sumCount; FirstDT.Rows.Add(dr); row1 = sheet.CreateRow(PaintIndex); PaintIndex = PaintIndex + 1; for (int j = 0; j < ShowColumnCount; j++) { row1.CreateCell(j); if (j == 0) { row1.Cells[j].SetCellValue(小计); } else if (j == ShowPieceIndex) { row1.Cells[ShowPieceIndex].SetCellValue((rowNum % PageSize == 0 ? PageSize : (rowNum % PageSize)) + 片); row1.Cells[1].CellStyle = ColumnTitleStyle; } else if (j == ShowCountIndex) { row1.Cells[j].SetCellValue(sumCount); } row1.Cells[j].CellStyle = styleborder; } row1 = sheet.CreateRow(PaintIndex); for (int j = 0; j < columnNum - 3; j++) { if (j == 0) { row1.CreateCell(j); row1.Cells[j].SetCellValue("备注"); } else if (j == ShowCountIndex) { row1.CreateCell(j); row1.Cells[j].SetCellValue(totalCount); } else if (j == ShowRemarkPiece) { row1.CreateCell(j); row1.Cells[j].SetCellValue(rowNum + 片); } else { row1.CreateCell(j); } row1.Cells[j].CellStyle = style; } sheet.SetRowBreak(PaintIndex); sheet.Footer.Center = "第&P页,共&N页"; } pib_id.Add(DataTable.Rows[i]["pib_id"].ToString()); pib_outboxcode1.Add(BoxCode.ToString()); } break; case "BatchCode": string LastBatchCode = ""; int PageNum = 0; for (int i = 0; i < rowNum; i++) { row1 = sheet.CreateRow(PaintIndex); if (i != 0) PaintIndex = PaintIndex + 1; row1.HeightInPoints = RowHeight; //如果批号不相等的时候 if (LastBatchCode != "" && LastBatchCode != DataTable.Rows[i]["ch_splitbatch"].ToString()) { BoxCode = BoxCode + 1; for (int j = 0; j < ShowColumnCount; j++) { row1.CreateCell(j); if (j == 0) { row1.Cells[j].SetCellValue(小计); row1.Cells[j].CellStyle = styleborder; } else if (j == ShowPieceIndex) { row1.Cells[ShowPieceIndex].SetCellValue(PageNum + 片); row1.Cells[1].CellStyle = ColumnTitleStyle; } else if (j == ShowCountIndex) { row1.Cells[j].SetCellValue(sumCount); row1.Cells[j].CellStyle = styleborder; } else { row1.Cells[j].CellStyle = styleborder; } } sumCount = 0; //row1 = sheet.CreateRow(PaintIndex); sheet.SetRowBreak(PaintIndex - 1); sheet.Footer.Center = "第&P页,共&N页"; PageNum = 0; } //每次到了页数开始分页 if (LastBatchCode == "" || (LastBatchCode != "" && LastBatchCode != DataTable.Rows[i]["ch_splitbatch"].ToString())) { LastBatchCode = DataTable.Rows[i]["ch_splitbatch"].ToString(); //第一行添加客户信息 row1 = sheet.CreateRow(PaintIndex); PaintIndex = PaintIndex + 1; row1.CreateCell(0).SetCellValue(" " + companyname); row1.GetCell(0).CellStyle = TitleStyle; row1 = sheet.CreateRow(PaintIndex); PaintIndex = PaintIndex + 1; //if (i != rowNum - 1) { for (int j = 0; j < columnNum - 3; j++) { if (j == 0) { row1.CreateCell(j); row1.Cells[j].SetCellValue(DataTable.Columns["pi_title"].Caption + ":" + DataTable.Rows[i]["pi_title"].ToString() + " " + DataTable.Columns["ch_level"].Caption + ":" + DataTable.Rows[i]["ch_level"].ToString()); } else if (j == ShowDataIndex) { row1.CreateCell(j); row1.Cells[j].SetCellValue(DataTable.Columns["pi_inoutno"].Caption + ":" + DataTable.Rows[i]["pi_inoutno"].ToString()); } else { row1.CreateCell(j); } row1.GetCell(j).CellStyle = style; } row1 = sheet.CreateRow(PaintIndex); PaintIndex = PaintIndex + 1; //第二行添加型号 for (int j = 0; j < columnNum - 3; j++) { if (j == 0) { row1.CreateCell(j); row1.Cells[j].SetCellValue(DataTable.Columns["pr_orispeccode"].Caption + ":" + DataTable.Rows[i]["pr_orispeccode"].ToString() + " " + DataTable.Columns["pi_chipouttype"].Caption + ":" + DataTable.Rows[i]["pi_chipouttype"].ToString()); } else if (j == ShowSizeIndex) { row1.CreateCell(j); row1.Cells[j].SetCellValue(DataTable.Columns["pr_size"].Caption + ":" + DataTable.Rows[i]["pr_size"].ToString()); } else if (j == ShowDataIndex) { row1.CreateCell(j); row1.Cells[j].SetCellValue(DataTable.Columns["pi_date"].Caption + ":" + DataTable.Rows[i]["pi_date"].ToString()); } else { row1.CreateCell(j); } row1.GetCell(j).CellStyle = style; } //特殊客户添加一列空行 row1 = sheet.CreateRow(PaintIndex); PaintIndex = PaintIndex + 1; for (int j = 0; j < columnNum; j++) { row1.CreateCell(j).SetCellValue(""); } //添加列名 row1 = sheet.CreateRow(PaintIndex); PaintIndex = PaintIndex + 1; int showcount = 0; for (int j = 4; j < columnNum; j++) { if (DataTable.Columns[j].ColumnName.ToLower() == "chw_percent1") { showcount = showcount + 1; row1.CreateCell(j - 4); row1.Cells[j - 4].CellStyle = ColumnTitleStyle; row1.Cells[j - 4].SetCellValue(DataTable.Rows[0]["chw_itemname1"].ToString()); } else if (DataTable.Columns[j].ColumnName.ToLower() == "chw_percent2") { showcount = showcount + 1; row1.CreateCell(j - 4); row1.Cells[j - 4].CellStyle = ColumnTitleStyle; row1.Cells[j - 4].SetCellValue(DataTable.Rows[0]["chw_itemname2"].ToString()); } else if (DataTable.Columns[j].ColumnName.ToLower() == "chw_percent3") { showcount = showcount + 1; row1.CreateCell(j - 4); row1.Cells[j - 4].CellStyle = ColumnTitleStyle; row1.Cells[j - 4].SetCellValue(DataTable.Rows[0]["chw_itemname3"].ToString()); } else if (DataTable.Columns[j].ColumnName.ToLower() == "chw_percent4") { showcount = showcount + 1; row1.CreateCell(j - 4); row1.Cells[j - 4].CellStyle = ColumnTitleStyle; row1.Cells[j - 4].SetCellValue(DataTable.Rows[0]["chw_itemname4"].ToString()); } else if (DataTable.Columns[j].ColumnName.ToLower() == "chw_percent5") { showcount = showcount + 1; row1.CreateCell(j - 4); row1.Cells[j - 4].CellStyle = ColumnTitleStyle; row1.Cells[j - 4].SetCellValue(DataTable.Rows[0]["chw_itemname5"].ToString()); } else if ((NotShowColumn.Contains(DataTable.Columns[j].ColumnName.ToLower()))) { } else { showcount = showcount + 1; row1.CreateCell(j - 4); row1.Cells[j - 4].CellStyle = ColumnTitleStyle; row1.Cells[j - 4].SetCellValue(DataTable.Columns[j].Caption); } if (DataTable.Columns[j].ColumnName.ToString() == "io_qty") { NumIndex = j - 4; } } ShowColumnCount = showcount; row1 = sheet.CreateRow(PaintIndex); PaintIndex = PaintIndex + 1; } } //添加数据内容 for (int j = 4; j < columnNum; j++) { string Data = DataTable.Rows[i][j].ToString(); row1.CreateCell(j - 4); if (DataTable.Columns[j].ColumnName.ToLower() == "ch_bluefilm") { row1.CreateCell(j - 4, CellType.String); } if ((NotShowColumn.Contains(DataTable.Columns[j].ColumnName.ToLower()))) { } else { double Num = 0; if (double.TryParse(Data, out Num)&& DataTable.Columns[j].ColumnName.ToLower() != "ch_bluefilm") { row1.Cells[j - 4].SetCellValue(Num); } else { row1.Cells[j - 4].SetCellValue(Data); } row1.Cells[j - 4].CellStyle = styleborder; } if (DataTable.Columns[j].ColumnName == "io_qty") { row1.Cells[j - 4].SetCellValue(int.Parse(Data)); sumCount += int.Parse(DataTable.Rows[i][j].ToString()); totalCount += int.Parse(DataTable.Rows[i][j].ToString()); } if (DataTable.Columns[j].ColumnName == "rownum") { row1.Cells[j - 4].SetCellValue(i + 1); } if (DataTable.Columns[j].ColumnName == "ch_code") { sheet.AutoSizeColumn(j - 4); sheet.SetColumnWidth(j - 4, sheet.GetColumnWidth(j - 4) + 1000); } } if (i == rowNum - 1) { row1 = sheet.CreateRow(PaintIndex); PaintIndex = PaintIndex + 1; for (int j = 0; j < ShowColumnCount; j++) { row1.CreateCell(j); if (j == 0) { row1.Cells[j].SetCellValue(小计); row1.Cells[j].CellStyle = styleborder; } else if (j == ShowPieceIndex) { row1.Cells[ShowPieceIndex].SetCellValue(PageNum + 片); row1.Cells[1].CellStyle = ColumnTitleStyle; } else if (j == ShowCountIndex) { row1.Cells[j].SetCellValue(sumCount); row1.Cells[j].CellStyle = styleborder; } else { row1.Cells[j].CellStyle = styleborder; } } //创建备注内容 row1 = sheet.CreateRow(PaintIndex); for (int j = 0; j < columnNum - 3; j++) { if (j == 0) { row1.CreateCell(j); row1.Cells[j].SetCellValue("备注"); } else if (j == ShowCountIndex) { row1.CreateCell(j); row1.Cells[j].SetCellValue(totalCount); } else if (j == ShowRemarkPiece) { row1.CreateCell(j); row1.Cells[j].SetCellValue(rowNum + 片); } else { row1.CreateCell(j); } row1.Cells[j].CellStyle = style; } sheet.SetRowBreak(PaintIndex); sheet.Footer.Center = "第&P页,共&N页"; PageNum = 0; } PageNum = PageNum + 1; pib_id.Add(DataTable.Rows[i]["pib_id"].ToString()); pib_outboxcode1.Add(BoxCode.ToString()); } break; case "BoxCode": string LastBoxCode = ""; int PageNum1 = 0; for (int i = 0; i < rowNum; i++) { row1 = sheet.CreateRow(PaintIndex); if (i != 0) PaintIndex = PaintIndex + 1; row1.HeightInPoints = RowHeight; //如果箱号不相等的时候 if (LastBoxCode != "" && LastBoxCode != DataTable.Rows[i]["CH_PBCODE"].ToString()) { BoxCode = BoxCode + 1; for (int j = 0; j < ShowColumnCount; j++) { row1.CreateCell(j); if (j == 0) { row1.Cells[j].SetCellValue(小计); row1.Cells[j].CellStyle = styleborder; } else if (j == ShowPieceIndex) { row1.Cells[ShowPieceIndex].SetCellValue(PageNum1 + 片); row1.Cells[1].CellStyle = ColumnTitleStyle; } else if (j == ShowCountIndex) { row1.Cells[j].SetCellValue(sumCount); row1.Cells[j].CellStyle = styleborder; } else { row1.Cells[j].CellStyle = styleborder; } } sumCount = 0; //row1 = sheet.CreateRow(PaintIndex); sheet.SetRowBreak(PaintIndex - 1); sheet.Footer.Center = "第&P页,共&N页"; PageNum1 = 0; } //每次到了页数开始分页 if (LastBoxCode == "" || (LastBoxCode != "" && LastBoxCode != DataTable.Rows[i]["ch_pbcode"].ToString()) || ((i == rowNum - 1) && (LastBoxCode != "" && LastBoxCode != DataTable.Rows[i]["ch_pbcode"].ToString()))) { LastBoxCode = DataTable.Rows[i]["CH_PBCODE"].ToString(); row1 = sheet.CreateRow(PaintIndex); PaintIndex = PaintIndex + 1; row1.CreateCell(0).SetCellValue(" " + companyname); row1.GetCell(0).CellStyle = TitleStyle; row1 = sheet.CreateRow(PaintIndex); PaintIndex = PaintIndex + 1; //第一行添加客户信息 //if (i != rowNum - 1) { for (int j = 0; j < columnNum - 3; j++) { if (j == 0) { row1.CreateCell(j); row1.Cells[j].SetCellValue(DataTable.Columns["pi_title"].Caption + ":" + DataTable.Rows[i]["pi_title"].ToString() + " " + DataTable.Columns["ch_level"].Caption + ":" + DataTable.Rows[i]["ch_level"].ToString()); } else if (j == ShowDataIndex) { row1.CreateCell(j); row1.Cells[j].SetCellValue(DataTable.Columns["pi_inoutno"].Caption + ":" + DataTable.Rows[i]["pi_inoutno"].ToString()); } else { row1.CreateCell(j); } row1.GetCell(j).CellStyle = style; } row1 = sheet.CreateRow(PaintIndex); PaintIndex = PaintIndex + 1; //第二行添加型号 for (int j = 0; j < columnNum - 3; j++) { if (j == 0) { row1.CreateCell(j); row1.Cells[j].SetCellValue(DataTable.Columns["pr_orispeccode"].Caption + ":" + DataTable.Rows[i]["pr_orispeccode"].ToString() + " " + DataTable.Columns["pi_chipouttype"].Caption + ":" + DataTable.Rows[i]["pi_chipouttype"].ToString()); } else if (j == ShowSizeIndex) { row1.CreateCell(j); row1.Cells[j].SetCellValue(DataTable.Columns["pr_size"].Caption + ":" + DataTable.Rows[i]["pr_size"].ToString()); } else if (j == ShowDataIndex) { row1.CreateCell(j); row1.Cells[j].SetCellValue(DataTable.Columns["pi_date"].Caption + ":" + DataTable.Rows[i]["pi_date"].ToString()); } else { row1.CreateCell(j); } row1.GetCell(j).CellStyle = style; } //特殊客户添加一列空行 row1 = sheet.CreateRow(PaintIndex); PaintIndex = PaintIndex + 1; for (int j = 0; j < columnNum; j++) { row1.CreateCell(j).SetCellValue(""); } //添加列名 row1 = sheet.CreateRow(PaintIndex); PaintIndex = PaintIndex + 1; int showcount = 0; for (int j = 4; j < columnNum; j++) { if (DataTable.Columns[j].ColumnName.ToLower() == "chw_percent1") { showcount = showcount + 1; row1.CreateCell(j - 4); row1.Cells[j - 4].CellStyle = ColumnTitleStyle; row1.Cells[j - 4].SetCellValue(DataTable.Rows[0]["chw_itemname1"].ToString()); } else if (DataTable.Columns[j].ColumnName.ToLower() == "chw_percent2") { showcount = showcount + 1; row1.CreateCell(j - 4); row1.Cells[j - 4].CellStyle = ColumnTitleStyle; row1.Cells[j - 4].SetCellValue(DataTable.Rows[0]["chw_itemname2"].ToString()); } else if (DataTable.Columns[j].ColumnName.ToLower() == "chw_percent3") { showcount = showcount + 1; row1.CreateCell(j - 4); row1.Cells[j - 4].CellStyle = ColumnTitleStyle; row1.Cells[j - 4].SetCellValue(DataTable.Rows[0]["chw_itemname3"].ToString()); } else if (DataTable.Columns[j].ColumnName.ToLower() == "chw_percent4") { showcount = showcount + 1; row1.CreateCell(j - 4); row1.Cells[j - 4].CellStyle = ColumnTitleStyle; row1.Cells[j - 4].SetCellValue(DataTable.Rows[0]["chw_itemname4"].ToString()); } else if (DataTable.Columns[j].ColumnName.ToLower() == "chw_percent5") { showcount = showcount + 1; row1.CreateCell(j - 4); row1.Cells[j - 4].CellStyle = ColumnTitleStyle; row1.Cells[j - 4].SetCellValue(DataTable.Rows[0]["chw_itemname5"].ToString()); } else if ((NotShowColumn.Contains(DataTable.Columns[j].ColumnName.ToLower()))) { } else { showcount = showcount + 1; row1.CreateCell(j - 4); row1.Cells[j - 4].CellStyle = ColumnTitleStyle; row1.Cells[j - 4].SetCellValue(DataTable.Columns[j].Caption); } if (DataTable.Columns[j].ColumnName.ToString() == "io_qty") { NumIndex = j - 4; } } ShowColumnCount = showcount; row1 = sheet.CreateRow(PaintIndex); PaintIndex = PaintIndex + 1; } } //添加数据内容 for (int j = 4; j < columnNum; j++) { string Data = DataTable.Rows[i][j].ToString(); row1.CreateCell(j - 4); if (DataTable.Columns[j].ColumnName.ToLower() == "ch_bluefilm") { row1.CreateCell(j - 4, CellType.String); } if ((NotShowColumn.Contains(DataTable.Columns[j].ColumnName.ToLower()))) { } else { double Num = 0; if (double.TryParse(Data, out Num)&& DataTable.Columns[j].ColumnName.ToLower() != "ch_bluefilm") { row1.Cells[j - 4].SetCellValue(Num); } else { row1.Cells[j - 4].SetCellValue(Data); } row1.Cells[j - 4].CellStyle = styleborder; } if (DataTable.Columns[j].ColumnName == "io_qty") { row1.Cells[j - 4].SetCellValue(int.Parse(Data)); sumCount += int.Parse(DataTable.Rows[i][j].ToString()); totalCount += int.Parse(DataTable.Rows[i][j].ToString()); } if (DataTable.Columns[j].ColumnName == "rownum") { row1.Cells[j - 4].SetCellValue(i + 1); } if (DataTable.Columns[j].ColumnName == "ch_code") { sheet.AutoSizeColumn(j - 4); sheet.SetColumnWidth(j - 4, sheet.GetColumnWidth(j - 4) + 1000); } } if (i == rowNum - 1) { PageNum1 = PageNum1 + 1; row1 = sheet.CreateRow(PaintIndex); PaintIndex = PaintIndex + 1; for (int j = 0; j < ShowColumnCount; j++) { row1.CreateCell(j); if (j == 0) { row1.Cells[j].SetCellValue(小计); row1.Cells[j].CellStyle = styleborder; } else if (j == ShowPieceIndex) { row1.Cells[ShowPieceIndex].SetCellValue(PageNum1 + 片); row1.Cells[1].CellStyle = ColumnTitleStyle; } else if (j == ShowCountIndex) { row1.Cells[j].SetCellValue(sumCount); row1.Cells[j].CellStyle = styleborder; } else { row1.Cells[j].CellStyle = styleborder; } } row1 = sheet.CreateRow(PaintIndex); for (int j = 0; j < columnNum - 3; j++) { if (j == 0) { row1.CreateCell(j); row1.Cells[j].SetCellValue("备注"); } else if (j == ShowCountIndex) { row1.CreateCell(j); row1.Cells[j].SetCellValue(totalCount); } else if (j == ShowRemarkPiece) { row1.CreateCell(j); row1.Cells[j].SetCellValue(rowNum + 片); } else { row1.CreateCell(j); } row1.Cells[j].CellStyle = style; } sheet.SetRowBreak(PaintIndex); sheet.Footer.Center = "第&P页,共&N页"; PageNum1 = 0; } PageNum1 = PageNum1 + 1; pib_id.Add(DataTable.Rows[i]["pib_id"].ToString()); pib_outboxcode1.Add(BoxCode.ToString()); } break; default: break; } dh.BatchInsert("update prodiobarcode set pib_outboxcode1=:pib_outboxcode1 where pib_inoutno='" + Inoutno + "' and pib_id=:pib_id", new string[] { "pib_outboxcode1", "pib_id" }, pib_outboxcode1.ToArray(), pib_id.ToArray()); //删除下载链接再重新插入 HttpHandler.GenDownLoadLinK(Inoutno); //填充首页 sumCount = 0; totalCount = 0; PaintIndex = 1; ISheet sheet2 = book.CreateSheet("首页"); IRow row = sheet2.CreateRow(0); row.CreateCell(0); row.Cells[0].SetCellValue(" " + companyname); row.GetCell(0).CellStyle = style; rowNum = FirstDT.Rows.Count; //不需要显示的列移除 for (int i = FirstDT.Columns.Count - 1; i > 0; i--) { for (int j = 0; j < box.Length; j++) { if (box[j].Name == "FirstPage_WID" && !box[j].Checked) { if (FirstDT.Columns[i].ColumnName.ToLower().Contains("ch_waterid")) { FirstDT.Columns.RemoveAt(i); } } if (box[j].Name == "FirstPage_YIELD" && !box[j].Checked) { if (FirstDT.Columns[i].ColumnName.ToLower().Contains("ch_yeild")) { FirstDT.Columns.RemoveAt(i); } } if (box[j].Name == "FirstPage_REMARK" && !box[j].Checked) { if (FirstDT.Columns[i].ColumnName.ToLower().Contains("ch_remark")) { FirstDT.Columns.RemoveAt(i); } } if (box[j].Name == "FirstPage_BOXCODE" && !box[j].Checked) { if (FirstDT.Columns[i].ColumnName.ToLower().Contains("ch_pbcode")) { FirstDT.Columns.RemoveAt(i); } } } } columnNum = FirstDT.Columns.Count; for (int i = 0; i < rowNum; i++) { row1 = sheet2.CreateRow(PaintIndex); PaintIndex = PaintIndex + 1; row1.HeightInPoints = RowHeight; //只需要绘制一行 if (i == 0) { for (int j = 0; j < columnNum - 3; j++) { if (j == 0) { row1.CreateCell(j); row1.Cells[j].SetCellValue(FirstDT.Columns["pi_title"].Caption + ":" + FirstDT.Rows[i]["pi_title"].ToString() + " " + FirstDT.Columns["ch_level"].Caption + ":" + FirstDT.Rows[i]["ch_level"].ToString()); } else if (j > 5 && j == columnNum - 5) { row1.CreateCell(j); row1.Cells[j].SetCellValue(FirstDT.Columns["pi_inoutno"].Caption + ":" + FirstDT.Rows[i]["pi_inoutno"].ToString()); } else if (columnNum > 5 && j == columnNum - 5) { row1.CreateCell(j); row1.Cells[j].SetCellValue(FirstDT.Columns["pi_inoutno"].Caption + ":" + FirstDT.Rows[i]["pi_inoutno"].ToString()); } else { row1.CreateCell(j); } row1.GetCell(j).CellStyle = style; } row1 = sheet2.CreateRow(PaintIndex); PaintIndex = PaintIndex + 1; //第二行添加型号 for (int j = 0; j < columnNum - 3; j++) { if (j == 0) { row1.CreateCell(j).SetCellValue(DataTable.Columns["pr_orispeccode"].Caption + ":" + DataTable.Rows[i]["pr_orispeccode"].ToString() + " " + DataTable.Columns["pi_chipouttype"].Caption + ":" + DataTable.Rows[i]["pi_chipouttype"].ToString()); } else if (j == ShowSizeIndex) { row1.CreateCell(j); row1.Cells[j].SetCellValue(FirstDT.Columns["pr_size"].Caption + ":" + FirstDT.Rows[i]["pr_size"].ToString()); } else if (j > 5 && j == columnNum - 5) { row1.CreateCell(j); row1.Cells[j].SetCellValue(FirstDT.Columns["pi_date"].Caption + ":" + FirstDT.Rows[i]["pi_date"].ToString()); } else if (columnNum > 5 && j == columnNum - 5) { row1.CreateCell(j); row1.Cells[j].SetCellValue(FirstDT.Columns["pi_date"].Caption + ":" + FirstDT.Rows[i]["pi_date"].ToString()); } else { row1.CreateCell(j); } row1.GetCell(j).CellStyle = style; } row1 = sheet2.CreateRow(PaintIndex); PaintIndex = PaintIndex + 1; //添加列名 for (int j = 4; j < columnNum; j++) { row1.CreateCell(j - 4); if (NotShowColumn.Contains(FirstDT.Columns[j].ColumnName.ToLower())) { } else { row1.Cells[j - 4].CellStyle = styleborder; row1.Cells[j - 4].SetCellValue(FirstDT.Columns[j].Caption); } } row1 = sheet2.CreateRow(PaintIndex); PaintIndex = PaintIndex + 1; } //添加数据内容 ShowColumnCount = 0; for (int j = 4; j < columnNum; j++) { row1.CreateCell(j - 4); if (FirstDT.Columns[j].ColumnName == "ch_bluefilm") { row1.CreateCell(j - 4, CellType.String); } if (!NotShowColumn.Contains(FirstDT.Columns[j].ColumnName.ToLower())) { string Data = FirstDT.Rows[i][j].ToString(); row1.Cells[j - 4].SetCellValue(Data); row1.GetCell(j - 4).CellStyle = styleborder; if (FirstDT.Columns[j].ColumnName == "num") { row1.Cells[j - 4].SetCellValue(int.Parse(Data)); sumCount += int.Parse(Data); } if (FirstDT.Columns[j].ColumnName == "io_qty") { totalCount += int.Parse(Data); row1.Cells[j - 4].SetCellValue(int.Parse(Data)); } ShowColumnCount = ShowColumnCount + 1; } else { } } //添加总计行 if (i == rowNum - 1) { row1 = sheet2.CreateRow(PaintIndex); PaintIndex = PaintIndex + 1; for (int j = 0; j < ShowColumnCount; j++) { if (j == 0) { row1.CreateCell(j); row1.Cells[j].CellStyle = styleborder; row1.Cells[j].SetCellValue(总计); } else if (j == ShowColumnCount - 2) { row1.CreateCell(j); row1.Cells[j].CellStyle = styleborder; row1.Cells[j].SetCellValue(sumCount); } else if (j == ShowColumnCount - 1) { row1.CreateCell(j); row1.Cells[j].CellStyle = styleborder; row1.Cells[j].SetCellValue(totalCount); } else { row1.CreateCell(j); row1.Cells[j].CellStyle = styleborder; } } } } for (int i = 0; i < sheet2.LastRowNum; i++) { if (i != 0) { sheet2.AutoSizeColumn(i); sheet2.SetColumnWidth(i, sheet2.GetColumnWidth(i) + 1000); } } //将book的内容写入内存流中返回 book.Write(ms); return ms; } /// /// 将DataTable形式的数据转成Excel格式的,然后用字节流的形式写入文件 /// /// /// private MemoryStream DataTableToExcel_LIPUXIN(DataTable FirstDT, DataTable DataTable, string Type, string Inoutno, int PageSize, List conditionbox) { string 小计 = ""; string 批小计 = ""; string 总计 = ""; string 片 = ""; string companyname = ""; int ShowBoxIndex = 0; //用于小计的盒号 string LastBox = ""; if (dh.getFieldDataByCondition("ProdInout", "pi_exporttype", "pi_inoutno='" + Inoutno + "'").ToString() == "Chinese") { 小计 = "小计"; 总计 = "总计"; 批小计 = "批小计"; 片 = "片"; companyname = "深爱半导体股份有限公司芯片出货清单"; } else { 批小计 = "BatchTotal"; 小计 = "total"; 总计 = "total"; companyname = "SHENZHEN SI SEMICONDUCTORS CO.,LTD"; } //转换为序列 CheckBox[] box = conditionbox.ToArray(); //创建内存流 MemoryStream ms = new MemoryStream(); //创建一个Book,相当于一个Excel文件 HSSFWorkbook book = new HSSFWorkbook(); //Excel中的Sheet ISheet sheet = book.CreateSheet("分页"); sheet.SetMargin(MarginType.TopMargin, 0.4); sheet.SetMargin(MarginType.BottomMargin, 0.4); sheet.SetMargin(MarginType.LeftMargin, 0.4); sheet.SetMargin(MarginType.RightMargin, 0.4); sheet.FitToPage = true; sheet.PrintSetup.FitHeight = 200; //芯片号需要作为更新盒号的条件 HSSFFont ffont = (HSSFFont)book.CreateFont(); ffont.FontName = "宋体"; //更新箱号 List pib_id = new List(); //系统打印箱号 List pib_outboxcode1 = new List(); int BoxCode = 1; ICellStyle style = book.CreateCellStyle(); style.VerticalAlignment = VerticalAlignment.Center; style.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Left; style.SetFont(ffont); ICellStyle styleborder = book.CreateCellStyle(); styleborder.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin; styleborder.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin; styleborder.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin; styleborder.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin; styleborder.VerticalAlignment = VerticalAlignment.Center; styleborder.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Left; styleborder.SetFont(ffont); string pi_inoutno = ""; HSSFFont ColumnTitle = (HSSFFont)book.CreateFont(); ColumnTitle.FontName = "宋体"; ColumnTitle.Boldweight = (short)FontBoldWeight.Bold; ICellStyle ColumnTitleStyle = book.CreateCellStyle(); ColumnTitleStyle.SetFont(ColumnTitle); ColumnTitleStyle.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin; ColumnTitleStyle.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin; ColumnTitleStyle.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin; ColumnTitleStyle.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin; List NotShowColumn = new List(); NotShowColumn.Add("ch_level"); NotShowColumn.Add("pib_id"); NotShowColumn.Add("chw_itemname1"); NotShowColumn.Add("chw_itemname2"); NotShowColumn.Add("chw_itemname3"); NotShowColumn.Add("chw_itemname4"); NotShowColumn.Add("chw_itemname5"); NotShowColumn.Add("pd_ordercode"); NotShowColumn.Add("pr_size"); NotShowColumn.Add("me_desc"); NotShowColumn.Add("pr_orispeccode"); NotShowColumn.Add("pr_orispeccode1"); NotShowColumn.Add("pi_title"); NotShowColumn.Add("pi_chipouttype"); NotShowColumn.Add("pi_date"); int ShowColumnCount = 0; //展示的内容列 //设置列的宽度,根据首行的列的内容的长度来设置 for (int i = DataTable.Columns.Count - 1; i > 0; i--) { for (int j = 0; j < box.Length; j++) { if (box[j].Name.ToLower() == "ch_bluefilm" && !box[j].Checked) { if (DataTable.Columns[i].ColumnName.ToLower().Contains("ch_bluefilm")) { DataTable.Columns.RemoveAt(i); break; } } if (box[j].Name.ToLower() == "ch_code" && !box[j].Checked) { if (DataTable.Columns[i].ColumnName.ToLower().Contains("ch_code")) { DataTable.Columns.RemoveAt(i); break; } } if (box[j].Name.ToLower() == "ch_splitbatch" && !box[j].Checked) { if (DataTable.Columns[i].ColumnName.ToLower().Contains("ch_splitbatch")) { DataTable.Columns.RemoveAt(i); break; } } if (box[j].Name.ToLower() == "ch_waterid" && !box[j].Checked) { if (DataTable.Columns[i].ColumnName.ToLower().Contains("ch_waterid")) { DataTable.Columns.RemoveAt(i); break; } } if (box[j].Name.ToLower() == "ch_pbcode" && !box[j].Checked) { if (DataTable.Columns[i].ColumnName.ToLower().Contains("ch_pbcode")) { DataTable.Columns.RemoveAt(i); break; } } if (box[j].Name.ToLower() == "ch_remark" && !box[j].Checked) { if (DataTable.Columns[i].ColumnName.ToLower().Contains("ch_remark")) { DataTable.Columns.RemoveAt(i); break; } } if (box[j].Name.ToLower() == "ch_yield" && !box[j].Checked) { if (DataTable.Columns[i].ColumnName.ToLower().Contains("ch_yield")) { DataTable.Columns.RemoveAt(i); break; } } } } //获取行数量和列数量 int rowNum = DataTable.Rows.Count; int columnNum = DataTable.Columns.Count; //首先画好第一行带颜色的,单独写出来,避免写在循环里面 IRow row = sheet.CreateRow(0); //冻结第一行 sheet.CreateFreezePane(0, 1, 0, 1); row.HeightInPoints = RowHeight; //固定第一行 //row.RowStyle.IsLocked=true; //给第一行的标签赋值样式和值 // ffont.FontHeight = 13; row.CreateCell(0); row.Cells[0].SetCellValue(" " + companyname); row.GetCell(0).CellStyle.SetFont((ffont)); //ffont.FontHeight = 10; //开始绘制的Index int PaintIndex = 1; int sumCount = 0; int totalCount = 0; switch (Type) { case "FixRow": //清理系统取出来的数据 BaseUtil.CleanDataTableData(FirstDT); //首页参数拼接 string First_OrderCode = ""; string First_Prspec = ""; string First_Batch = ""; int NumIndex = 0; ArrayList First_WID = new ArrayList(); for (int i = 0; i < rowNum; i++) { IRow row1 = sheet.CreateRow(PaintIndex); PaintIndex = PaintIndex + 1; row1.HeightInPoints = RowHeight; //不包含的订单号 if (DataTable.Columns.Contains("pd_ordercode") && !First_OrderCode.Contains(DataTable.Rows[i]["pd_ordercode"].ToString())) { First_OrderCode += DataTable.Rows[i]["pd_ordercode"].ToString() + " "; } //不包含的物料型号 if (DataTable.Columns.Contains("pr_orispeccode") && !First_Prspec.Contains(DataTable.Rows[i]["pr_orispeccode"].ToString())) { First_Prspec += DataTable.Rows[i]["pr_orispeccode"].ToString() + " "; } //不包含扩撒批号 if (DataTable.Columns.Contains("ch_splitbatch") && !First_Batch.Contains(DataTable.Rows[i]["ch_splitbatch"].ToString())) { First_Batch += DataTable.Rows[i]["ch_splitbatch"].ToString() + " "; } //不包含Wafer_id if (DataTable.Columns.Contains("Wafer_ID") && !First_WID.Contains(DataTable.Rows[i]["Wafer_ID"].ToString())) { First_WID.Add(DataTable.Rows[i]["Wafer_ID"].ToString()); } if (i / PageSize >= 1 && i % PageSize == 0) { DataRow dr = FirstDT.NewRow(); dr["me_desc"] = DataTable.Rows[i]["me_desc"].ToString(); dr["pr_size"] = DataTable.Rows[i]["pr_size"].ToString(); dr["pi_chipouttype"] = DataTable.Rows[i]["pi_chipouttype"].ToString(); dr["ch_level"] = DataTable.Rows[i]["ch_level"].ToString(); dr["pr_orispeccode"] = DataTable.Rows[i]["pr_orispeccode"].ToString(); dr["pi_inoutno"] = DataTable.Rows[i]["pi_inoutno"].ToString(); pi_inoutno = DataTable.Rows[i]["pi_inoutno"].ToString(); dr["pi_title"] = DataTable.Rows[i]["pi_title"].ToString(); dr["pi_date"] = DataTable.Rows[i]["pi_date"].ToString(); dr["pd_ordercode"] = First_OrderCode; dr["pr_orispeccode"] = First_Prspec; dr["ch_splitbatch"] = First_Batch; dr["ch_waterid"] = BaseUtil.GetArrStr(First_WID, " "); dr["num"] = PageSize; dr["io_qty"] = sumCount; FirstDT.Rows.Add(dr); First_OrderCode = ""; First_Prspec = ""; First_Batch = ""; First_WID.Clear(); BoxCode = BoxCode + 1; for (int j = 0; j < ShowColumnCount; j++) { row1.CreateCell(j); if (j == 0) { row1.Cells[j].SetCellValue(批小计); } else if (j == ShowPieceIndex) { row1.Cells[ShowPieceIndex].SetCellValue((i % PageSize == 0 ? PageSize : i)); row1.Cells[j].CellStyle = styleborder; } else if (j == ShowCountIndex) { row1.Cells[j].SetCellValue(sumCount); } else if (j == ShowBoxIndex - 4) { row1.Cells[j].SetCellValue(LastBox); row1.Cells[j].CellStyle = styleborder; } row1.Cells[j].CellStyle = styleborder; } row1 = sheet.CreateRow(PaintIndex); PaintIndex = PaintIndex + 1; for (int j = 0; j < ShowColumnCount; j++) { row1.CreateCell(j); if (j == 0) { row1.Cells[j].SetCellValue(小计); } else if (j == ShowPieceIndex) { row1.Cells[ShowPieceIndex].SetCellValue((i % PageSize == 0 ? PageSize : i)); } else if (j == ShowCountIndex) { row1.Cells[j].SetCellValue(sumCount); } else if (j == ShowBoxIndex - 4) { row1.Cells[j].SetCellValue(LastBox); row1.Cells[j].CellStyle = styleborder; } row1.Cells[j].CellStyle = styleborder; } sumCount = 0; row1 = sheet.CreateRow(PaintIndex); sheet.SetRowBreak(PaintIndex - 1); sheet.Footer.Center = "第&P页,共&N页"; PaintIndex = PaintIndex + 1; } //每次到了页数开始分页 if (i % PageSize == 0 || i == rowNum - 1) { //第一行添加客户信息 rownum只有一行的情 if (i != rowNum - 1 || rowNum == 1 || (rowNum - i == rowNum % PageSize)) { for (int j = 0; j < columnNum - 3; j++) { if (j == 0) { row1.CreateCell(j); row1.Cells[j].SetCellValue(DataTable.Columns["pi_title"].Caption + ":" + DataTable.Rows[i]["pi_title"].ToString() + " " + DataTable.Columns["ch_level"].Caption + ":" + DataTable.Rows[i]["ch_level"].ToString()); } else if (j == ShowDataIndex) { row1.CreateCell(j); row1.Cells[j].SetCellValue(DataTable.Columns["pi_inoutno"].Caption + ":" + DataTable.Rows[i]["pi_inoutno"].ToString()); } else { row1.CreateCell(j); } row1.GetCell(j).CellStyle = style; } row1 = sheet.CreateRow(PaintIndex); PaintIndex = PaintIndex + 1; //第二行添加型号 for (int j = 0; j < columnNum - 3; j++) { if (j == 0) { row1.CreateCell(j); row1.Cells[j].SetCellValue(DataTable.Columns["pr_orispeccode"].Caption + ":" + DataTable.Rows[i]["pr_orispeccode"].ToString() + "_(" + DataTable.Rows[i]["me_desc"].ToString() + ") " + DataTable.Columns["pi_chipouttype"].Caption + ":" + DataTable.Rows[i]["pi_chipouttype"].ToString()); } else if (j == ShowSizeIndex) { row1.CreateCell(j); row1.Cells[j].SetCellValue(DataTable.Columns["pr_size"].Caption + ":" + DataTable.Rows[i]["pr_size"].ToString()); } else if (j == ShowDataIndex) { row1.CreateCell(j); row1.Cells[j].SetCellValue(DataTable.Columns["pi_date"].Caption + ":" + DataTable.Rows[i]["pi_date"].ToString()); } else { row1.CreateCell(j); } row1.GetCell(j).CellStyle = style; } //添加列名 row1 = sheet.CreateRow(PaintIndex); PaintIndex = PaintIndex + 1; //计数列所在的索引 int showcount = 0; for (int j = 4; j < columnNum; j++) { if (DataTable.Columns[j].ColumnName.ToLower() == "chw_percent1") { showcount = showcount + 1; row1.CreateCell(j - 4); row1.Cells[j - 4].CellStyle = ColumnTitleStyle; row1.Cells[j - 4].SetCellValue(DataTable.Rows[0]["chw_itemname1"].ToString()); } else if (DataTable.Columns[j].ColumnName.ToLower() == "chw_percent2") { showcount = showcount + 1; row1.CreateCell(j - 4); row1.Cells[j - 4].CellStyle = ColumnTitleStyle; row1.Cells[j - 4].SetCellValue(DataTable.Rows[0]["chw_itemname2"].ToString()); } else if (DataTable.Columns[j].ColumnName.ToLower() == "chw_percent3") { showcount = showcount + 1; row1.CreateCell(j - 4); row1.Cells[j - 4].CellStyle = ColumnTitleStyle; row1.Cells[j - 4].SetCellValue(DataTable.Rows[0]["chw_itemname3"].ToString()); } else if (DataTable.Columns[j].ColumnName.ToLower() == "chw_percent4") { showcount = showcount + 1; row1.CreateCell(j - 4); row1.Cells[j - 4].CellStyle = ColumnTitleStyle; row1.Cells[j - 4].SetCellValue(DataTable.Rows[0]["chw_itemname4"].ToString()); } else if (DataTable.Columns[j].ColumnName.ToLower() == "chw_percent5") { showcount = showcount + 1; row1.CreateCell(j - 4); row1.Cells[j - 4].CellStyle = ColumnTitleStyle; row1.Cells[j - 4].SetCellValue(DataTable.Rows[0]["chw_itemname5"].ToString()); } else if ((NotShowColumn.Contains(DataTable.Columns[j].ColumnName.ToLower()))) { } else { showcount = showcount + 1; row1.CreateCell(j - 4); row1.Cells[j - 4].CellStyle = ColumnTitleStyle; row1.Cells[j - 4].SetCellValue(DataTable.Columns[j].Caption); } if (DataTable.Columns[j].ColumnName.ToLower().ToString() == "ch_pbcode") { ShowBoxIndex = j; } if (DataTable.Columns[j].ColumnName.ToString() == "io_qty") { NumIndex = j; if (ShowCountIndex == NumIndex - 4) { ShowCountIndex = ShowCountIndex + 1; } } } ShowColumnCount = showcount; row1 = sheet.CreateRow(PaintIndex); PaintIndex = PaintIndex + 1; } } //添加数据内容 for (int j = 4; j < columnNum; j++) { string Data = DataTable.Rows[i][j].ToString(); row1.CreateCell(j - 4); if (DataTable.Columns[j].ColumnName.ToLower() == "ch_bluefilm") { row1.CreateCell(j - 4, CellType.String); } if ((NotShowColumn.Contains(DataTable.Columns[j].ColumnName.ToLower()))) { } else { double Num = 0; if (double.TryParse(Data, out Num)&& DataTable.Columns[j].ColumnName.ToLower() != "ch_bluefilm") { row1.Cells[j - 4].SetCellValue(Num); } else { row1.Cells[j - 4].SetCellValue(Data); } row1.GetCell(j - 4).CellStyle = styleborder; } if (DataTable.Columns[j].ColumnName == "io_qty") { row1.Cells[j - 4].SetCellValue(int.Parse(Data)); sumCount += int.Parse(DataTable.Rows[i][j].ToString()); totalCount += int.Parse(DataTable.Rows[i][j].ToString()); row1.Cells[j - 4].CellStyle = styleborder; } if (DataTable.Columns[j].ColumnName == "rownum") { row1.Cells[j - 4].SetCellValue(i + 1); row1.Cells[j - 4].CellStyle = styleborder; } if (DataTable.Columns[j].ColumnName == "ch_code") { sheet.AutoSizeColumn(j - 4); sheet.SetColumnWidth(j - 4, sheet.GetColumnWidth(j - 4) + 1000); } if (DataTable.Columns[j].ColumnName.ToLower() == "ch_pbcode") { LastBox = Data; } } //固定行号分组的时候自动拼接新的DataTable if (i == rowNum - 1) { DataRow dr = FirstDT.NewRow(); dr["me_desc"] = DataTable.Rows[i]["me_desc"].ToString(); dr["pr_size"] = DataTable.Rows[i]["pr_size"].ToString(); dr["pi_chipouttype"] = DataTable.Rows[i]["pi_chipouttype"].ToString(); dr["ch_level"] = DataTable.Rows[i]["ch_level"].ToString(); dr["pr_orispeccode"] = DataTable.Rows[i]["pr_orispeccode"].ToString(); dr["pi_inoutno"] = DataTable.Rows[i]["pi_inoutno"].ToString(); dr["pi_title"] = DataTable.Rows[i]["pi_title"].ToString(); dr["pi_date"] = DataTable.Rows[i]["pi_date"].ToString(); dr["pd_ordercode"] = First_OrderCode; dr["pr_orispeccode"] = First_Prspec; dr["ch_splitbatch"] = First_Batch; dr["ch_waterid"] = BaseUtil.GetArrStr(First_WID, " "); dr["num"] = (i % PageSize) + 1; dr["io_qty"] = sumCount; FirstDT.Rows.Add(dr); row1 = sheet.CreateRow(PaintIndex); PaintIndex = PaintIndex + 1; for (int j = 0; j < ShowColumnCount; j++) { row1.CreateCell(j); if (j == 0) { row1.Cells[j].SetCellValue(批小计); } else if (j == ShowPieceIndex) { row1.Cells[ShowPieceIndex].SetCellValue((rowNum % PageSize == 0 ? PageSize : (rowNum % PageSize))); row1.Cells[j].CellStyle = styleborder; } else if (j == ShowBoxIndex - 4) { row1.Cells[j].SetCellValue(LastBox); row1.Cells[j].CellStyle = styleborder; } else if (j == ShowCountIndex) { row1.Cells[j].SetCellValue(sumCount); } row1.Cells[j].CellStyle = styleborder; } row1 = sheet.CreateRow(PaintIndex); PaintIndex = PaintIndex + 1; for (int j = 0; j < ShowColumnCount; j++) { row1.CreateCell(j); if (j == 0) { row1.Cells[j].SetCellValue(小计); } else if (j == ShowPieceIndex) { row1.Cells[ShowPieceIndex].SetCellValue(rowNum % PageSize); row1.Cells[j].CellStyle = styleborder; } else if (j == ShowBoxIndex - 4) { row1.Cells[j].SetCellValue(LastBox); row1.Cells[j].CellStyle = styleborder; } else if (j == ShowCountIndex) { row1.Cells[j].SetCellValue(sumCount); } row1.Cells[j].CellStyle = styleborder; } row1 = sheet.CreateRow(PaintIndex); for (int j = 0; j < columnNum - 3; j++) { if (j == 0) { row1.CreateCell(j); row1.Cells[j].SetCellValue("备注"); } else if (j == ShowCountIndex) { row1.CreateCell(j); row1.Cells[j].SetCellValue(totalCount); } else if (j == ShowRemarkPiece) { row1.CreateCell(j); row1.Cells[j].SetCellValue(rowNum + 片); } else { row1.CreateCell(j); } row1.Cells[j].CellStyle = style; } sheet.SetRowBreak(PaintIndex); sheet.Footer.Center = "第&P页,共&N页"; PaintIndex = PaintIndex + 1; } pib_id.Add(DataTable.Rows[i]["pib_id"].ToString()); pib_outboxcode1.Add(BoxCode.ToString()); } break; case "BatchCode": string LastBatchCode = ""; int PageNum = 0; for (int i = 0; i < rowNum; i++) { IRow row1 = sheet.CreateRow(PaintIndex); PaintIndex = PaintIndex + 1; row1.HeightInPoints = RowHeight; //如果批号不相等的时候 if (LastBatchCode != "" && LastBatchCode != DataTable.Rows[i]["ch_splitbatch"].ToString()) { BoxCode = BoxCode + 1; for (int j = 0; j < ShowColumnCount; j++) { row1.CreateCell(j); if (j == 0) { row1.Cells[j].SetCellValue(批小计); row1.Cells[j].CellStyle = styleborder; } else if (j == ShowPieceIndex) { row1.Cells[ShowPieceIndex].SetCellValue(PageNum); row1.Cells[j].CellStyle = styleborder; } else if (j == ShowCountIndex) { row1.Cells[j].SetCellValue(sumCount); row1.Cells[j].CellStyle = styleborder; } else if (j == ShowBoxIndex - 4) { row1.Cells[j].SetCellValue(LastBox); row1.Cells[j].CellStyle = styleborder; } else { row1.Cells[j].CellStyle = styleborder; } } row1 = sheet.CreateRow(PaintIndex); PaintIndex = PaintIndex + 1; for (int j = 0; j < ShowColumnCount; j++) { row1.CreateCell(j); if (j == 0) { row1.Cells[j].SetCellValue(小计); row1.Cells[j].CellStyle = styleborder; } else if (j == ShowPieceIndex) { row1.Cells[ShowPieceIndex].SetCellValue(PageNum); row1.Cells[j].CellStyle = styleborder; } else if (j == ShowCountIndex) { row1.Cells[j].SetCellValue(sumCount); row1.Cells[j].CellStyle = styleborder; } else if (j == ShowBoxIndex - 4) { row1.Cells[j].SetCellValue(LastBox); row1.Cells[j].CellStyle = styleborder; } else { row1.Cells[j].CellStyle = styleborder; } } sumCount = 0; row1 = sheet.CreateRow(PaintIndex); sheet.SetRowBreak(PaintIndex - 1); sheet.Footer.Center = "第&P页,共&N页"; PaintIndex = PaintIndex + 1; PageNum = 0; } //每次到了页数开始分页 if (LastBatchCode == "" || (LastBatchCode != "" && LastBatchCode != DataTable.Rows[i]["ch_splitbatch"].ToString()) || (i == rowNum - 1 && (LastBatchCode != "" && LastBatchCode != DataTable.Rows[i]["ch_splitbatch"].ToString()))) { Console.WriteLine(DataTable.Rows[i]["ch_splitbatch"].ToString()); LastBatchCode = DataTable.Rows[i]["ch_splitbatch"].ToString(); //第一行添加客户信息 //if (i != rowNum - 1) { for (int j = 0; j < columnNum - 3; j++) { if (j == 0) { row1.CreateCell(j); row1.Cells[j].SetCellValue(DataTable.Columns["pi_title"].Caption + ":" + DataTable.Rows[i]["pi_title"].ToString() + " " + DataTable.Columns["ch_level"].Caption + ":" + DataTable.Rows[i]["ch_level"].ToString()); } else if (j == ShowDataIndex) { row1.CreateCell(j); row1.Cells[j].SetCellValue(DataTable.Columns["pi_inoutno"].Caption + ":" + DataTable.Rows[i]["pi_inoutno"].ToString()); } else { row1.CreateCell(j); } row1.GetCell(j).CellStyle = style; } row1 = sheet.CreateRow(PaintIndex); PaintIndex = PaintIndex + 1; //第二行添加型号 for (int j = 0; j < columnNum - 3; j++) { if (j == 0) { row1.CreateCell(j); row1.Cells[j].SetCellValue(DataTable.Columns["pr_orispeccode"].Caption + ":" + DataTable.Rows[i]["pr_orispeccode"].ToString() + "_" + "(" + DataTable.Rows[i]["me_desc"].ToString() + ") " + DataTable.Columns["pi_chipouttype"].Caption + ":" + DataTable.Rows[i]["pi_chipouttype"].ToString()); } else if (j == ShowSizeIndex) { row1.CreateCell(j); row1.Cells[j].SetCellValue(DataTable.Columns["pr_size"].Caption + ":" + DataTable.Rows[i]["pr_size"].ToString()); } else if (j == ShowDataIndex) { row1.CreateCell(j); row1.Cells[j].SetCellValue(DataTable.Columns["pi_date"].Caption + ":" + DataTable.Rows[i]["pi_date"].ToString()); } else { row1.CreateCell(j); } row1.GetCell(j).CellStyle = style; } //添加列名 row1 = sheet.CreateRow(PaintIndex); PaintIndex = PaintIndex + 1; int showcount = 0; for (int j = 4; j < columnNum; j++) { if (DataTable.Columns[j].ColumnName.ToLower() == "chw_percent1") { showcount = showcount + 1; row1.CreateCell(j - 4); row1.Cells[j - 4].CellStyle = ColumnTitleStyle; row1.Cells[j - 4].SetCellValue(DataTable.Rows[0]["chw_itemname1"].ToString()); } else if (DataTable.Columns[j].ColumnName.ToLower() == "chw_percent2") { showcount = showcount + 1; row1.CreateCell(j - 4); row1.Cells[j - 4].CellStyle = ColumnTitleStyle; row1.Cells[j - 4].SetCellValue(DataTable.Rows[0]["chw_itemname2"].ToString()); } else if (DataTable.Columns[j].ColumnName.ToLower() == "chw_percent3") { showcount = showcount + 1; row1.CreateCell(j - 4); row1.Cells[j - 4].CellStyle = ColumnTitleStyle; row1.Cells[j - 4].SetCellValue(DataTable.Rows[0]["chw_itemname3"].ToString()); } else if (DataTable.Columns[j].ColumnName.ToLower() == "chw_percent4") { showcount = showcount + 1; row1.CreateCell(j - 4); row1.Cells[j - 4].CellStyle = ColumnTitleStyle; row1.Cells[j - 4].SetCellValue(DataTable.Rows[0]["chw_itemname4"].ToString()); } else if (DataTable.Columns[j].ColumnName.ToLower() == "chw_percent5") { showcount = showcount + 1; row1.CreateCell(j - 4); row1.Cells[j - 4].CellStyle = ColumnTitleStyle; row1.Cells[j - 4].SetCellValue(DataTable.Rows[0]["chw_itemname5"].ToString()); } else if ((NotShowColumn.Contains(DataTable.Columns[j].ColumnName.ToLower()))) { } else { showcount = showcount + 1; row1.CreateCell(j - 4); row1.Cells[j - 4].CellStyle = ColumnTitleStyle; row1.Cells[j - 4].SetCellValue(DataTable.Columns[j].Caption); } if (DataTable.Columns[j].ColumnName.ToLower().ToString() == "ch_pbcode") { ShowBoxIndex = j; } if (DataTable.Columns[j].ColumnName.ToString() == "io_qty") { NumIndex = j; if (ShowCountIndex == NumIndex - 4) { ShowCountIndex = ShowCountIndex + 1; } } } ShowColumnCount = showcount; row1 = sheet.CreateRow(PaintIndex); PaintIndex = PaintIndex + 1; } } //添加数据内容 for (int j = 4; j < columnNum; j++) { string Data = DataTable.Rows[i][j].ToString(); row1.CreateCell(j - 4); if (DataTable.Columns[j].ColumnName.ToLower() == "ch_bluefilm") { row1.CreateCell(j - 4, CellType.String); } if ((NotShowColumn.Contains(DataTable.Columns[j].ColumnName.ToLower()))) { } else { double Num = 0; if (double.TryParse(Data, out Num)&& DataTable.Columns[j].ColumnName.ToLower() != "ch_bluefilm") { row1.Cells[j - 4].SetCellValue(Num); } else { row1.Cells[j - 4].SetCellValue(Data); } row1.Cells[j - 4].CellStyle = styleborder; } if (DataTable.Columns[j].ColumnName == "io_qty") { row1.Cells[j - 4].SetCellValue(int.Parse(Data)); sumCount += int.Parse(DataTable.Rows[i][j].ToString()); totalCount += int.Parse(DataTable.Rows[i][j].ToString()); } if (DataTable.Columns[j].ColumnName == "rownum") { row1.Cells[j - 4].SetCellValue(i + 1); row1.Cells[j - 4].CellStyle = styleborder; } if (DataTable.Columns[j].ColumnName == "ch_code") { sheet.AutoSizeColumn(j - 4); sheet.SetColumnWidth(j - 4, sheet.GetColumnWidth(j - 4) + 1000); } if (DataTable.Columns[j].ColumnName.ToLower() == "ch_pbcode") { LastBox = Data; } } if (i == rowNum - 1) { row1 = sheet.CreateRow(PaintIndex); PaintIndex = PaintIndex + 1; for (int j = 0; j < ShowColumnCount; j++) { row1.CreateCell(j); if (j == 0) { row1.Cells[j].SetCellValue(批小计); row1.Cells[j].CellStyle = styleborder; } else if (j == ShowPieceIndex) { row1.Cells[ShowPieceIndex].SetCellValue(PageNum+1); row1.Cells[j].CellStyle = styleborder; } else if (j == ShowCountIndex) { row1.Cells[j].SetCellValue(sumCount); row1.Cells[j].CellStyle = styleborder; } else { row1.Cells[j].CellStyle = styleborder; } } row1 = sheet.CreateRow(PaintIndex); PaintIndex = PaintIndex + 1; for (int j = 0; j < ShowColumnCount; j++) { row1.CreateCell(j); if (j == 0) { row1.Cells[j].SetCellValue(小计); row1.Cells[j].CellStyle = styleborder; } else if (j == ShowPieceIndex) { row1.Cells[ShowPieceIndex].SetCellValue(PageNum+1); row1.Cells[j].CellStyle = styleborder; } else if (j == ShowCountIndex) { row1.Cells[j].SetCellValue(sumCount); row1.Cells[j].CellStyle = styleborder; } else { row1.Cells[j].CellStyle = styleborder; } } //创建备注内容 row1 = sheet.CreateRow(PaintIndex); for (int j = 0; j < columnNum - 3; j++) { if (j == 0) { row1.CreateCell(j); row1.Cells[j].SetCellValue("备注"); } else if (j == ShowCountIndex) { row1.CreateCell(j); row1.Cells[j].SetCellValue(totalCount); } else if (j == ShowRemarkPiece) { row1.CreateCell(j); row1.Cells[j].SetCellValue(rowNum + 片); } else { row1.CreateCell(j); } row1.Cells[j].CellStyle = style; } sheet.SetRowBreak(PaintIndex); sheet.Footer.Center = "第&P页,共&N页"; PaintIndex = PaintIndex + 1; PageNum = 0; } PageNum = PageNum + 1; pib_id.Add(DataTable.Rows[i]["pib_id"].ToString()); pib_outboxcode1.Add(BoxCode.ToString()); } break; case "BoxCode": string LastBoxCode = ""; int PageNum1 = 0; for (int i = 0; i < rowNum; i++) { IRow row1 = sheet.CreateRow(PaintIndex); PaintIndex = PaintIndex + 1; row1.HeightInPoints = RowHeight; //如果批号不相等的时候 if (LastBoxCode != "" && LastBoxCode != DataTable.Rows[i]["CH_PBCODE"].ToString()) { BoxCode = BoxCode + 1; for (int j = 0; j < ShowColumnCount; j++) { row1.CreateCell(j); if (j == 0) { row1.Cells[j].SetCellValue(批小计); row1.Cells[j].CellStyle = styleborder; } else if (j == ShowPieceIndex) { row1.Cells[ShowPieceIndex].SetCellValue(PageNum1); row1.Cells[j].CellStyle = styleborder; } else if (j == ShowCountIndex) { row1.Cells[j].SetCellValue(sumCount); row1.Cells[j].CellStyle = styleborder; } else if (j == ShowBoxIndex - 4) { row1.Cells[j].SetCellValue(LastBox); row1.Cells[j].CellStyle = styleborder; } else { row1.Cells[j].CellStyle = styleborder; } } row1 = sheet.CreateRow(PaintIndex); PaintIndex = PaintIndex + 1; for (int j = 0; j < ShowColumnCount; j++) { row1.CreateCell(j); if (j == 0) { row1.Cells[j].SetCellValue(小计); row1.Cells[j].CellStyle = styleborder; } else if (j == ShowPieceIndex) { row1.Cells[ShowPieceIndex].SetCellValue(PageNum1); row1.Cells[j].CellStyle = styleborder; } else if (j == ShowCountIndex) { row1.Cells[j].SetCellValue(sumCount); row1.Cells[j].CellStyle = styleborder; } else if (j == ShowBoxIndex - 4) { row1.Cells[j].SetCellValue(LastBox); row1.Cells[j].CellStyle = styleborder; } else { row1.Cells[j].CellStyle = styleborder; } } sumCount = 0; row1 = sheet.CreateRow(PaintIndex); sheet.SetRowBreak(PaintIndex - 1); sheet.Footer.Center = "第&P页,共&N页"; PaintIndex = PaintIndex + 1; PageNum1 = 0; } //每次到了页数开始分页 if (LastBoxCode == "" || (LastBoxCode != "" && LastBoxCode != DataTable.Rows[i]["ch_pbcode"].ToString()) || ((i == rowNum - 1) && (LastBoxCode != "" && LastBoxCode != DataTable.Rows[i]["ch_pbcode"].ToString()))) { LastBoxCode = DataTable.Rows[i]["CH_PBCODE"].ToString(); //第一行添加客户信息 //if (i != rowNum - 1) { for (int j = 0; j < columnNum - 3; j++) { if (j == 0) { row1.CreateCell(j); row1.Cells[j].SetCellValue(DataTable.Columns["pi_title"].Caption + ":" + DataTable.Rows[i]["pi_title"].ToString() + " " + DataTable.Columns["ch_level"].Caption + ":" + DataTable.Rows[i]["ch_level"].ToString()); } else if (j == ShowDataIndex) { row1.CreateCell(j); row1.Cells[j].SetCellValue(DataTable.Columns["pi_inoutno"].Caption + ":" + DataTable.Rows[i]["pi_inoutno"].ToString()); } else { row1.CreateCell(j); } row1.GetCell(j).CellStyle = style; } row1 = sheet.CreateRow(PaintIndex); PaintIndex = PaintIndex + 1; //第二行添加型号 for (int j = 0; j < columnNum - 3; j++) { if (j == 0) { row1.CreateCell(j); row1.Cells[j].SetCellValue(DataTable.Columns["pr_orispeccode"].Caption + ":" + DataTable.Rows[i]["pr_orispeccode"].ToString() + "_" + "(" + DataTable.Rows[i]["me_desc"].ToString() + ") " + DataTable.Columns["pi_chipouttype"].Caption + ":" + DataTable.Rows[i]["pi_chipouttype"].ToString()); } else if (j == ShowSizeIndex) { row1.CreateCell(j); row1.Cells[j].SetCellValue(DataTable.Columns["pr_size"].Caption + ":" + DataTable.Rows[i]["pr_size"].ToString()); } else if (j == ShowDataIndex) { row1.CreateCell(j); row1.Cells[j].SetCellValue(DataTable.Columns["pi_date"].Caption + ":" + DataTable.Rows[i]["pi_date"].ToString()); } else { row1.CreateCell(j); } } //添加列名 row1 = sheet.CreateRow(PaintIndex); PaintIndex = PaintIndex + 1; int showcount = 0; for (int j = 4; j < columnNum; j++) { if (DataTable.Columns[j].ColumnName.ToLower() == "chw_percent1") { showcount = showcount + 1; row1.CreateCell(j - 4); row1.Cells[j - 4].CellStyle = ColumnTitleStyle; row1.Cells[j - 4].SetCellValue(DataTable.Rows[0]["chw_itemname1"].ToString()); } else if (DataTable.Columns[j].ColumnName.ToLower() == "chw_percent2") { showcount = showcount + 1; row1.CreateCell(j - 4); row1.Cells[j - 4].CellStyle = ColumnTitleStyle; row1.Cells[j - 4].SetCellValue(DataTable.Rows[0]["chw_itemname2"].ToString()); } else if (DataTable.Columns[j].ColumnName.ToLower() == "chw_percent3") { showcount = showcount + 1; row1.CreateCell(j - 4); row1.Cells[j - 4].CellStyle = ColumnTitleStyle; row1.Cells[j - 4].SetCellValue(DataTable.Rows[0]["chw_itemname3"].ToString()); } else if (DataTable.Columns[j].ColumnName.ToLower() == "chw_percent4") { showcount = showcount + 1; row1.CreateCell(j - 4); row1.Cells[j - 4].CellStyle = ColumnTitleStyle; row1.Cells[j - 4].SetCellValue(DataTable.Rows[0]["chw_itemname4"].ToString()); } else if (DataTable.Columns[j].ColumnName.ToLower() == "chw_percent5") { showcount = showcount + 1; row1.CreateCell(j - 4); row1.Cells[j - 4].CellStyle = ColumnTitleStyle; row1.Cells[j - 4].SetCellValue(DataTable.Rows[0]["chw_itemname5"].ToString()); } else if ((NotShowColumn.Contains(DataTable.Columns[j].ColumnName.ToLower()))) { } else { showcount = showcount + 1; row1.CreateCell(j - 4); row1.Cells[j - 4].CellStyle = ColumnTitleStyle; row1.Cells[j - 4].SetCellValue(DataTable.Columns[j].Caption); } if (DataTable.Columns[j].ColumnName.ToLower().ToString() == "ch_pbcode") { ShowBoxIndex = j; } if (DataTable.Columns[j].ColumnName.ToString() == "io_qty") { NumIndex = j; if (ShowCountIndex == NumIndex - 4) { ShowCountIndex = ShowCountIndex + 1; } } } ShowColumnCount = showcount; row1 = sheet.CreateRow(PaintIndex); PaintIndex = PaintIndex + 1; } } //添加数据内容 for (int j = 4; j < columnNum; j++) { string Data = DataTable.Rows[i][j].ToString(); row1.CreateCell(j - 4); if (DataTable.Columns[j].ColumnName.ToLower() == "ch_bluefilm") { row1.CreateCell(j - 4, CellType.String); } if ((NotShowColumn.Contains(DataTable.Columns[j].ColumnName.ToLower()))) { } else { double Num = 0; if (double.TryParse(Data, out Num)&& DataTable.Columns[j].ColumnName.ToLower() != "ch_bluefilm") { row1.Cells[j - 4].SetCellValue(Num); } else { row1.Cells[j - 4].SetCellValue(Data); } row1.Cells[j - 4].CellStyle = styleborder; } if (DataTable.Columns[j].ColumnName == "io_qty") { row1.Cells[j - 4].SetCellValue(int.Parse(Data)); sumCount += int.Parse(DataTable.Rows[i][j].ToString()); totalCount += int.Parse(DataTable.Rows[i][j].ToString()); row1.Cells[j - 4].CellStyle = styleborder; } if (DataTable.Columns[j].ColumnName == "rownum") { row1.Cells[j - 4].SetCellValue(i + 1); row1.Cells[j - 4].CellStyle = styleborder; } if (DataTable.Columns[j].ColumnName == "ch_code") { sheet.AutoSizeColumn(j - 4); sheet.SetColumnWidth(j - 4, sheet.GetColumnWidth(j - 4) + 1000); } if (DataTable.Columns[j].ColumnName.ToLower() == "ch_pbcode") { LastBox = Data; } } if (i == rowNum - 1) { PageNum1 = PageNum1 + 1; row1 = sheet.CreateRow(PaintIndex); PaintIndex = PaintIndex + 1; for (int j = 0; j < ShowColumnCount; j++) { row1.CreateCell(j); if (j == 0) { row1.Cells[j].SetCellValue(批小计); row1.Cells[j].CellStyle = styleborder; } else if (j == ShowPieceIndex) { row1.Cells[ShowPieceIndex].SetCellValue(PageNum1); row1.Cells[j].CellStyle = styleborder; } else if (j == ShowCountIndex) { row1.Cells[j].SetCellValue(sumCount); row1.Cells[j].CellStyle = styleborder; } else if (j == ShowBoxIndex - 4) { row1.Cells[j].SetCellValue(LastBox); row1.Cells[j].CellStyle = styleborder; } else { row1.Cells[j].CellStyle = styleborder; } } row1 = sheet.CreateRow(PaintIndex); PaintIndex = PaintIndex + 1; for (int j = 0; j < ShowColumnCount; j++) { row1.CreateCell(j); if (j == 0) { row1.Cells[j].SetCellValue(小计); row1.Cells[j].CellStyle = styleborder; } else if (j == ShowPieceIndex) { row1.Cells[ShowPieceIndex].SetCellValue(PageNum1); row1.Cells[j].CellStyle = styleborder; } else if (j == ShowCountIndex) { row1.Cells[j].SetCellValue(sumCount); row1.Cells[j].CellStyle = styleborder; } else if (j == ShowBoxIndex - 4) { row1.Cells[j].SetCellValue(LastBox); row1.Cells[j].CellStyle = styleborder; } else { row1.Cells[j].CellStyle = styleborder; } } row1 = sheet.CreateRow(PaintIndex); for (int j = 0; j < columnNum - 3; j++) { if (j == 0) { row1.CreateCell(j); row1.Cells[j].SetCellValue("备注"); } else if (j == ShowCountIndex) { row1.CreateCell(j); row1.Cells[j].SetCellValue(totalCount); } else if (j == ShowRemarkPiece) { row1.CreateCell(j); row1.Cells[j].SetCellValue(rowNum + 片); } else { row1.CreateCell(j); } row1.Cells[j].CellStyle = style; } sheet.SetRowBreak(PaintIndex); sheet.Footer.Center = "第&P页,共&N页"; PaintIndex = PaintIndex + 1; PageNum1 = 0; } PageNum1 = PageNum1 + 1; pib_id.Add(DataTable.Rows[i]["pib_id"].ToString()); pib_outboxcode1.Add(BoxCode.ToString()); } break; case "BoxSplit": string LastBoxCode1 = ""; int PageNum2 = 0; string LastBatch = ""; int MidCount = 0; int SerialNum = 1; for (int i = 0; i < rowNum; i++) { IRow row1 = sheet.CreateRow(PaintIndex); PaintIndex = PaintIndex + 1; row1.HeightInPoints = RowHeight; //如果批号不相等的时候 if (LastBatch == "" || (LastBatch != "" && LastBatch != DataTable.Rows[i]["ch_splitbatch"].ToString())) { LastBatch = DataTable.Rows[i]["ch_splitbatch"].ToString(); for (int j = 0; j < ShowColumnCount; j++) { if (j == 0) { row1.CreateCell(j).SetCellValue(SerialNum - 1); } else if (j == 1) { row1.CreateCell(j).SetCellValue("批小计"); } else if (j == 2) { row1.CreateCell(j).SetCellValue(MidCount); } else if (j == ShowBoxIndex - 4) { row1.CreateCell(j).SetCellValue(LastBox); } else { row1.CreateCell(j); } row1.Cells[j].CellStyle = styleborder; } SerialNum = 1; MidCount = 0; row1 = sheet.CreateRow(PaintIndex); PaintIndex = PaintIndex + 1; } if (LastBoxCode1 != "" && LastBoxCode1 != DataTable.Rows[i]["CH_PBCODE"].ToString()) { BoxCode = BoxCode + 1; for (int j = 0; j < ShowColumnCount; j++) { row1.CreateCell(j); if (j == 1) { row1.Cells[j].SetCellValue(小计); row1.Cells[j].CellStyle = styleborder; } else if (j == 0) { row1.Cells[0].SetCellValue(PageNum2); row1.Cells[j].CellStyle = styleborder; } else if (j == ShowCountIndex) { row1.Cells[j].SetCellValue(sumCount); row1.Cells[j].CellStyle = styleborder; } else if (j == ShowBoxIndex - 4) { row1.Cells[j].SetCellValue(LastBox); row1.Cells[j].CellStyle = styleborder; } else { row1.Cells[j].CellStyle = styleborder; } } sumCount = 0; row1 = sheet.CreateRow(PaintIndex); sheet.SetRowBreak(PaintIndex - 1); sheet.Footer.Center = "第&P页,共&N页"; PaintIndex = PaintIndex + 1; PageNum2 = 0; } //每次到了页数开始分页 if (LastBoxCode1 == "" || (LastBoxCode1 != "" && LastBoxCode1 != DataTable.Rows[i]["ch_pbcode"].ToString()) || ((i == rowNum - 1) && (LastBoxCode1 != "" && LastBoxCode1 != DataTable.Rows[i]["ch_pbcode"].ToString()))) { LastBoxCode1 = DataTable.Rows[i]["CH_PBCODE"].ToString(); //第一行添加客户信息 //if (i != rowNum - 1) { for (int j = 0; j < columnNum - 3; j++) { if (j == 0) { row1.CreateCell(j); row1.Cells[j].SetCellValue(DataTable.Columns["pi_title"].Caption + ":" + DataTable.Rows[i]["pi_title"].ToString() + " " + DataTable.Columns["ch_level"].Caption + ":" + DataTable.Rows[i]["ch_level"].ToString()); } else if (j == ShowDataIndex) { row1.CreateCell(j); row1.Cells[j].SetCellValue(DataTable.Columns["pi_inoutno"].Caption + ":" + DataTable.Rows[i]["pi_inoutno"].ToString()); } else { row1.CreateCell(j); } row1.GetCell(j).CellStyle = style; } row1 = sheet.CreateRow(PaintIndex); PaintIndex = PaintIndex + 1; //第二行添加型号 for (int j = 0; j < columnNum - 3; j++) { if (j == 0) { row1.CreateCell(j); row1.Cells[j].SetCellValue(DataTable.Columns["pr_orispeccode"].Caption + ":" + DataTable.Rows[i]["pr_orispeccode"].ToString() + "_" + "(" + DataTable.Rows[i]["me_desc"].ToString() + ") " + DataTable.Columns["pi_chipouttype"].Caption + ":" + DataTable.Rows[i]["pi_chipouttype"].ToString()); } else if (j == ShowSizeIndex) { row1.CreateCell(j); row1.Cells[j].SetCellValue(DataTable.Columns["pr_size"].Caption + ":" + DataTable.Rows[i]["pr_size"].ToString()); } else if (j == ShowDataIndex) { row1.CreateCell(j); row1.Cells[j].SetCellValue(DataTable.Columns["pi_date"].Caption + ":" + DataTable.Rows[i]["pi_date"].ToString()); } else { row1.CreateCell(j); } } //添加列名 row1 = sheet.CreateRow(PaintIndex); PaintIndex = PaintIndex + 1; int showcount = 0; for (int j = 4; j < columnNum; j++) { if (DataTable.Columns[j].ColumnName.ToLower() == "chw_percent1") { showcount = showcount + 1; row1.CreateCell(j - 4); row1.Cells[j - 4].CellStyle = ColumnTitleStyle; row1.Cells[j - 4].SetCellValue(DataTable.Rows[0]["chw_itemname1"].ToString()); } else if (DataTable.Columns[j].ColumnName.ToLower() == "chw_percent2") { showcount = showcount + 1; row1.CreateCell(j - 4); row1.Cells[j - 4].CellStyle = ColumnTitleStyle; row1.Cells[j - 4].SetCellValue(DataTable.Rows[0]["chw_itemname2"].ToString()); } else if (DataTable.Columns[j].ColumnName.ToLower() == "chw_percent3") { showcount = showcount + 1; row1.CreateCell(j - 4); row1.Cells[j - 4].CellStyle = ColumnTitleStyle; row1.Cells[j - 4].SetCellValue(DataTable.Rows[0]["chw_itemname3"].ToString()); } else if (DataTable.Columns[j].ColumnName.ToLower() == "chw_percent4") { showcount = showcount + 1; row1.CreateCell(j - 4); row1.Cells[j - 4].CellStyle = ColumnTitleStyle; row1.Cells[j - 4].SetCellValue(DataTable.Rows[0]["chw_itemname4"].ToString()); } else if (DataTable.Columns[j].ColumnName.ToLower() == "chw_percent5") { showcount = showcount + 1; row1.CreateCell(j - 4); row1.Cells[j - 4].CellStyle = ColumnTitleStyle; row1.Cells[j - 4].SetCellValue(DataTable.Rows[0]["chw_itemname5"].ToString()); } else if ((NotShowColumn.Contains(DataTable.Columns[j].ColumnName.ToLower()))) { } else { showcount = showcount + 1; row1.CreateCell(j - 4); row1.Cells[j - 4].CellStyle = ColumnTitleStyle; row1.Cells[j - 4].SetCellValue(DataTable.Columns[j].Caption); } if (DataTable.Columns[j].ColumnName.ToLower().ToString() == "ch_pbcode") { ShowBoxIndex = j; } if (DataTable.Columns[j].ColumnName.ToString() == "io_qty") { NumIndex = j; if (ShowCountIndex == NumIndex - 4) { ShowCountIndex = ShowCountIndex + 1; } } } ShowColumnCount = showcount; row1 = sheet.CreateRow(PaintIndex); PaintIndex = PaintIndex + 1; } } //添加数据内容 for (int j = 4; j < columnNum; j++) { string Data = DataTable.Rows[i][j].ToString(); row1.CreateCell(j - 4); if (DataTable.Columns[j].ColumnName.ToLower() == "ch_bluefilm") { row1.CreateCell(j - 4, CellType.String); } if ((NotShowColumn.Contains(DataTable.Columns[j].ColumnName.ToLower()))) { } else { row1.Cells[j - 4].SetCellValue(Data); row1.GetCell(j - 4).CellStyle = styleborder; } if (DataTable.Columns[j].ColumnName == "io_qty") { row1.Cells[j - 4].SetCellValue(int.Parse(Data)); sumCount += int.Parse(DataTable.Rows[i][j].ToString()); totalCount += int.Parse(DataTable.Rows[i][j].ToString()); MidCount += int.Parse(DataTable.Rows[i][j].ToString()); } if (DataTable.Columns[j].ColumnName == "rownum") { row1.Cells[j - 4].SetCellValue(SerialNum); } if (DataTable.Columns[j].ColumnName == "ch_code") { sheet.AutoSizeColumn(j - 4); sheet.SetColumnWidth(j - 4, sheet.GetColumnWidth(j - 4) + 1000); } if (DataTable.Columns[j].ColumnName.ToLower() == "ch_pbcode") { LastBox = Data; } } if (i == rowNum - 1) { PageNum2 = PageNum2 + 1; row1 = sheet.CreateRow(PaintIndex); PaintIndex = PaintIndex + 1; for (int j = 0; j < ShowColumnCount; j++) { row1.CreateCell(j); if (j == 0) { row1.Cells[j].SetCellValue(批小计); row1.Cells[j].CellStyle = styleborder; } else if (j == ShowPieceIndex) { row1.Cells[ShowPieceIndex].SetCellValue(PageNum2); row1.Cells[j].CellStyle = styleborder; } else if (j == ShowCountIndex) { row1.Cells[j].SetCellValue(sumCount); row1.Cells[j].CellStyle = styleborder; } else if (j == ShowBoxIndex - 4) { row1.Cells[j].SetCellValue(LastBox); row1.Cells[j].CellStyle = styleborder; } else { row1.Cells[j].CellStyle = styleborder; } } row1 = sheet.CreateRow(PaintIndex); PaintIndex = PaintIndex + 1; for (int j = 0; j < ShowColumnCount; j++) { row1.CreateCell(j); if (j == 0) { row1.Cells[j].SetCellValue(小计); row1.Cells[j].CellStyle = styleborder; } else if (j == ShowPieceIndex) { row1.Cells[ShowPieceIndex].SetCellValue(PageNum2); row1.Cells[j].CellStyle = styleborder; } else if (j == ShowCountIndex) { row1.Cells[j].SetCellValue(sumCount); row1.Cells[j].CellStyle = styleborder; } else if (j == ShowBoxIndex - 4) { row1.Cells[j].SetCellValue(LastBox); row1.Cells[j].CellStyle = styleborder; } else { row1.Cells[j].CellStyle = styleborder; } } row1 = sheet.CreateRow(PaintIndex); for (int j = 0; j < columnNum - 3; j++) { if (j == 0) { row1.CreateCell(j); row1.Cells[j].SetCellValue("备注"); } else if (j == ShowCountIndex) { row1.CreateCell(j); row1.Cells[j].SetCellValue(totalCount); } else if (j == ShowRemarkPiece) { row1.CreateCell(j); row1.Cells[j].SetCellValue(rowNum + 片); } else { row1.CreateCell(j); } row1.Cells[j].CellStyle = style; } sheet.SetRowBreak(PaintIndex); sheet.Footer.Center = "第&P页,共&N页"; PaintIndex = PaintIndex + 1; PageNum1 = 0; } PageNum2 = PageNum2 + 1; pib_id.Add(DataTable.Rows[i]["pib_id"].ToString()); pib_outboxcode1.Add(BoxCode.ToString()); SerialNum = SerialNum + 1; } break; default: break; } dh.BatchInsert("update prodiobarcode set pib_outboxcode1=:pib_outboxcode1 where pib_inoutno='" + Inoutno + "' and pib_id=:pib_id", new string[] { "pib_outboxcode1", "pib_id" }, pib_outboxcode1.ToArray(), pib_id.ToArray()); //删除下载链接再重新插入 HttpHandler.GenDownLoadLinK(Inoutno); //填充首页 sumCount = 0; totalCount = 0; PaintIndex = 1; ISheet sheet2 = book.CreateSheet("首页"); row = sheet2.CreateRow(0); row.CreateCell(0); row.Cells[0].SetCellValue(" " + companyname); row.GetCell(0).CellStyle = style; rowNum = FirstDT.Rows.Count; //不需要显示的列移除 for (int i = FirstDT.Columns.Count - 1; i > 0; i--) { for (int j = 0; j < box.Length; j++) { if (box[j].Name == "FirstPage_WID" && !box[j].Checked) { if (FirstDT.Columns[i].ColumnName.ToLower().Contains("ch_waterid")) { FirstDT.Columns.RemoveAt(i); } } if (box[j].Name == "FirstPage_YIELD" && !box[j].Checked) { if (FirstDT.Columns[i].ColumnName.ToLower().Contains("ch_yeild")) { FirstDT.Columns.RemoveAt(i); } } if (box[j].Name == "FirstPage_REMARK" && !box[j].Checked) { if (FirstDT.Columns[i].ColumnName.ToLower().Contains("ch_remark")) { FirstDT.Columns.RemoveAt(i); } } if (box[j].Name == "FirstPage_BOXCODE" && !box[j].Checked) { if (FirstDT.Columns[i].ColumnName.ToLower().Contains("ch_pbcode")) { FirstDT.Columns.RemoveAt(i); } } } } columnNum = FirstDT.Columns.Count; for (int i = 0; i < rowNum; i++) { IRow row1 = sheet2.CreateRow(PaintIndex); PaintIndex = PaintIndex + 1; row1.HeightInPoints = RowHeight; //只需要绘制一行 if (i == 0) { for (int j = 0; j < columnNum - 3; j++) { if (j == 0) { row1.CreateCell(j); row1.Cells[j].SetCellValue(FirstDT.Columns["pi_title"].Caption + ":" + FirstDT.Rows[i]["pi_title"].ToString() + " " + FirstDT.Columns["ch_level"].Caption + ":" + FirstDT.Rows[i]["ch_level"].ToString()); } else if (j > 5 && j == columnNum - 5) { row1.CreateCell(j); row1.Cells[j].SetCellValue(FirstDT.Columns["pi_inoutno"].Caption + ":" + FirstDT.Rows[i]["pi_inoutno"].ToString()); } else if (columnNum > 5 && j == columnNum - 5) { row1.CreateCell(j); row1.Cells[j].SetCellValue(FirstDT.Columns["pi_inoutno"].Caption + ":" + FirstDT.Rows[i]["pi_inoutno"].ToString()); } else { row1.CreateCell(j); } row1.GetCell(j).CellStyle = style; } row1 = sheet2.CreateRow(PaintIndex); PaintIndex = PaintIndex + 1; //第二行添加型号 for (int j = 0; j < columnNum - 3; j++) { if (j == 0) { row1.CreateCell(j).SetCellValue(FirstDT.Columns["pr_orispeccode"].Caption + ":" + FirstDT.Rows[i]["pr_orispeccode"].ToString() + "_" + "(" + FirstDT.Rows[i]["me_desc"].ToString() + ")" + FirstDT.Columns["pi_chipouttype"].Caption + ":" + FirstDT.Rows[i]["pi_chipouttype"].ToString()); } else if (j == ShowSizeIndex) { row1.CreateCell(j); row1.Cells[j].SetCellValue(FirstDT.Columns["pr_size"].Caption + ":" + FirstDT.Rows[i]["pr_size"].ToString()); } else if (j > 5 && j == columnNum - 5) { row1.CreateCell(j); row1.Cells[j].SetCellValue(FirstDT.Columns["pi_date"].Caption + ":" + FirstDT.Rows[i]["pi_date"].ToString()); } else if (columnNum > 5 && j == columnNum - 5) { row1.CreateCell(j); row1.Cells[j].SetCellValue(FirstDT.Columns["pi_date"].Caption + ":" + FirstDT.Rows[i]["pi_date"].ToString()); } else { row1.CreateCell(j); } row1.GetCell(j).CellStyle = style; } row1 = sheet2.CreateRow(PaintIndex); PaintIndex = PaintIndex + 1; //添加列名 for (int j = 4; j < columnNum; j++) { row1.CreateCell(j - 4); if (NotShowColumn.Contains(FirstDT.Columns[j].ColumnName.ToLower())) { } else { row1.Cells[j - 4].CellStyle = styleborder; row1.Cells[j - 4].SetCellValue(FirstDT.Columns[j].Caption); } } row1 = sheet2.CreateRow(PaintIndex); PaintIndex = PaintIndex + 1; } //添加数据内容 ShowColumnCount = 0; for (int j = 4; j < columnNum; j++) { row1.CreateCell(j - 4); if (FirstDT.Columns[j].ColumnName == "ch_bluefilm") { row1.CreateCell(j - 4, CellType.String); } if (!NotShowColumn.Contains(FirstDT.Columns[j].ColumnName.ToLower())) { string Data = FirstDT.Rows[i][j].ToString(); row1.Cells[j - 4].SetCellValue(Data); row1.GetCell(j - 4).CellStyle = styleborder; if (FirstDT.Columns[j].ColumnName == "num") { row1.Cells[j - 4].SetCellValue(int.Parse(Data)); sumCount += int.Parse(Data); } if (FirstDT.Columns[j].ColumnName == "io_qty") { totalCount += int.Parse(Data); row1.Cells[j - 4].SetCellValue(int.Parse(Data)); } ShowColumnCount = ShowColumnCount + 1; } else { } } //添加总计行 if (i == rowNum - 1) { row1 = sheet2.CreateRow(PaintIndex); PaintIndex = PaintIndex + 1; for (int j = 0; j < ShowColumnCount; j++) { if (j == 0) { row1.CreateCell(j); row1.Cells[j].CellStyle = styleborder; row1.Cells[j].SetCellValue(总计); } else if (j == ShowColumnCount - 2) { row1.CreateCell(j); row1.Cells[j].CellStyle = styleborder; row1.Cells[j].SetCellValue(sumCount); } else if (j == ShowColumnCount - 1) { row1.CreateCell(j); row1.Cells[j].CellStyle = styleborder; row1.Cells[j].SetCellValue(totalCount); } else { row1.CreateCell(j); row1.Cells[j].CellStyle = styleborder; } } } } //将book的内容写入内存流中返回 book.Write(ms); return ms; } } }