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