|
|
@@ -17,11 +17,11 @@ namespace UAS_LabelMachine
|
|
|
/// <summary>
|
|
|
/// 导出Excel,返回文件在客户端的路径
|
|
|
/// </summary>
|
|
|
- public string ExportExcel(DataTable dt, string FolderPath, string FileName, string Type, int PageSize)
|
|
|
+ public string ExportExcel(DataTable firstsdt, DataTable dt, string FolderPath, string FileName, string Type, int PageSize, bool PrintWID)
|
|
|
{
|
|
|
//创建一个内存流,用来接收转换成Excel的内容
|
|
|
MemoryStream ms;
|
|
|
- ms = DataTableToExcel1(dt, Type, PageSize);
|
|
|
+ ms = DataTableToExcel1(firstsdt, dt, Type, PageSize, PrintWID);
|
|
|
//以系统当前时间命名文件,FileMode.Create表示创建文件,FileAccess.Write表示拥有写的权限
|
|
|
string filePath = @FolderPath + "\\" + FileName + ".xls";
|
|
|
FileStream fs = new FileStream(filePath, FileMode.Create, FileAccess.Write);
|
|
|
@@ -249,14 +249,14 @@ namespace UAS_LabelMachine
|
|
|
/// </summary>
|
|
|
/// <param name="DataTable"></param>
|
|
|
/// <returns></returns>
|
|
|
- public MemoryStream DataTableToExcel1(DataTable DataTable, string Type, int PageSize)
|
|
|
+ public MemoryStream DataTableToExcel1(DataTable FirstDT, DataTable DataTable, string Type, int PageSize, bool PrintWID)
|
|
|
{
|
|
|
//创建内存流
|
|
|
MemoryStream ms = new MemoryStream();
|
|
|
//创建一个Book,相当于一个Excel文件
|
|
|
HSSFWorkbook book = new HSSFWorkbook();
|
|
|
//Excel中的Sheet
|
|
|
- ISheet sheet = book.CreateSheet("sheet1");
|
|
|
+ ISheet sheet = book.CreateSheet("分页");
|
|
|
//获取行数量和列数量
|
|
|
int rowNum = DataTable.Rows.Count;
|
|
|
int columnNum = DataTable.Columns.Count;
|
|
|
@@ -333,13 +333,57 @@ namespace UAS_LabelMachine
|
|
|
switch (Type)
|
|
|
{
|
|
|
case "FixRow":
|
|
|
+
|
|
|
+ BaseUtil.CleanDataTableData(FirstDT);
|
|
|
+
|
|
|
+ //首页参数拼接
|
|
|
+ string First_OrderCode = "";
|
|
|
+ string First_Prspec = "";
|
|
|
+ string First_Batch = "";
|
|
|
+ string First_WID = "";
|
|
|
for (int i = 0; i < rowNum; i++)
|
|
|
{
|
|
|
IRow row1 = sheet.CreateRow(PaintIndex);
|
|
|
PaintIndex = PaintIndex + 1;
|
|
|
row1.HeightInPoints = 20;
|
|
|
+ //不包含的订单号
|
|
|
+ if (!First_OrderCode.Contains(DataTable.Rows[i]["pd_ordercode"].ToString()))
|
|
|
+ {
|
|
|
+ First_OrderCode += DataTable.Rows[i]["pd_ordercode"].ToString() + " ";
|
|
|
+ }
|
|
|
+ //不包含的物料型号
|
|
|
+ if (!First_Prspec.Contains(DataTable.Rows[i]["pr_spec"].ToString()))
|
|
|
+ {
|
|
|
+ First_Prspec += DataTable.Rows[i]["pr_spec"].ToString() + " ";
|
|
|
+ }
|
|
|
+ //不包含扩撒批号
|
|
|
+ if (!First_Batch.Contains(DataTable.Rows[i]["扩散批号"].ToString()))
|
|
|
+ {
|
|
|
+ First_Batch += DataTable.Rows[i]["扩散批号"].ToString() + " ";
|
|
|
+ }
|
|
|
+ //不包含Wafer_id
|
|
|
+ if (!First_WID.Contains(DataTable.Rows[i]["Wafer_ID"].ToString()))
|
|
|
+ {
|
|
|
+ First_WID += DataTable.Rows[i]["Wafer_ID"].ToString() + " ";
|
|
|
+ }
|
|
|
if (i / PageSize >= 1 && i % PageSize == 0)
|
|
|
{
|
|
|
+ DataRow dr = FirstDT.NewRow();
|
|
|
+ dr["型号"] = DataTable.Rows[i]["型号"].ToString();
|
|
|
+ dr["出货单号"] = DataTable.Rows[i]["出货单号"].ToString();
|
|
|
+ dr["客户"] = DataTable.Rows[i]["客户"].ToString();
|
|
|
+ dr["销售日期"] = DataTable.Rows[i]["销售日期"].ToString();
|
|
|
+ dr["pd_ordercode"] = First_OrderCode;
|
|
|
+ dr["pr_spec"] = First_Prspec;
|
|
|
+ dr["ch_splitbatch"] = First_Batch;
|
|
|
+ dr["ch_waterid"] = First_WID;
|
|
|
+ dr["num"] = PageSize;
|
|
|
+ dr["io_qty"] = sumCount;
|
|
|
+ FirstDT.Rows.Add(dr);
|
|
|
+ First_OrderCode = "";
|
|
|
+ First_Prspec = "";
|
|
|
+ First_Batch = "";
|
|
|
+ First_WID = "";
|
|
|
for (int j = 0; j < columnNum - 4; j++)
|
|
|
{
|
|
|
if (j == 0)
|
|
|
@@ -424,7 +468,8 @@ namespace UAS_LabelMachine
|
|
|
}
|
|
|
else
|
|
|
row1.Cells[j - 4].SetCellValue(DataTable.Columns[j].ColumnName);
|
|
|
- if (DataTable.Columns[j].ColumnName.ToLower().Contains("chw_itemname"))
|
|
|
+ //如果chw_itemname1的值为空,则值为100和0,其中一列不显示,不显示
|
|
|
+ if (DataTable.Columns[j].ColumnName.ToLower().Contains("chw_itemname") || DataTable.Columns[j].ColumnName.ToLower().Contains("pr_spec") || DataTable.Columns[j].ColumnName.ToLower().Contains("pd_ordercode"))
|
|
|
{
|
|
|
sheet.SetColumnHidden(j - 4, true);
|
|
|
}
|
|
|
@@ -452,6 +497,18 @@ namespace UAS_LabelMachine
|
|
|
}
|
|
|
if (i == rowNum - 1)
|
|
|
{
|
|
|
+ DataRow dr = FirstDT.NewRow();
|
|
|
+ dr["型号"] = DataTable.Rows[i]["型号"].ToString();
|
|
|
+ dr["出货单号"] = DataTable.Rows[i]["出货单号"].ToString();
|
|
|
+ dr["客户"] = DataTable.Rows[i]["客户"].ToString();
|
|
|
+ dr["销售日期"] = DataTable.Rows[i]["销售日期"].ToString();
|
|
|
+ dr["pd_ordercode"] = First_OrderCode;
|
|
|
+ dr["pr_spec"] = First_Prspec;
|
|
|
+ dr["ch_splitbatch"] = First_Batch;
|
|
|
+ dr["ch_waterid"] = First_WID;
|
|
|
+ dr["num"] =(i% PageSize)+1;
|
|
|
+ dr["io_qty"] = sumCount;
|
|
|
+ FirstDT.Rows.Add(dr);
|
|
|
row1 = sheet.CreateRow(PaintIndex);
|
|
|
PaintIndex = PaintIndex + 1;
|
|
|
for (int j = 0; j < columnNum - 4; j++)
|
|
|
@@ -609,7 +666,7 @@ namespace UAS_LabelMachine
|
|
|
}
|
|
|
else
|
|
|
row1.Cells[j - 4].SetCellValue(DataTable.Columns[j].ColumnName);
|
|
|
- if (DataTable.Columns[j].ColumnName.ToLower().Contains("chw_itemname"))
|
|
|
+ if (DataTable.Columns[j].ColumnName.ToLower().Contains("chw_itemname") || DataTable.Columns[j].ColumnName.ToLower().Contains("pr_spec") || DataTable.Columns[j].ColumnName.ToLower().Contains("pd_ordercode"))
|
|
|
{
|
|
|
sheet.SetColumnHidden(j - 4, true);
|
|
|
}
|
|
|
@@ -795,7 +852,7 @@ namespace UAS_LabelMachine
|
|
|
}
|
|
|
else
|
|
|
row1.Cells[j - 4].SetCellValue(DataTable.Columns[j].ColumnName);
|
|
|
- if (DataTable.Columns[j].ColumnName.ToLower().Contains("chw_itemname"))
|
|
|
+ if (DataTable.Columns[j].ColumnName.ToLower().Contains("chw_itemname") || DataTable.Columns[j].ColumnName.ToLower().Contains("pr_spec") || DataTable.Columns[j].ColumnName.ToLower().Contains("pd_ordercode"))
|
|
|
{
|
|
|
sheet.SetColumnHidden(j - 4, true);
|
|
|
}
|
|
|
@@ -888,9 +945,166 @@ namespace UAS_LabelMachine
|
|
|
default:
|
|
|
break;
|
|
|
}
|
|
|
+ //填充首页
|
|
|
+ sumCount = 0;
|
|
|
+ totalCount = 0;
|
|
|
+ PaintIndex = 1;
|
|
|
+ ISheet sheet2 = book.CreateSheet("首页");
|
|
|
+ row = sheet2.CreateRow(0);
|
|
|
+ row.CreateCell(0);
|
|
|
+ row.Cells[0].SetCellValue(" 深爱半导体有限公司芯片出货清单");
|
|
|
+ row.GetCell(0).CellStyle = style;
|
|
|
+ rowNum = FirstDT.Rows.Count;
|
|
|
+ columnNum = FirstDT.Columns.Count;
|
|
|
+
|
|
|
+ for (int i = 0; i < columnNum; i++)
|
|
|
+ {
|
|
|
+ if (FirstDT.Columns[i].ColumnName.ToLower().Contains("pd_ordercode"))
|
|
|
+ {
|
|
|
+ FirstDT.Columns[i].ColumnName = "订单号";
|
|
|
+ }
|
|
|
+ if (FirstDT.Columns[i].ColumnName.ToLower().Contains("pr_spec"))
|
|
|
+ {
|
|
|
+ FirstDT.Columns[i].ColumnName = "产品型号";
|
|
|
+ }
|
|
|
+ if (FirstDT.Columns[i].ColumnName.ToLower().Contains("ch_splitbatch"))
|
|
|
+ {
|
|
|
+ FirstDT.Columns[i].ColumnName = "批号";
|
|
|
+ }
|
|
|
+ if (FirstDT.Columns[i].ColumnName.ToLower().Contains("ch_waterid"))
|
|
|
+ {
|
|
|
+ FirstDT.Columns[i].ColumnName = "片号";
|
|
|
+ }
|
|
|
+ if (FirstDT.Columns[i].ColumnName.ToLower().Contains("num"))
|
|
|
+ {
|
|
|
+ FirstDT.Columns[i].ColumnName = "片数";
|
|
|
+ }
|
|
|
+ if (FirstDT.Columns[i].ColumnName.ToLower().Contains("io_qty"))
|
|
|
+ {
|
|
|
+ FirstDT.Columns[i].ColumnName = "管芯数";
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ for (int i = 0; i < rowNum; i++)
|
|
|
+ {
|
|
|
+ IRow row1 = sheet2.CreateRow(PaintIndex);
|
|
|
+ PaintIndex = PaintIndex + 1;
|
|
|
+ row1.HeightInPoints = 20;
|
|
|
+ //只需要绘制一行
|
|
|
+ if (i == 0)
|
|
|
+ {
|
|
|
+ for (int j = 0; j < columnNum - 3; j++)
|
|
|
+ {
|
|
|
+ if (j == 0)
|
|
|
+ {
|
|
|
+ row1.CreateCell(j);
|
|
|
+ row1.Cells[j].SetCellValue(FirstDT.Rows[i]["客户"].ToString());
|
|
|
+ }
|
|
|
+ else if (j == columnNum - 4)
|
|
|
+ {
|
|
|
+ row1.CreateCell(j);
|
|
|
+ row1.Cells[j].SetCellValue(FirstDT.Rows[i]["出货单号"].ToString());
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ row1.CreateCell(j);
|
|
|
+ }
|
|
|
+ row1.GetCell(j).CellStyle = style;
|
|
|
+ }
|
|
|
+ row1 = sheet2.CreateRow(PaintIndex);
|
|
|
+ PaintIndex = PaintIndex + 1;
|
|
|
+ //第二行添加型号
|
|
|
+ for (int j = 0; j < columnNum - 3; j++)
|
|
|
+ {
|
|
|
+ if (j == 0)
|
|
|
+ {
|
|
|
+ row1.CreateCell(j);
|
|
|
+ row1.Cells[j].SetCellValue(FirstDT.Rows[i]["型号"].ToString());
|
|
|
+ }
|
|
|
+ else if (j == columnNum - 4)
|
|
|
+ {
|
|
|
+ row1.CreateCell(j);
|
|
|
+ row1.Cells[j].SetCellValue(FirstDT.Rows[i]["销售日期"].ToString());
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ row1.CreateCell(j);
|
|
|
+ }
|
|
|
+ row1.GetCell(j).CellStyle = style;
|
|
|
+ }
|
|
|
+ row1 = sheet2.CreateRow(PaintIndex);
|
|
|
+ PaintIndex = PaintIndex + 1;
|
|
|
+ //添加列名
|
|
|
+ for (int j = 4; j < columnNum; j++)
|
|
|
+ {
|
|
|
+ row1.CreateCell(j - 4);
|
|
|
+ row1.Cells[j - 4].CellStyle = styleborder;
|
|
|
+ row1.Cells[j - 4].SetCellValue(FirstDT.Columns[j].ColumnName);
|
|
|
+ }
|
|
|
+ row1 = sheet2.CreateRow(PaintIndex);
|
|
|
+ PaintIndex = PaintIndex + 1;
|
|
|
+ }
|
|
|
+ //添加数据内容
|
|
|
+ for (int j = 4; j < columnNum; j++)
|
|
|
+ {
|
|
|
+ string Data = FirstDT.Rows[i][j].ToString();
|
|
|
+ row1.CreateCell(j - 4);
|
|
|
+ row1.Cells[j - 4].SetCellValue(Data);
|
|
|
+ row1.GetCell(j - 4).CellStyle = styleborder;
|
|
|
+ if (FirstDT.Columns[j].ColumnName == "片数")
|
|
|
+ {
|
|
|
+ sumCount += int.Parse(Data);
|
|
|
+ }
|
|
|
+ if (FirstDT.Columns[j].ColumnName == "管芯数")
|
|
|
+ {
|
|
|
+ totalCount += int.Parse(Data);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //添加总计行
|
|
|
+ if (i == rowNum - 1)
|
|
|
+ {
|
|
|
+ row1 = sheet2.CreateRow(PaintIndex);
|
|
|
+ PaintIndex = PaintIndex + 1;
|
|
|
+ for (int j = 0; j < columnNum - 4; j++)
|
|
|
+ {
|
|
|
+ if (j == 0)
|
|
|
+ {
|
|
|
+ row1.CreateCell(j);
|
|
|
+ row1.Cells[j].CellStyle = styleborder;
|
|
|
+ row1.Cells[j].SetCellValue("总计");
|
|
|
+ }
|
|
|
+ else if (j == columnNum - 6)
|
|
|
+ {
|
|
|
+ row1.CreateCell(j);
|
|
|
+ row1.Cells[j].CellStyle = styleborder;
|
|
|
+ row1.Cells[j].SetCellValue(sumCount);
|
|
|
+ }
|
|
|
+ else if (j == columnNum - 5)
|
|
|
+ {
|
|
|
+ row1.CreateCell(j);
|
|
|
+ row1.Cells[j].CellStyle = styleborder;
|
|
|
+ row1.Cells[j].SetCellValue(totalCount);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ row1.CreateCell(j);
|
|
|
+ row1.Cells[j].CellStyle = styleborder;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ for (int i = 0; i < sheet2.LastRowNum; i++)
|
|
|
+ {
|
|
|
+ if (i != 0)
|
|
|
+ {
|
|
|
+ sheet2.AutoSizeColumn(i);
|
|
|
+ sheet2.SetColumnWidth(i, sheet2.GetColumnWidth(i) + 1000);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
//将book的内容写入内存流中返回
|
|
|
book.Write(ms);
|
|
|
return ms;
|
|
|
}
|
|
|
}
|
|
|
-}
|
|
|
+}
|