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;
        /// <summary>
        /// 导出Excel,返回文件在客户端的路径
        /// </summary>
        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;
        }

        /// <summary>
        /// 导出Excel,返回文件在客户端的路径
        /// </summary>
        public string ExportExcel_Normal(DataTable firstsdt, DataTable dt, string FolderPath, string FileName, string Type, int PageSize, List<CheckBox> 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;
        }

        /// <summary>
        /// 晶源客户特殊方案
        /// </summary>
        public string JINYUAN(DataTable firstsdt, DataTable dt, string FolderPath, string FileName, string Type, int PageSize, List<CheckBox> 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;
        }

        /// <summary>
        /// 利普芯客户特殊方案
        /// </summary>
        public string LIPIUXIN(DataTable firstsdt, DataTable dt, string FolderPath, string FileName, string Type, int PageSize, List<CheckBox> 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;
        }

        /// <summary>
        /// 导入Excel
        /// </summary>
        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;
        /// <summary>
        /// 将DataTable形式的数据转成Excel格式的,然后用字节流的形式写入文件
        /// </summary>
        /// <param name="DataTable"></param>
        /// <returns></returns>
        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;
        }

        /// <summary>
        /// 将DataTable形式的数据转成Excel格式的,然后用字节流的形式写入文件
        /// </summary>
        /// <param name="DataTable"></param>
        /// <returns></returns>
        public MemoryStream DataTableToExcel_Normal(DataTable FirstDT, DataTable DataTable, string Type, string Inoutno, int PageSize, List<CheckBox> conditionbox)
        {
            string 小计 = "";
            string 总计 = "";
            string 片 = "";
            string companyname = "";
            Dictionary<int, double> PercentSum = new Dictionary<int, double>();
            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<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 = "";
            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<string> NotShowColumn = new List<string>();
            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<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_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;
        }


        /// <summary>
        /// 将DataTable形式的数据转成Excel格式的,然后用字节流的形式写入文件
        /// </summary>
        /// <param name="DataTable"></param>
        /// <returns></returns>
        private MemoryStream DataTableToExcel_JINYUAN(DataTable FirstDT, DataTable DataTable, string Type, string Inoutno, int PageSize, List<CheckBox> 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<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("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<string> First_WID = new ArrayList<string>();
                    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;
        }

        /// <summary>
        /// 将DataTable形式的数据转成Excel格式的,然后用字节流的形式写入文件
        /// </summary>
        /// <param name="DataTable"></param>
        /// <returns></returns>
        private MemoryStream DataTableToExcel_LIPUXIN(DataTable FirstDT, DataTable DataTable, string Type, string Inoutno, int PageSize, List<CheckBox> 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<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 = "";
            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<string> NotShowColumn = new List<string>();
            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<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_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())))
                        {
                            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;
        }
    }
}