callm 5 жил өмнө
parent
commit
2754efbb1f

+ 8 - 1
UAS-出货标签管理(贸易版)/ExportExcel.cs

@@ -149,7 +149,14 @@ namespace UAS_LabelMachine
                         dt1.Columns[i].Caption = SQL_.Rows[i]["es_caption"].ToString();
                     }
                 }
-                eh.ExportExcel(dt1, dt, ExportFileDialog.SelectedPath, inoutno, SplitType, int.Parse(RowNum.Text), conditionbox);
+                if (dh.getFieldDataByCondition("prodinout", "pi_cardcode", "pi_inoutno='" + inoutno + "'").ToString() != dh.GetConfig("ExportProdExcel", "ExportProdExcel").ToString())
+                {
+                    eh.ExportExcel(dt1, dt, ExportFileDialog.SelectedPath, inoutno, SplitType, int.Parse(RowNum.Text), conditionbox);
+                }
+                else
+                {
+                    eh.ExportExcel_Special(dt1, dt, ExportFileDialog.SelectedPath, inoutno, SplitType, int.Parse(RowNum.Text), conditionbox);
+                }
                 string close = MessageBox.Show(this.ParentForm, "导出成功,是否打开文件", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question).ToString();
                 if (close.ToString() == "Yes")
                     System.Diagnostics.Process.Start(ExportFileDialog.SelectedPath + "\\" + inoutno + ".xls");

+ 1034 - 83
UAS-出货标签管理(贸易版)/PublicMethod/ExcelHandler.cs

@@ -37,6 +37,26 @@ namespace UAS_LabelMachine
             return filePath;
         }
 
+        /// <summary>
+        /// 导出Excel,返回文件在客户端的路径
+        /// </summary>
+        public string ExportExcel_Special(DataTable firstsdt, DataTable dt, string FolderPath, string FileName, string Type, int PageSize, List<CheckBox> conditionbox)
+        {
+            //创建一个内存流,用来接收转换成Excel的内容
+            MemoryStream ms;
+            ms = DataTableToExcel2(firstsdt, dt, Type, FileName, PageSize, conditionbox);
+            //以系统当前时间命名文件,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;
+        }
+
         /// <summary>
         /// 导出Excel,返回文件在客户端的路径
         /// </summary>
@@ -304,9 +324,28 @@ namespace UAS_LabelMachine
             styleborder.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Left;
             styleborder.SetFont(ffont);
             string pi_inoutno = "";
+
+
+            List<string> NotShowColumn = new List<string>();
+            NotShowColumn.Add("ch_level");
+            NotShowColumn.Add("pib_id");
+            NotShowColumn.Add("chw_itemname1");
+            NotShowColumn.Add("chw_itemname2");
+            NotShowColumn.Add("pd_ordercode");
+            NotShowColumn.Add("pr_size");
+            NotShowColumn.Add("me_desc");
+            NotShowColumn.Add("pr_orispeccode1");
+            NotShowColumn.Add("pi_title");
+            //展示的内容列
+            int ShowColumnsCount = 0;
             //设置列的宽度,根据首行的列的内容的长度来设置
             for (int i = DataTable.Columns.Count - 1; i > 0; i--)
             {
+                //统计显示的列数
+                if (!NotShowColumn.Contains(DataTable.Columns[i].ColumnName.ToLower()))
+                {
+                    ShowColumnsCount = ShowColumnsCount + 1;
+                }
                 for (int j = 0; j < box.Length; j++)
                 {
                     if (box[j].Name.ToLower() == "ch_bluefilm" && !box[j].Checked)
@@ -467,9 +506,9 @@ namespace UAS_LabelMachine
                                     if (j == 0)
                                     {
                                         row1.CreateCell(j);
-                                        row1.Cells[j].SetCellValue(DataTable.Rows[i]["pi_title"].ToString() + "    " + DataTable.Rows[i]["ch_level"].ToString());
+                                        row1.Cells[j].SetCellValue(DataTable.Rows[i]["pi_title"].ToString()+"  "+ DataTable.Rows[i]["ch_level"].ToString());
                                     }
-                                    else if (j == 6)
+                                    else if (columnNum > 14 && j == columnNum - 14)
                                     {
                                         row1.CreateCell(j);
                                         row1.Cells[j].SetCellValue(DataTable.Rows[i]["pi_inoutno"].ToString());
@@ -488,9 +527,9 @@ namespace UAS_LabelMachine
                                     if (j == 0)
                                     {
                                         row1.CreateCell(j);
-                                        row1.Cells[j].SetCellValue(DataTable.Rows[i]["pr_orispeccode"].ToString() + " " + DataTable.Rows[i]["me_desc"].ToString() + " " + DataTable.Rows[i]["pr_size"].ToString());
+                                        row1.Cells[j].SetCellValue(DataTable.Rows[i]["pr_orispeccode"].ToString() + DataTable.Rows[i]["me_desc"].ToString() + DataTable.Rows[i]["pr_size"].ToString());
                                     }
-                                    else if (j == 6)
+                                    else if (columnNum > 14 && j == columnNum - 14)
                                     {
                                         row1.CreateCell(j);
                                         row1.Cells[j].SetCellValue(DataTable.Rows[i]["pi_date"].ToString());
@@ -507,28 +546,28 @@ namespace UAS_LabelMachine
                                 //计数列所在的索引
                                 for (int j = 4; j < columnNum; j++)
                                 {
+                                    row1.CreateCell(j - 4);
+                                    row1.Cells[j - 4].CellStyle = styleborder;
                                     if (DataTable.Columns[j].ColumnName.ToLower() == "chw_percent1")
                                     {
-                                        row1.CreateCell(j - 4);
-                                        row1.Cells[j - 4].CellStyle = styleborder;
                                         row1.Cells[j - 4].SetCellValue(DataTable.Rows[i]["chw_itemname1"].ToString());
                                     }
                                     else if (DataTable.Columns[j].ColumnName.ToLower() == "chw_percent2")
                                     {
-                                        row1.CreateCell(j - 4);
-                                        row1.Cells[j - 4].CellStyle = styleborder;
                                         row1.Cells[j - 4].SetCellValue(DataTable.Rows[i]["chw_itemname2"].ToString());
                                     }
-                                    else if (!(DataTable.Columns[j].ColumnName.ToLower().Contains("ch_level") || DataTable.Columns[j].ColumnName.ToLower().Contains("pib_id") || DataTable.Columns[j].ColumnName.ToLower().Contains("chw_itemname") || DataTable.Columns[j].ColumnName.ToLower().Contains("pr_orispeccode") || DataTable.Columns[j].ColumnName.ToLower().Contains("pd_ordercode") || DataTable.Columns[j].ColumnName.ToLower().Contains("pr_size") || DataTable.Columns[j].ColumnName.ToLower().Contains("me_desc") || (!ShowChcode && DataTable.Columns[j].ColumnName.ToLower().Contains("ch_code"))))
-                                    {
-                                        row1.CreateCell(j - 4);
-                                        row1.Cells[j - 4].CellStyle = styleborder;
+                                    else
                                         row1.Cells[j - 4].SetCellValue(DataTable.Columns[j].Caption);
-                                    }
+
                                     if (DataTable.Columns[j].ColumnName.ToString() == "io_qty")
                                     {
                                         NumIndex = j;
                                     }
+                                    //如果chw_itemname1的值为空,则值为100和0,其中一列不显示,不显示
+                                    if ((NotShowColumn.Contains(DataTable.Columns[j].ColumnName.ToLower())) ||(!ShowChcode && DataTable.Columns[j].ColumnName.ToLower().Contains("ch_code")))
+                                    {
+                                        sheet.SetColumnHidden(j - 4, true);
+                                    }
                                 }
                                 row1 = sheet.CreateRow(PaintIndex);
                                 PaintIndex = PaintIndex + 1;
@@ -537,13 +576,10 @@ namespace UAS_LabelMachine
                         //添加数据内容
                         for (int j = 4; j < columnNum; j++)
                         {
-                            if (!(DataTable.Columns[j].ColumnName.ToLower().Contains("ch_level") || DataTable.Columns[j].ColumnName.ToLower().Contains("pib_id") || DataTable.Columns[j].ColumnName.ToLower().Contains("chw_itemname") || DataTable.Columns[j].ColumnName.ToLower().Contains("pr_orispeccode") || DataTable.Columns[j].ColumnName.ToLower().Contains("pd_ordercode") || DataTable.Columns[j].ColumnName.ToLower().Contains("pr_size") || DataTable.Columns[j].ColumnName.ToLower().Contains("me_desc") || (!ShowChcode && DataTable.Columns[j].ColumnName.ToLower().Contains("ch_code"))))
-                            {
-                                row1.CreateCell(j - 4);
-                                string Data = DataTable.Rows[i][j].ToString();
-                                row1.Cells[j - 4].SetCellValue(Data);
-                                row1.GetCell(j - 4).CellStyle = styleborder;
-                            }
+                            string Data = DataTable.Rows[i][j].ToString();
+                            row1.CreateCell(j - 4);
+                            row1.Cells[j - 4].SetCellValue(Data);
+                            row1.GetCell(j - 4).CellStyle = styleborder;
                             if (DataTable.Columns[j].ColumnName == "io_qty")
                             {
                                 sumCount += int.Parse(DataTable.Rows[i][j].ToString());
@@ -628,7 +664,7 @@ namespace UAS_LabelMachine
                     }
                     for (int i = 0; i < sheet.LastRowNum; i++)
                     {
-                        if (i > 2)
+                        if (i != 0)
                         {
                             sheet.AutoSizeColumn(i);
                             sheet.SetColumnWidth(i, sheet.GetColumnWidth(i) + 1000);
@@ -677,9 +713,9 @@ namespace UAS_LabelMachine
                                     if (j == 0)
                                     {
                                         row1.CreateCell(j);
-                                        row1.Cells[j].SetCellValue(DataTable.Rows[i]["pi_title"].ToString() + "    " + DataTable.Rows[i]["ch_level"].ToString());
+                                        row1.Cells[j].SetCellValue(DataTable.Rows[i]["pi_title"].ToString() + "  " + DataTable.Rows[i]["ch_level"].ToString());
                                     }
-                                    else if (j == 6)
+                                    else if (columnNum > 14 && j == columnNum - 14)
                                     {
                                         row1.CreateCell(j);
                                         row1.Cells[j].SetCellValue(DataTable.Rows[i]["pi_inoutno"].ToString());
@@ -698,9 +734,9 @@ namespace UAS_LabelMachine
                                     if (j == 0)
                                     {
                                         row1.CreateCell(j);
-                                        row1.Cells[j].SetCellValue(DataTable.Rows[i]["pr_orispeccode"].ToString() + " " + DataTable.Rows[i]["me_desc"].ToString() + " " + DataTable.Rows[i]["pr_size"].ToString());
+                                        row1.Cells[j].SetCellValue(DataTable.Rows[i]["pr_orispeccode"].ToString() + DataTable.Rows[i]["me_desc"].ToString() + DataTable.Rows[i]["pr_size"].ToString());
                                     }
-                                    else if (j == 6)
+                                    else if (columnNum > 14 && j == columnNum - 14)
                                     {
                                         row1.CreateCell(j);
                                         row1.Cells[j].SetCellValue(DataTable.Rows[i]["pi_date"].ToString());
@@ -716,23 +752,21 @@ namespace UAS_LabelMachine
                                 PaintIndex = PaintIndex + 1;
                                 for (int j = 4; j < columnNum; j++)
                                 {
+                                    row1.CreateCell(j - 4);
+                                    row1.Cells[j - 4].CellStyle = styleborder;
                                     if (DataTable.Columns[j].ColumnName.ToLower() == "chw_percent1")
                                     {
-                                        row1.CreateCell(j - 4);
-                                        row1.Cells[j - 4].CellStyle = styleborder;
                                         row1.Cells[j - 4].SetCellValue(DataTable.Rows[i]["chw_itemname1"].ToString());
                                     }
                                     else if (DataTable.Columns[j].ColumnName.ToLower() == "chw_percent2")
                                     {
-                                        row1.CreateCell(j - 4);
-                                        row1.Cells[j - 4].CellStyle = styleborder;
                                         row1.Cells[j - 4].SetCellValue(DataTable.Rows[i]["chw_itemname2"].ToString());
                                     }
-                                    else if (!(DataTable.Columns[j].ColumnName.ToLower().Contains("ch_level") || DataTable.Columns[j].ColumnName.ToLower().Contains("pib_id") || DataTable.Columns[j].ColumnName.ToLower().Contains("chw_itemname") || DataTable.Columns[j].ColumnName.ToLower().Contains("pr_orispeccode") || DataTable.Columns[j].ColumnName.ToLower().Contains("pd_ordercode") || DataTable.Columns[j].ColumnName.ToLower().Contains("pr_size") || DataTable.Columns[j].ColumnName.ToLower().Contains("me_desc") || (!ShowChcode && DataTable.Columns[j].ColumnName.ToLower().Contains("ch_code"))))
-                                    {
-                                        row1.CreateCell(j - 4);
-                                        row1.Cells[j - 4].CellStyle = styleborder;
+                                    else
                                         row1.Cells[j - 4].SetCellValue(DataTable.Columns[j].Caption);
+                                    if ((NotShowColumn.Contains(DataTable.Columns[j].ColumnName.ToLower())) ||(!ShowChcode && DataTable.Columns[j].ColumnName.ToLower().Contains("ch_code")))
+                                    {
+                                        sheet.SetColumnHidden(j - 4, true);
                                     }
                                 }
                                 row1 = sheet.CreateRow(PaintIndex);
@@ -742,13 +776,10 @@ namespace UAS_LabelMachine
                         //添加数据内容
                         for (int j = 4; j < columnNum; j++)
                         {
-                            if (!(DataTable.Columns[j].ColumnName.ToLower().Contains("ch_level") || DataTable.Columns[j].ColumnName.ToLower().Contains("pib_id") || DataTable.Columns[j].ColumnName.ToLower().Contains("chw_itemname") || DataTable.Columns[j].ColumnName.ToLower().Contains("pr_orispeccode") || DataTable.Columns[j].ColumnName.ToLower().Contains("pd_ordercode") || DataTable.Columns[j].ColumnName.ToLower().Contains("pr_size") || DataTable.Columns[j].ColumnName.ToLower().Contains("me_desc") || (!ShowChcode && DataTable.Columns[j].ColumnName.ToLower().Contains("ch_code"))))
-                            {
-                                row1.CreateCell(j - 4);
-                                string Data = DataTable.Rows[i][j].ToString();
-                                row1.Cells[j - 4].SetCellValue(Data);
-                                row1.GetCell(j - 4).CellStyle = styleborder;
-                            }
+                            string Data = DataTable.Rows[i][j].ToString();
+                            row1.CreateCell(j - 4);
+                            row1.Cells[j - 4].SetCellValue(Data);
+                            row1.GetCell(j - 4).CellStyle = styleborder;
                             if (DataTable.Columns[j].ColumnName == "io_qty")
                             {
                                 sumCount += int.Parse(DataTable.Rows[i][j].ToString());
@@ -820,7 +851,7 @@ namespace UAS_LabelMachine
                     }
                     for (int i = 0; i < sheet.LastRowNum; i++)
                     {
-                        if (i > 2)
+                        if (i != 0)
                         {
                             sheet.AutoSizeColumn(i);
                             sheet.SetColumnWidth(i, sheet.GetColumnWidth(i) + 1000);
@@ -869,9 +900,9 @@ namespace UAS_LabelMachine
                                     if (j == 0)
                                     {
                                         row1.CreateCell(j);
-                                        row1.Cells[j].SetCellValue(DataTable.Rows[i]["pi_title"].ToString() + "    " + DataTable.Rows[i]["ch_level"].ToString());
+                                        row1.Cells[j].SetCellValue(DataTable.Rows[i]["pi_title"].ToString() + "  " + DataTable.Rows[i]["ch_level"].ToString());
                                     }
-                                    else if (j == 6)
+                                    else if (columnNum > 14 && j == columnNum - 14)
                                     {
                                         row1.CreateCell(j);
                                         row1.Cells[j].SetCellValue(DataTable.Rows[i]["pi_inoutno"].ToString());
@@ -890,9 +921,9 @@ namespace UAS_LabelMachine
                                     if (j == 0)
                                     {
                                         row1.CreateCell(j);
-                                        row1.Cells[j].SetCellValue(DataTable.Rows[i]["pr_orispeccode"].ToString() + " " + DataTable.Rows[i]["me_desc"].ToString() + " " + DataTable.Rows[i]["pr_size"].ToString());
+                                        row1.Cells[j].SetCellValue(DataTable.Rows[i]["pr_orispeccode"].ToString() + DataTable.Rows[i]["me_desc"].ToString() + DataTable.Rows[i]["pr_size"].ToString());
                                     }
-                                    else if (j == 6)
+                                    else if (columnNum > 14 && j == columnNum - 14)
                                     {
                                         row1.CreateCell(j);
                                         row1.Cells[j].SetCellValue(DataTable.Rows[i]["pi_date"].ToString());
@@ -909,30 +940,21 @@ namespace UAS_LabelMachine
                                 for (int j = 4; j < columnNum; j++)
                                 {
                                     //设定固定的列名
-                                    if (!(DataTable.Columns[j].ColumnName.ToLower().Contains("ch_level") || DataTable.Columns[j].ColumnName.ToLower().Contains("pib_id") || DataTable.Columns[j].ColumnName.ToLower().Contains("chw_itemname") || DataTable.Columns[j].ColumnName.ToLower().Contains("pr_orispeccode") || DataTable.Columns[j].ColumnName.ToLower().Contains("pd_ordercode") || DataTable.Columns[j].ColumnName.ToLower().Contains("pr_size") || DataTable.Columns[j].ColumnName.ToLower().Contains("me_desc") || (!ShowChcode && DataTable.Columns[j].ColumnName.ToLower().Contains("ch_code"))))
-                                    {
-                                        row1.CreateCell(j - 4);
-                                        string Data = DataTable.Rows[i][j].ToString();
-                                        row1.Cells[j - 4].SetCellValue(Data);
-                                        row1.GetCell(j - 4).CellStyle = styleborder;
-                                    }
+                                    row1.CreateCell(j - 4);
+                                    row1.Cells[j - 4].CellStyle = styleborder;
                                     if (DataTable.Columns[j].ColumnName.ToLower() == "chw_percent1")
                                     {
-                                        row1.CreateCell(j - 4);
-                                        row1.Cells[j - 4].CellStyle = styleborder;
                                         row1.Cells[j - 4].SetCellValue(DataTable.Rows[i]["chw_itemname1"].ToString());
                                     }
                                     else if (DataTable.Columns[j].ColumnName.ToLower() == "chw_percent2")
                                     {
-                                        row1.CreateCell(j - 4);
-                                        row1.Cells[j - 4].CellStyle = styleborder;
                                         row1.Cells[j - 4].SetCellValue(DataTable.Rows[i]["chw_itemname2"].ToString());
                                     }
-                                    else if (!(DataTable.Columns[j].ColumnName.ToLower().Contains("ch_level") || DataTable.Columns[j].ColumnName.ToLower().Contains("pib_id") || DataTable.Columns[j].ColumnName.ToLower().Contains("chw_itemname") || DataTable.Columns[j].ColumnName.ToLower().Contains("pr_orispeccode") || DataTable.Columns[j].ColumnName.ToLower().Contains("pd_ordercode") || DataTable.Columns[j].ColumnName.ToLower().Contains("pr_size") || DataTable.Columns[j].ColumnName.ToLower().Contains("me_desc") || (!ShowChcode && DataTable.Columns[j].ColumnName.ToLower().Contains("ch_code"))))
-                                    {
-                                        row1.CreateCell(j - 4);
-                                        row1.Cells[j - 4].CellStyle = styleborder;
+                                    else
                                         row1.Cells[j - 4].SetCellValue(DataTable.Columns[j].Caption);
+                                    if ((NotShowColumn.Contains(DataTable.Columns[j].ColumnName.ToLower())) ||(!ShowChcode && DataTable.Columns[j].ColumnName.ToLower().Contains("ch_code")))
+                                    {
+                                        sheet.SetColumnHidden(j - 4, true);
                                     }
                                 }
                                 row1 = sheet.CreateRow(PaintIndex);
@@ -942,14 +964,10 @@ namespace UAS_LabelMachine
                         //添加数据内容
                         for (int j = 4; j < columnNum; j++)
                         {
-
-                            if (!(DataTable.Columns[j].ColumnName.ToLower().Contains("ch_level") || DataTable.Columns[j].ColumnName.ToLower().Contains("pib_id") || DataTable.Columns[j].ColumnName.ToLower().Contains("chw_itemname") || DataTable.Columns[j].ColumnName.ToLower().Contains("pr_orispeccode") || DataTable.Columns[j].ColumnName.ToLower().Contains("pd_ordercode") || DataTable.Columns[j].ColumnName.ToLower().Contains("pr_size") || DataTable.Columns[j].ColumnName.ToLower().Contains("me_desc") || (!ShowChcode && DataTable.Columns[j].ColumnName.ToLower().Contains("ch_code"))))
-                            {
-                                row1.CreateCell(j - 4);
-                                string Data = DataTable.Rows[i][j].ToString();
-                                row1.Cells[j - 4].SetCellValue(Data);
-                                row1.GetCell(j - 4).CellStyle = styleborder;
-                            }
+                            string Data = DataTable.Rows[i][j].ToString();
+                            row1.CreateCell(j - 4);
+                            row1.Cells[j - 4].SetCellValue(Data);
+                            row1.GetCell(j - 4).CellStyle = styleborder;
                             if (DataTable.Columns[j].ColumnName == "io_qty")
                             {
                                 sumCount += int.Parse(DataTable.Rows[i][j].ToString());
@@ -966,11 +984,7 @@ namespace UAS_LabelMachine
                             PaintIndex = PaintIndex + 1;
                             for (int j = 0; j < columnNum - 4; j++)
                             {
-                                if (!(DataTable.Columns[j].ColumnName.ToLower().Contains("ch_level") || DataTable.Columns[j].ColumnName.ToLower().Contains("pib_id") || DataTable.Columns[j].ColumnName.ToLower().Contains("chw_itemname") || DataTable.Columns[j].ColumnName.ToLower().Contains("pr_orispeccode") || DataTable.Columns[j].ColumnName.ToLower().Contains("pd_ordercode") || DataTable.Columns[j].ColumnName.ToLower().Contains("pr_size") || DataTable.Columns[j].ColumnName.ToLower().Contains("me_desc") || (!ShowChcode && DataTable.Columns[j].ColumnName.ToLower().Contains("ch_code"))))
-                                {
-                                    row1.CreateCell(j);
-                                    row1.Cells[j].CellStyle = styleborder;
-                                }
+                                row1.CreateCell(j);
                                 if (j == 0)
                                 {
                                     row1.Cells[j].SetCellValue("小计");
@@ -979,6 +993,7 @@ namespace UAS_LabelMachine
                                 {
                                     row1.Cells[j - 4].SetCellValue(sumCount);
                                 }
+                                row1.Cells[j].CellStyle = styleborder;
                             }
                             row1 = sheet.CreateRow(PaintIndex);
 
@@ -1024,7 +1039,7 @@ namespace UAS_LabelMachine
                     }
                     for (int i = 0; i < sheet.LastRowNum; i++)
                     {
-                        if (i > 2)
+                        if (i != 0)
                         {
                             sheet.AutoSizeColumn(i);
                             sheet.SetColumnWidth(i, sheet.GetColumnWidth(i) + 1000);
@@ -1034,15 +1049,6 @@ namespace UAS_LabelMachine
                 default:
                     break;
             }
-            sheet.PrintSetup.Landscape = true;
-
-            sheet.PrintSetup.PaperSize = (short)PaperSize.A4;
-
-            sheet.PrintSetup.FitHeight = 2;
-
-            sheet.PrintSetup.FitWidth = 3;
-
-            sheet.IsPrintGridlines = true;
             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);
@@ -1105,6 +1111,951 @@ namespace UAS_LabelMachine
                             row1.CreateCell(j);
                             row1.Cells[j].SetCellValue(DataTable.Rows[i]["pi_inoutno"].ToString());
                         }
+                        else if (columnNum > 5 && j == columnNum - 5)
+                        {
+                            row1.CreateCell(j);
+                            row1.Cells[j].SetCellValue(DataTable.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);
+                            row1.Cells[j].SetCellValue(FirstDT.Rows[i]["pr_orispeccode"].ToString());
+                        }
+                        else if (j > 5 && j == columnNum - 5)
+                        {
+                            row1.CreateCell(j);
+                            row1.Cells[j].SetCellValue(DataTable.Rows[i]["pi_date"].ToString());
+                        }
+                        else if (columnNum > 5 && j == columnNum - 5)
+                        {
+                            row1.CreateCell(j);
+                            row1.Cells[j].SetCellValue(DataTable.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);
+                        row1.Cells[j - 4].CellStyle = styleborder;
+                        row1.Cells[j - 4].SetCellValue(FirstDT.Columns[j].Caption);
+                    }
+                    row1 = sheet2.CreateRow(PaintIndex);
+                    PaintIndex = PaintIndex + 1;
+                }
+                //添加数据内容
+                for (int j = 4; j < columnNum; j++)
+                {
+                    string Data = FirstDT.Rows[i][j].ToString();
+                    row1.CreateCell(j - 4);
+                    row1.Cells[j - 4].SetCellValue(Data);
+                    row1.GetCell(j - 4).CellStyle = styleborder;
+                    if (FirstDT.Columns[j].ColumnName == "num")
+                    {
+                        sumCount += int.Parse(Data);
+                    }
+                    if (FirstDT.Columns[j].ColumnName == "io_qty")
+                    {
+                        totalCount += int.Parse(Data);
+                    }
+                }
+                //添加总计行
+                if (i == rowNum - 1)
+                {
+                    row1 = sheet2.CreateRow(PaintIndex);
+                    PaintIndex = PaintIndex + 1;
+                    for (int j = 0; j < columnNum - 4; j++)
+                    {
+                        if (j == 0)
+                        {
+                            row1.CreateCell(j);
+                            row1.Cells[j].CellStyle = styleborder;
+                            row1.Cells[j].SetCellValue("总计");
+                        }
+                        else if (j == columnNum - 6)
+                        {
+                            row1.CreateCell(j);
+                            row1.Cells[j].CellStyle = styleborder;
+                            row1.Cells[j].SetCellValue(sumCount);
+                        }
+                        else if (j == columnNum - 5)
+                        {
+                            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;
+        }
+
+
+        /// <summary>
+        /// 将DataTable形式的数据转成Excel格式的,然后用字节流的形式写入文件
+        /// </summary>
+        /// <param name="DataTable"></param>
+        /// <returns></returns>
+        public MemoryStream DataTableToExcel2(DataTable FirstDT, DataTable DataTable, string Type, string Inoutno, int PageSize, List<CheckBox> conditionbox)
+        {
+            //转换为序列
+            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);
+            //芯片号需要作为更新盒号的条件
+            HSSFFont ffont = (HSSFFont)book.CreateFont();
+            ffont.FontName = "宋体";
+            bool ShowChcode = true;
+            //更新箱号
+            List<string> pib_id = new List<string>();
+            //系统打印箱号
+            List<string> pib_outboxcode1 = new List<string>();
+            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<string> NotShowColumn = new List<string>();
+            NotShowColumn.Add("ch_level");
+            NotShowColumn.Add("pib_id");
+            NotShowColumn.Add("chw_itemname1");
+            NotShowColumn.Add("chw_itemname2");
+            NotShowColumn.Add("pd_ordercode");
+            NotShowColumn.Add("pr_size");
+            NotShowColumn.Add("me_desc");
+            NotShowColumn.Add("pr_orispeccode1");
+            NotShowColumn.Add("pi_title");
+            //展示的内容列
+            int ShowColumnsCount = 0;
+            //设置列的宽度,根据首行的列的内容的长度来设置
+            for (int i = DataTable.Columns.Count - 1; i > 0; i--)
+            {
+                //统计显示的列数
+                if (!NotShowColumn.Contains(DataTable.Columns[i].ColumnName.ToLower()))
+                {
+                    ShowColumnsCount = ShowColumnsCount + 1;
+                }
+                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"))
+                        {
+                            ShowChcode = true;
+                            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;
+                        }
+                    }
+                }
+            }
+            //获取行数量和列数量
+            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("                                       深爱半导体股份有限公司芯片出货清单");
+
+            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<string> First_WID = new ArrayList<string>();
+                    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_orispeccode1") && !First_Prspec.Contains(DataTable.Rows[i]["pr_orispeccode1"].ToString()))
+                        {
+                            First_Prspec += DataTable.Rows[i]["pr_orispeccode1"].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["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_orispeccode1"] = 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 < columnNum - 4; j++)
+                            {
+                                row1.CreateCell(j);
+                                if (j == 0)
+                                {
+                                    row1.Cells[j].SetCellValue("小计");
+                                }
+                                else if (DataTable.Columns[j].ColumnName == "io_qty")
+                                {
+                                    row1.Cells[NumIndex - 4].SetCellValue(sumCount);
+                                }
+                                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)
+                            {
+                                for (int j = 0; j < columnNum - 3; j++)
+                                {
+                                    if (j == 0)
+                                    {
+                                        row1.CreateCell(j);
+                                        row1.Cells[j].SetCellValue(DataTable.Rows[i]["pi_title"].ToString() + "  " + DataTable.Rows[i]["ch_level"].ToString());
+                                    }
+                                    else if (columnNum > 14 && j == columnNum - 14)
+                                    {
+                                        row1.CreateCell(j);
+                                        row1.Cells[j].SetCellValue(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.Rows[i]["pr_orispeccode"].ToString() + DataTable.Rows[i]["me_desc"].ToString() + DataTable.Rows[i]["pr_size"].ToString());
+                                    }
+                                    else if (columnNum > 14 && j == columnNum - 14)
+                                    {
+                                        row1.CreateCell(j);
+                                        row1.Cells[j].SetCellValue(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 = 4; j < columnNum; j++)
+                                {
+                                    row1.CreateCell(j - 4);
+                                    row1.Cells[j - 4].CellStyle = styleborder;
+                                    if (DataTable.Columns[j].ColumnName.ToLower() == "chw_percent1")
+                                    {
+                                        row1.Cells[j - 4].SetCellValue(DataTable.Rows[i]["chw_itemname1"].ToString());
+                                    }
+                                    else if (DataTable.Columns[j].ColumnName.ToLower() == "chw_percent2")
+                                    {
+                                        row1.Cells[j - 4].SetCellValue(DataTable.Rows[i]["chw_itemname2"].ToString());
+                                    }
+                                    else
+                                        row1.Cells[j - 4].SetCellValue(DataTable.Columns[j].Caption);
+
+                                    if (DataTable.Columns[j].ColumnName.ToString() == "io_qty")
+                                    {
+                                        NumIndex = j;
+                                    }
+                                    //如果chw_itemname1的值为空,则值为100和0,其中一列不显示,不显示
+                                    if ((NotShowColumn.Contains(DataTable.Columns[j].ColumnName.ToLower())) || (!ShowChcode && DataTable.Columns[j].ColumnName.ToLower().Contains("ch_code")))
+                                    {
+                                        sheet.SetColumnHidden(j - 4, true);
+                                    }
+                                }
+                                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);
+                            row1.Cells[j - 4].SetCellValue(Data);
+                            row1.GetCell(j - 4).CellStyle = styleborder;
+                            if (DataTable.Columns[j].ColumnName == "io_qty")
+                            {
+                                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);
+                            }
+                        }
+                        //固定行号分组的时候自动拼接新的DataTable
+                        if (i == rowNum - 1)
+                        {
+                            DataRow dr = FirstDT.NewRow();
+                            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_orispeccode1"] = 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 < columnNum - 4; j++)
+                            {
+                                row1.CreateCell(j);
+                                if (j == 0)
+                                {
+                                    row1.Cells[j].SetCellValue("小计");
+                                }
+                                else if (DataTable.Columns[j].ColumnName == "io_qty")
+                                {
+                                    row1.Cells[j - 4].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 == 2)
+                                {
+                                    row1.CreateCell(j);
+                                    row1.Cells[j].SetCellValue(totalCount);
+                                }
+                                //原本是j == columnNum - 5因为还有spec和order两列隐藏列,所以需要在往后移动
+                                else if (j == columnNum - 6)
+                                {
+                                    row1.CreateCell(j);
+                                    row1.Cells[j].SetCellValue(rowNum);
+                                }
+                                else if (j > 5 && j == columnNum - 5)
+                                {
+                                    row1.CreateCell(j);
+                                    row1.Cells[j].SetCellValue("片");
+                                }
+                                else if (columnNum > 5 && j == columnNum - 5)
+                                {
+                                    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;
+                        }
+                        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;
+                case "BatchCode":
+                    string LastBatchCode = "";
+                    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 < columnNum - 4; j++)
+                            {
+                                row1.CreateCell(j);
+                                if (j == 0)
+                                {
+                                    row1.Cells[j].SetCellValue("小计");
+                                }
+                                else if (DataTable.Columns[j].ColumnName == "io_qty")
+                                {
+                                    row1.Cells[j - 4].SetCellValue(sumCount);
+                                }
+                                row1.Cells[j].CellStyle = styleborder;
+                            }
+                            sumCount = 0;
+                            row1 = sheet.CreateRow(PaintIndex);
+                            sheet.SetRowBreak(PaintIndex - 1);
+                            sheet.Footer.Center = "第&P页,共&N页";
+                            PaintIndex = PaintIndex + 1;
+                        }
+                        //每次到了页数开始分页
+                        if (LastBatchCode == "" || (LastBatchCode != "" && LastBatchCode != DataTable.Rows[i]["ch_splitbatch"].ToString()) || i == rowNum - 1)
+                        {
+                            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.Rows[i]["pi_title"].ToString() + "  " + DataTable.Rows[i]["ch_level"].ToString());
+                                    }
+                                    else if (columnNum > 14 && j == columnNum - 14)
+                                    {
+                                        row1.CreateCell(j);
+                                        row1.Cells[j].SetCellValue(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.Rows[i]["pr_orispeccode"].ToString() + DataTable.Rows[i]["me_desc"].ToString() + DataTable.Rows[i]["pr_size"].ToString());
+                                    }
+                                    else if (columnNum > 14 && j == columnNum - 14)
+                                    {
+                                        row1.CreateCell(j);
+                                        row1.Cells[j].SetCellValue(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 = 4; j < columnNum; j++)
+                                {
+                                    row1.CreateCell(j - 4);
+                                    row1.Cells[j - 4].CellStyle = styleborder;
+                                    if (DataTable.Columns[j].ColumnName.ToLower() == "chw_percent1")
+                                    {
+                                        row1.Cells[j - 4].SetCellValue(DataTable.Rows[i]["chw_itemname1"].ToString());
+                                    }
+                                    else if (DataTable.Columns[j].ColumnName.ToLower() == "chw_percent2")
+                                    {
+                                        row1.Cells[j - 4].SetCellValue(DataTable.Rows[i]["chw_itemname2"].ToString());
+                                    }
+                                    else
+                                        row1.Cells[j - 4].SetCellValue(DataTable.Columns[j].Caption);
+                                    if ((NotShowColumn.Contains(DataTable.Columns[j].ColumnName.ToLower())) || (!ShowChcode && DataTable.Columns[j].ColumnName.ToLower().Contains("ch_code")))
+                                    {
+                                        sheet.SetColumnHidden(j - 4, true);
+                                    }
+                                }
+                                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);
+                            row1.Cells[j - 4].SetCellValue(Data);
+                            row1.GetCell(j - 4).CellStyle = styleborder;
+                            if (DataTable.Columns[j].ColumnName == "io_qty")
+                            {
+                                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 (i == rowNum - 1)
+                        {
+                            row1 = sheet.CreateRow(PaintIndex);
+                            PaintIndex = PaintIndex + 1;
+                            for (int j = 0; j < columnNum - 4; j++)
+                            {
+                                row1.CreateCell(j);
+                                if (j == 0)
+                                {
+                                    row1.Cells[j].SetCellValue("小计");
+                                }
+                                else if (DataTable.Columns[j].ColumnName == "io_qty")
+                                {
+                                    row1.Cells[j - 4].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 == 2)
+                                {
+                                    row1.CreateCell(j);
+                                    row1.Cells[j].SetCellValue(totalCount);
+                                }
+                                else if (j == columnNum - 6)
+                                {
+                                    row1.CreateCell(j);
+                                    row1.Cells[j].SetCellValue(rowNum);
+                                }
+                                else if (j > 5 && j == columnNum - 5)
+                                {
+                                    row1.CreateCell(j);
+                                    row1.Cells[j].SetCellValue("片");
+                                }
+                                else if (columnNum > 5 && j == columnNum - 5)
+                                {
+                                    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;
+                        }
+                        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;
+                case "BoxCode":
+                    string LastBoxCode = "";
+                    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 < columnNum - 4; j++)
+                            {
+                                row1.CreateCell(j);
+                                if (j == 0)
+                                {
+                                    row1.Cells[j].SetCellValue("小计");
+                                }
+                                else if (DataTable.Columns[j].ColumnName == "io_qty")
+                                {
+                                    row1.Cells[j - 4].SetCellValue(sumCount);
+                                }
+                                row1.Cells[j].CellStyle = styleborder;
+                            }
+                            sumCount = 0;
+                            row1 = sheet.CreateRow(PaintIndex);
+                            sheet.SetRowBreak(PaintIndex - 1);
+                            sheet.Footer.Center = "第&P页,共&N页";
+                            PaintIndex = PaintIndex + 1;
+                        }
+                        //每次到了页数开始分页
+                        if (LastBoxCode == "" || (LastBoxCode != "" && LastBoxCode != DataTable.Rows[i]["ch_pbcode"].ToString()) || i == rowNum - 1)
+                        {
+                            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.Rows[i]["pi_title"].ToString() + "  " + DataTable.Rows[i]["ch_level"].ToString());
+                                    }
+                                    else if (columnNum > 14 && j == columnNum - 14)
+                                    {
+                                        row1.CreateCell(j);
+                                        row1.Cells[j].SetCellValue(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.Rows[i]["pr_orispeccode"].ToString() + DataTable.Rows[i]["me_desc"].ToString() + DataTable.Rows[i]["pr_size"].ToString());
+                                    }
+                                    else if (columnNum > 14 && j == columnNum - 14)
+                                    {
+                                        row1.CreateCell(j);
+                                        row1.Cells[j].SetCellValue(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 = 4; j < columnNum; j++)
+                                {
+                                    //设定固定的列名
+                                    row1.CreateCell(j - 4);
+                                    row1.Cells[j - 4].CellStyle = styleborder;
+                                    if (DataTable.Columns[j].ColumnName.ToLower() == "chw_percent1")
+                                    {
+                                        row1.Cells[j - 4].SetCellValue(DataTable.Rows[i]["chw_itemname1"].ToString());
+                                    }
+                                    else if (DataTable.Columns[j].ColumnName.ToLower() == "chw_percent2")
+                                    {
+                                        row1.Cells[j - 4].SetCellValue(DataTable.Rows[i]["chw_itemname2"].ToString());
+                                    }
+                                    else
+                                        row1.Cells[j - 4].SetCellValue(DataTable.Columns[j].Caption);
+                                    if ((NotShowColumn.Contains(DataTable.Columns[j].ColumnName.ToLower())) || (!ShowChcode && DataTable.Columns[j].ColumnName.ToLower().Contains("ch_code")))
+                                    {
+                                        sheet.SetColumnHidden(j - 4, true);
+                                    }
+                                }
+                                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);
+                            row1.Cells[j - 4].SetCellValue(Data);
+                            row1.GetCell(j - 4).CellStyle = styleborder;
+                            if (DataTable.Columns[j].ColumnName == "io_qty")
+                            {
+                                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 (i == rowNum - 1)
+                        {
+                            row1 = sheet.CreateRow(PaintIndex);
+                            PaintIndex = PaintIndex + 1;
+                            for (int j = 0; j < columnNum - 4; j++)
+                            {
+                                row1.CreateCell(j);
+                                if (j == 0)
+                                {
+                                    row1.Cells[j].SetCellValue("小计");
+                                }
+                                else if (DataTable.Columns[j].ColumnName == "io_qty")
+                                {
+                                    row1.Cells[j - 4].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 == 2)
+                                {
+                                    row1.CreateCell(j);
+                                    row1.Cells[j].SetCellValue(totalCount);
+                                }
+                                else if (j == columnNum - 6)
+                                {
+                                    row1.CreateCell(j);
+                                    row1.Cells[j].SetCellValue(rowNum);
+                                }
+                                else if (j > 5 && j == columnNum - 5)
+                                {
+                                    row1.CreateCell(j);
+                                    row1.Cells[j].SetCellValue("片");
+                                }
+                                else if (columnNum > 5 && j == columnNum - 5)
+                                {
+                                    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;
+                        }
+                        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("                            深爱半导体股份有限公司芯片出货清单");
+            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);
+                        }
+                    }
+                }
+            }
+            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.Rows[i]["pi_title"].ToString());
+                        }
+                        else if (j > 5 && j == columnNum - 5)
+                        {
+                            row1.CreateCell(j);
+                            row1.Cells[j].SetCellValue(DataTable.Rows[i]["pi_inoutno"].ToString());
+                        }
+                        else if (columnNum > 5 && j == columnNum - 5)
+                        {
+                            row1.CreateCell(j);
+                            row1.Cells[j].SetCellValue(DataTable.Rows[i]["pi_inoutno"].ToString());
+                        }
                         else
                         {
                             row1.CreateCell(j);

+ 3 - 3
UAS-出货标签管理(贸易版)/PublicMethod/LogManager.cs

@@ -7,9 +7,9 @@ namespace UAS_LabelMachine.PublicMethod
     {
         public static void DoLog(string Message)
         {
-            StreamWriter sw = File.AppendText("Log/" + DateTime.Now.ToString("yyyy-MM-dd") + ".txt");
-            sw.WriteLine("\n" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + " " + Message + "\n");
-            sw.Close();
+            //StreamWriter sw = File.AppendText("Log/" + DateTime.Now.ToString("yyyy-MM-dd") + ".txt");
+            //sw.WriteLine("\n" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + " " + Message + "\n");
+            //sw.Close();
         }
     }
 }