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 { /// /// EPPlusToExcel /// /// 数据集合 /// Excel文件名 public static void Out_CeLiang(List _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 _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(); } } /// /// ExportExcel(使用NPOI的方式) /// /// 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; } /// /// WriterExcel /// /// /// /// 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()); } } } }