260 lines
12 KiB
C#
260 lines
12 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Data;
|
|
using System.IO;
|
|
using System.Windows.Forms;
|
|
using NPOI.HSSF.UserModel;
|
|
using NPOI.SS.UserModel;
|
|
using OfficeOpenXml;
|
|
|
|
namespace JY.Utility
|
|
{
|
|
public class OpenOfficeXML
|
|
{
|
|
/// <summary>
|
|
/// EPPlusToExcel
|
|
/// </summary>
|
|
/// <param name="_D">数据集合</param>
|
|
/// <param name="strFileName">Excel文件名</param>
|
|
public static void Out_CeLiang(List<DataList> _D, string strFileName)
|
|
{
|
|
using (OfficeOpenXml.ExcelPackage package = new OfficeOpenXml.ExcelPackage(new FileInfo(strFileName)))
|
|
{
|
|
string TableName = DateTime.Now.ToString("yyyy-MM-dd");
|
|
ExcelWorksheet worksheet = package.Workbook.Worksheets.Add(TableName);
|
|
#region 绘制列头
|
|
worksheet.Cells[1, 1].Value = "不良项目";
|
|
worksheet.Cells[1, 2].Value = "数量";
|
|
//worksheet.Cells[1, 3].Value = "规格3";
|
|
//worksheet.Cells[1, 4, 1, 5].Value = "合并单元格";
|
|
//worksheet.Cells[1, 4, 1, 5].Merge = true;
|
|
#endregion
|
|
|
|
#region 数据行
|
|
int i = 1;
|
|
foreach (DataList Item in _D)
|
|
{
|
|
worksheet.Cells[i + 1, 1].Value = Item.G1;
|
|
worksheet.Cells[i + 1, 2].Value = Item.G2;
|
|
//worksheet.Cells[i + 1, 3].Value = Item.G3;
|
|
//worksheet.Cells[i + 1, 4, i + 1, 5].Value = Item.G4;
|
|
//worksheet.Cells[i + 1, 4, i + 1, 5].Merge = true;
|
|
i++;
|
|
}
|
|
#endregion
|
|
|
|
if (false == System.IO.Directory.Exists(System.AppDomain.CurrentDomain.BaseDirectory + @"Excel\"))
|
|
System.IO.Directory.CreateDirectory(System.AppDomain.CurrentDomain.BaseDirectory + @"Excel\");
|
|
package.Save();
|
|
}
|
|
}
|
|
|
|
public static void Out_TimeCeLiang(List<DataList> _D, string strFileName)
|
|
{
|
|
using (OfficeOpenXml.ExcelPackage package = new OfficeOpenXml.ExcelPackage(new FileInfo(strFileName)))
|
|
{
|
|
string TableName = DateTime.Now.ToString("yyyy-MM-dd");
|
|
ExcelWorksheet worksheet = package.Workbook.Worksheets.Add(TableName);
|
|
#region 绘制列头
|
|
worksheet.Cells[1, 1].Value = "不良项目";
|
|
worksheet.Cells[1, 2].Value = "数量";
|
|
//worksheet.Cells[1, 3].Value = "规格3";
|
|
//worksheet.Cells[1, 4, 1, 5].Value = "合并单元格";
|
|
//worksheet.Cells[1, 4, 1, 5].Merge = true;
|
|
#endregion
|
|
|
|
#region 数据行
|
|
int i = 1;
|
|
foreach (DataList Item in _D)
|
|
{
|
|
worksheet.Cells[i + 1, 1].Value = Item.G1;
|
|
worksheet.Cells[i + 1, 2].Value = Item.G2;
|
|
//worksheet.Cells[i + 1, 3].Value = Item.G3;
|
|
//worksheet.Cells[i + 1, 4, i + 1, 5].Value = Item.G4;
|
|
//worksheet.Cells[i + 1, 4, i + 1, 5].Merge = true;
|
|
i++;
|
|
}
|
|
#endregion
|
|
|
|
if (false == System.IO.Directory.Exists(System.AppDomain.CurrentDomain.BaseDirectory + @"Excel\"))
|
|
System.IO.Directory.CreateDirectory(System.AppDomain.CurrentDomain.BaseDirectory + @"Excel\");
|
|
package.Save();
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// ExportExcel(使用NPOI的方式)
|
|
/// </summary>
|
|
/// <param name="DT"></param>
|
|
public static int ExportExcel(DataTable DT, string selectDate, ref string strErr)
|
|
{
|
|
strErr = "";
|
|
try
|
|
{
|
|
if (DT == null & DT.Rows.Count <= 0)
|
|
{
|
|
strErr = "请先查询统计数据后再执行导出操作!";
|
|
return 1;
|
|
}
|
|
|
|
string strFilePath = "";
|
|
HSSFWorkbook hssfworkbookDown;
|
|
string modelExlPath = Application.StartupPath + "\\EmailTemplate\\Model.xls";
|
|
if (File.Exists(modelExlPath) == false) //模板不存在
|
|
{
|
|
strErr = "程序根目录下EmailTemplate文件夹内找不到导出模板文件!";
|
|
return 2;
|
|
}
|
|
|
|
using (FileStream file = new FileStream(modelExlPath, FileMode.Open, FileAccess.Read))
|
|
{
|
|
hssfworkbookDown = new HSSFWorkbook(file);
|
|
file.Close();
|
|
}
|
|
|
|
WriterExcel(hssfworkbookDown, 0, DT);
|
|
string filename = selectDate + ".xls";
|
|
strFilePath = Application.StartupPath + "\\Temp\\TEEnrollmentForm";
|
|
if (Directory.Exists(strFilePath) == false)
|
|
{
|
|
Directory.CreateDirectory(strFilePath);
|
|
}
|
|
|
|
strFilePath = strFilePath + "\\\\" + filename;
|
|
FileStream files = new FileStream(strFilePath, FileMode.Create);
|
|
hssfworkbookDown.Write(files);
|
|
files.Close();
|
|
if (File.Exists(strFilePath) == false) //附件生成失败
|
|
{
|
|
strErr = "生成EXCEL文件失败";
|
|
return 3;
|
|
}
|
|
strErr = strFilePath;
|
|
return 4;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
strErr = ex.Message;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
/// <summary>
|
|
/// WriterExcel
|
|
/// </summary>
|
|
/// <param name="hssfworkbookDown"></param>
|
|
/// <param name="sheetIndex"></param>
|
|
/// <param name="DT"></param>
|
|
public static void WriterExcel(HSSFWorkbook hssfworkbookDown, int sheetIndex, DataTable DT)
|
|
{
|
|
try
|
|
{
|
|
|
|
#region 设置单元格样式
|
|
|
|
//字体
|
|
HSSFFont fontS9 = (HSSFFont)hssfworkbookDown.CreateFont();
|
|
fontS9.FontName = "Arial";
|
|
fontS9.FontHeightInPoints = 10;
|
|
fontS9.Boldweight = (short)NPOI.SS.UserModel.FontBoldWeight.Normal;
|
|
//表格
|
|
ICellStyle TableS9 = (ICellStyle)hssfworkbookDown.CreateCellStyle();
|
|
TableS9.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin;
|
|
TableS9.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin;
|
|
TableS9.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin;
|
|
TableS9.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin;
|
|
TableS9.WrapText = true;
|
|
TableS9.SetFont(fontS9);
|
|
|
|
#endregion
|
|
|
|
HSSFSheet sheet = (HSSFSheet)hssfworkbookDown.GetSheetAt(sheetIndex);
|
|
hssfworkbookDown.SetSheetHidden(sheetIndex, false);
|
|
hssfworkbookDown.SetActiveSheet(sheetIndex);
|
|
|
|
int n = 2; //因为模板有表头,所以从第2行开始写
|
|
for (int j = 0; j < DT.Columns.Count; j++)
|
|
{
|
|
HSSFRow dataRow = (HSSFRow)sheet.CreateRow(j + n);
|
|
//string cv = DT.Columns[j].Caption;
|
|
//string strDepID = DT.Rows[j]["序号"].ToString().Trim();
|
|
//dataRow.CreateCell(0);
|
|
//dataRow.Cells[0].SetCellValue(strDepID == "" ? DT.Rows[j]["日期"].ToString() : "");
|
|
|
|
dataRow.CreateCell(0);
|
|
dataRow.Cells[0].SetCellValue(DT.Rows[j]["日期"].ToString());
|
|
dataRow.CreateCell(1);
|
|
dataRow.Cells[1].SetCellValue(DT.Rows[j]["班次"].ToString());
|
|
dataRow.CreateCell(2);
|
|
dataRow.Cells[2].SetCellValue(DT.Rows[j]["班别"].ToString());
|
|
dataRow.CreateCell(3);
|
|
dataRow.Cells[3].SetCellValue(DT.Rows[j]["工单号"].ToString());
|
|
dataRow.CreateCell(4);
|
|
dataRow.Cells[4].SetCellValue(DT.Rows[j]["客户名称"].ToString());
|
|
dataRow.CreateCell(5);
|
|
dataRow.Cells[5].SetCellValue(DT.Rows[j]["投入总数"].ToString());
|
|
dataRow.CreateCell(6);
|
|
dataRow.Cells[6].SetCellValue(DT.Rows[j]["良品总数"].ToString());
|
|
dataRow.CreateCell(7);
|
|
dataRow.Cells[7].SetCellValue(DT.Rows[j]["不良总数"].ToString());
|
|
dataRow.CreateCell(8);
|
|
dataRow.Cells[8].SetCellValue(DT.Rows[j]["不良率"].ToString());
|
|
dataRow.CreateCell(9);
|
|
dataRow.Cells[9].SetCellValue(DT.Rows[j]["质量缺陷"].ToString());
|
|
dataRow.CreateCell(10);
|
|
dataRow.Cells[10].SetCellValue(DT.Rows[j]["非质量缺陷"].ToString());
|
|
dataRow.CreateCell(11);
|
|
dataRow.Cells[11].SetCellValue(DT.Rows[j]["其他不良"].ToString());
|
|
dataRow.CreateCell(12);
|
|
dataRow.Cells[12].SetCellValue(DT.Rows[j]["侧面不良"].ToString());
|
|
dataRow.CreateCell(13);
|
|
dataRow.Cells[13].SetCellValue(DT.Rows[j]["正极不良"].ToString());
|
|
dataRow.CreateCell(14);
|
|
dataRow.Cells[14].SetCellValue(DT.Rows[j]["负极不良"].ToString());
|
|
dataRow.CreateCell(15);
|
|
dataRow.Cells[15].SetCellValue(DT.Rows[j]["重合不良"].ToString());
|
|
dataRow.CreateCell(16);
|
|
dataRow.Cells[16].SetCellValue(DT.Rows[j]["喷码不良"].ToString());
|
|
dataRow.CreateCell(17);
|
|
dataRow.Cells[17].SetCellValue(DT.Rows[j]["侧面凹坑鼓包、变形"].ToString());
|
|
dataRow.CreateCell(18);
|
|
dataRow.Cells[18].SetCellValue(DT.Rows[j]["侧面脏污漏液"].ToString());
|
|
dataRow.CreateCell(19);
|
|
dataRow.Cells[19].SetCellValue(DT.Rows[j]["侧面凸点、划痕、破皮、膜内异物"].ToString());
|
|
dataRow.CreateCell(20);
|
|
dataRow.Cells[20].SetCellValue(DT.Rows[j]["正极面垫不良多放、漏放"].ToString());
|
|
dataRow.CreateCell(21);
|
|
dataRow.Cells[21].SetCellValue(DT.Rows[j]["正极套膜不良含热缩不良、破损、褶皱、面垫翘起"].ToString());
|
|
dataRow.CreateCell(22);
|
|
dataRow.Cells[22].SetCellValue(DT.Rows[j]["正极套膜脏污"].ToString());
|
|
dataRow.CreateCell(23);
|
|
dataRow.Cells[23].SetCellValue(DT.Rows[j]["盖帽不良含漏液、盖帽脏污氧化生锈,划痕,变形"].ToString());
|
|
dataRow.CreateCell(24);
|
|
dataRow.Cells[24].SetCellValue(DT.Rows[j]["负极套膜尺寸不良"].ToString());
|
|
dataRow.CreateCell(25);
|
|
dataRow.Cells[25].SetCellValue(DT.Rows[j]["负极套膜不良含套膜褶皱变形、破损、褶皱"].ToString());
|
|
dataRow.CreateCell(26);
|
|
dataRow.Cells[26].SetCellValue(DT.Rows[j]["负极套膜脏污"].ToString());
|
|
dataRow.CreateCell(27);
|
|
dataRow.Cells[27].SetCellValue(DT.Rows[j]["底部不良含漏液、脏污、氧化生锈、划痕、变形"].ToString());
|
|
dataRow.CreateCell(28);
|
|
dataRow.Cells[28].SetCellValue(DT.Rows[j]["操作员"].ToString());
|
|
|
|
|
|
//for (int i = 0; i <= 2; i++) //循环列,添加样式
|
|
//{
|
|
// dataRow.Cells[i].CellStyle = TableS9;
|
|
//}
|
|
}
|
|
|
|
//设定第一行,第一列的单元格选中
|
|
sheet.SetActiveCell(0, 0);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
//WriteLog(ex.ToString());
|
|
}
|
|
}
|
|
}
|
|
}
|