| | |
| | | using System.Collections; |
| | | using System.Data; |
| | | using System.Text; |
| | | using System.Timers; |
| | | using Masuit.Tools; |
| | | using NPOI.HSSF.UserModel; |
| | | using NPOI.HSSF.Util; |
| | | using NPOI.SS.Formula.Functions; |
| | | using NPOI.SS.UserModel; |
| | | using NPOI.SS.Util; |
| | | using NPOI.XSSF.UserModel; |
| | | |
| | | |
| | | namespace Gs.Toolbox; |
| | | |
| | |
| | | arrColWidth[item.Ordinal] = Encoding.GetEncoding(936) |
| | | .GetBytes(item.ColumnName).Length; |
| | | for (var i = 0; i < dtSource.Rows.Count; i++) |
| | | for (var j = 0; j < dtSource.Columns.Count; j++) |
| | | { |
| | | var intTemp = Encoding.GetEncoding(936) |
| | | .GetBytes(dtSource.Rows[i][j].ToString()).Length; |
| | | if (intTemp > arrColWidth[j]) arrColWidth[j] = intTemp; |
| | | } |
| | | for (var j = 0; j < dtSource.Columns.Count; j++) |
| | | { |
| | | var intTemp = Encoding.GetEncoding(936) |
| | | .GetBytes(dtSource.Rows[i][j].ToString()).Length; |
| | | if (intTemp > arrColWidth[j]) arrColWidth[j] = intTemp; |
| | | } |
| | | |
| | | var rowIndex = 0; |
| | | foreach (DataRow row in dtSource.Rows) |
| | |
| | | .GetBytes(item.ColumnName).Length; |
| | | if (fixW <= 0) |
| | | for (var i = 0; i < dtSource.Rows.Count; i++) |
| | | for (var j = 0; j < dtSource.Columns.Count; j++) |
| | | { |
| | | var intTemp = Encoding.GetEncoding(936) |
| | | .GetBytes(dtSource.Rows[i][j].ToString()).Length; |
| | | if (intTemp > arrColWidth[j]) arrColWidth[j] = intTemp; |
| | | } |
| | | for (var j = 0; j < dtSource.Columns.Count; j++) |
| | | { |
| | | var intTemp = Encoding.GetEncoding(936) |
| | | .GetBytes(dtSource.Rows[i][j].ToString()).Length; |
| | | if (intTemp > arrColWidth[j]) arrColWidth[j] = intTemp; |
| | | } |
| | | |
| | | var cusRow = sheet.CreateRow(0); |
| | | var _rr = 0; |
| | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// |
| | | /// </summary> |
| | | /// <param name="workbook"></param> |
| | | /// <param name="fontSize">字体大小</param> |
| | |
| | | /// <param name="isCenter">是否中间</param> |
| | | /// <param name="border">是否边框</param> |
| | | /// <returns></returns> |
| | | private static ICellStyle getStyle(HSSFWorkbook workbook, |
| | | double fontSize = 11, bool isBold = false, bool isCenter = false, |
| | | bool border = true) |
| | | private static ICellStyle getStyle(HSSFWorkbook workbook, double fontSize = 11, bool isBold = false, bool isCenter = false, bool border = true) |
| | | { |
| | | var font = workbook.CreateFont(); |
| | | IFont font = workbook.CreateFont(); |
| | | font.FontName = "宋体"; |
| | | font.FontHeightInPoints = fontSize; |
| | | if (isBold) |
| | | if (isBold == true) |
| | | font.Boldweight = (short)FontBoldWeight.Bold; |
| | | // 创建单元格样式 - 带边框和指定字体 |
| | | var style = workbook.CreateCellStyle(); |
| | | ICellStyle style = workbook.CreateCellStyle(); |
| | | style.SetFont(font); |
| | | if (border) |
| | | if (border == true) |
| | | { |
| | | style.BorderTop = BorderStyle.Thin; |
| | | style.BorderBottom = BorderStyle.Thin; |
| | | style.BorderLeft = BorderStyle.Thin; |
| | | style.BorderRight = BorderStyle.Thin; |
| | | } |
| | | |
| | | if (isCenter) |
| | | if (isCenter == true) |
| | | style.Alignment = HorizontalAlignment.Center; |
| | | style.VerticalAlignment = VerticalAlignment.Center; |
| | | return style; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 设置单元格的值 |
| | | /// 设置单元格的值 |
| | | /// </summary> |
| | | /// <param name="sheet"></param> |
| | | /// <param name="rowIdx"></param> |
| | | /// <param name="colIdx"></param> |
| | | /// <param name="val"></param> |
| | | private static void setCellVal(ISheet sheet, int rowIdx, int colIdx, |
| | | string val) |
| | | private static void setCellVal(ISheet sheet, int rowIdx, int colIdx, string val) |
| | | { |
| | | var row = sheet.GetRow(rowIdx) ?? sheet.CreateRow(rowIdx); |
| | | var cell = row.GetCell(colIdx) ?? row.CreateCell(colIdx); |
| | | IRow row = sheet.GetRow(rowIdx) ?? sheet.CreateRow(rowIdx); |
| | | ICell cell = row.GetCell(colIdx) ?? row.CreateCell(colIdx); |
| | | cell.SetCellValue(val); // 可以设置字符串、数字等类型的数据 |
| | | } |
| | | |
| | | } |
| | | /// <summary> |
| | | /// 生成首检 |
| | | /// 生成首检 |
| | | /// </summary> |
| | | /// <param name="dtSource"></param> |
| | | public static void ExportShouJian(DataSet dtSource, string strFileName) |
| | | { |
| | | //行高 |
| | | var rowHeight = 25; |
| | | int rowHeight = 25; |
| | | //总7列 |
| | | var maxCols = 7; |
| | | int maxCols = 7; |
| | | // 创建工作簿 |
| | | var workbook = new HSSFWorkbook(); |
| | | var sheet = workbook.CreateSheet("Sheet1"); |
| | | HSSFWorkbook workbook = new HSSFWorkbook(); |
| | | ISheet sheet = workbook.CreateSheet("Sheet1"); |
| | | |
| | | // 创建单元格样式 - 带边框和指定字体 |
| | | var style = getStyle(workbook); |
| | | var styleHeader = getStyle(workbook, 20, true, true); |
| | | var style12 = getStyle(workbook, 11, false, true); |
| | | ICellStyle style = getStyle(workbook); |
| | | ICellStyle styleHeader = getStyle(workbook, 20, true, true); |
| | | ICellStyle style12 = getStyle(workbook, 11, false, true); |
| | | |
| | | // 设置列宽(6列) |
| | | sheet.SetColumnWidth(0, 4000); // 第一列稍宽 |
| | | sheet.SetColumnWidth(0, 4000); // 第一列稍宽 |
| | | sheet.SetColumnWidth(1, 3000); |
| | | sheet.SetColumnWidth(2, 3000); |
| | | sheet.SetColumnWidth(3, 3000); |
| | |
| | | sheet.SetColumnWidth(5, 3000); |
| | | sheet.SetColumnWidth(6, 3000); |
| | | // 创建20行 |
| | | for (var rowIndex = 0; rowIndex <= 6; rowIndex++) |
| | | for (int rowIndex = 0; rowIndex <= 6; rowIndex++) |
| | | { |
| | | var row = sheet.CreateRow(rowIndex); |
| | | IRow row = sheet.CreateRow(rowIndex); |
| | | // 设置行高(所有行相同高度) |
| | | row.HeightInPoints = rowHeight; |
| | | // 创建6个单元格 |
| | | for (var colIndex = 0; colIndex < maxCols; colIndex++) |
| | | for (int colIndex = 0; colIndex < maxCols; colIndex++) |
| | | { |
| | | var cell = row.CreateCell(colIndex); |
| | | ICell cell = row.CreateCell(colIndex); |
| | | if (rowIndex == 0) |
| | | cell.CellStyle = styleHeader; |
| | | else |
| | | cell.CellStyle = style; |
| | | } |
| | | } |
| | | |
| | | //这是表头 |
| | | var tb0 = dtSource.Tables[0]; |
| | | var row0 = tb0.Rows[0]; |
| | | DataTable tb0 = dtSource.Tables[0]; |
| | | DataRow row0 = tb0.Rows[0]; |
| | | // 1. 第一行列合并 |
| | | sheet.AddMergedRegion(new CellRangeAddress(0, 0, 0, 6)); |
| | | // 2. 第二行列合并 |
| | |
| | | setCellVal(sheet, 5, 5, "生产日期"); |
| | | setCellVal(sheet, 5, 6, row0["scrq"].ToString()); |
| | | string[] ary = { "项目", "技术/品质要求", "测试数据", "检验结果", "A", "B", "C" }; |
| | | for (var i = 0; i < ary.Length; i++) setCellVal(sheet, 6, i, ary[i]); |
| | | for (int i = 0; i < ary.Length; i++) |
| | | { |
| | | setCellVal(sheet, 6, i, ary[i]); |
| | | } |
| | | //从第7行开始,就是循环数据库 |
| | | var _idx = 7; |
| | | var tb1 = dtSource.Tables[1]; |
| | | var dd = ""; |
| | | var _blPscs = false; |
| | | var _blGjyzx = false; |
| | | int _idx = 7; |
| | | DataTable tb1 = dtSource.Tables[1]; |
| | | string dd = ""; |
| | | bool _blPscs = false; |
| | | bool _blGjyzx = false; |
| | | foreach (DataRow rrr in tb1.Rows) |
| | | { |
| | | //增加品水测试标题 |
| | | if (!_blPscs && rrr["项目"].ToString() == "品水测试") |
| | | if (_blPscs == false && rrr["项目"].ToString() == "品水测试") |
| | | { |
| | | var row700 = sheet.CreateRow(_idx); |
| | | for (var i = 0; i < ary.Length; i++) |
| | | IRow row700 = sheet.CreateRow(_idx); |
| | | for (int i = 0; i < ary.Length; i++) |
| | | { |
| | | var cell700 = row700.CreateCell(i); |
| | | ICell cell700 = row700.CreateCell(i); |
| | | cell700.CellStyle = style; |
| | | if (i == 0) |
| | | cell700.SetCellValue(rrr["项目"].ToString()); |
| | |
| | | if (i == 6) |
| | | cell700.SetCellValue("检验结果"); |
| | | } |
| | | |
| | | sheet.AddMergedRegion(new CellRangeAddress(_idx, _idx, 1, 2)); |
| | | sheet.AddMergedRegion(new CellRangeAddress(_idx, _idx, 3, 4)); |
| | | _idx++; |
| | | _blPscs = true; |
| | | } |
| | | |
| | | //增加标题 |
| | | if (!_blGjyzx && rrr["项目"].ToString() == "关键部件一致性") |
| | | if (_blGjyzx == false && rrr["项目"].ToString() == "关键部件一致性") |
| | | { |
| | | var row700 = sheet.CreateRow(_idx); |
| | | for (var i = 0; i < ary.Length; i++) |
| | | IRow row700 = sheet.CreateRow(_idx); |
| | | for (int i = 0; i < ary.Length; i++) |
| | | { |
| | | var cell700 = row700.CreateCell(i); |
| | | ICell cell700 = row700.CreateCell(i); |
| | | cell700.CellStyle = style; |
| | | if (i == 0) |
| | | cell700.SetCellValue(rrr["项目"].ToString()); |
| | |
| | | if (i == 6) |
| | | cell700.SetCellValue("操作"); |
| | | } |
| | | |
| | | _idx++; |
| | | _blGjyzx = true; |
| | | } |
| | | |
| | | var row7 = sheet.CreateRow(_idx); |
| | | IRow row7 = sheet.CreateRow(_idx); |
| | | row7.HeightInPoints = rowHeight; |
| | | var _tmphb = rrr["项目合并行数"].ToString(); |
| | | var _tmp = ""; |
| | | string _tmphb = rrr["项目合并行数"].ToString(); |
| | | string _tmp = ""; |
| | | if (dd == rrr["项目"].ToString()) |
| | | _tmp = ""; |
| | | else |
| | | _tmp = rrr["项目"].ToString(); |
| | | dd = rrr["项目"].ToString(); |
| | | for (var i = 0; i < ary.Length; i++) |
| | | for (int i = 0; i < ary.Length; i++) |
| | | { |
| | | var cell7 = row7.CreateCell(i); |
| | | ICell cell7 = row7.CreateCell(i); |
| | | cell7.CellStyle = style; |
| | | if (i == 0) |
| | | { |
| | | cell7.SetCellValue(_tmp); |
| | | if (!string.IsNullOrEmpty(_tmp) && int.Parse(_tmphb) > 1) |
| | | { |
| | | if (rrr["项目"].ToString() == "品水测试" || |
| | | rrr["项目"].ToString() == "关键部件一致性") |
| | | sheet.AddMergedRegion(new CellRangeAddress(_idx - 1, |
| | | _idx + int.Parse(_tmphb) - 1, 0, 0)); |
| | | if (rrr["项目"].ToString() == "品水测试" || rrr["项目"].ToString() == "关键部件一致性" ) |
| | | sheet.AddMergedRegion(new CellRangeAddress(_idx-1, _idx + int.Parse(_tmphb)-1, 0, 0)); |
| | | else |
| | | sheet.AddMergedRegion(new CellRangeAddress(_idx, |
| | | _idx + int.Parse(_tmphb) - 1, 0, 0)); |
| | | sheet.AddMergedRegion(new CellRangeAddress(_idx, _idx + int.Parse(_tmphb) - 1, 0, 0)); |
| | | } |
| | | } |
| | | else |
| | |
| | | cell7.SetCellValue(rrr["制热性能table"].ToString()); |
| | | row7.HeightInPoints = rowHeight * 5; |
| | | if (i == ary.Length - 1) |
| | | sheet.AddMergedRegion( |
| | | new CellRangeAddress(_idx, _idx, 1, 6)); |
| | | sheet.AddMergedRegion(new CellRangeAddress(_idx, _idx, 1, 6)); |
| | | break; |
| | | case "品水测试": |
| | | //度数 |
| | |
| | | cell7.SetCellValue(rrr["检验结果"].ToString()); |
| | | if (i == ary.Length - 1) |
| | | { |
| | | sheet.AddMergedRegion( |
| | | new CellRangeAddress(_idx, _idx, 1, 2)); |
| | | sheet.AddMergedRegion( |
| | | new CellRangeAddress(_idx, _idx, 3, 4)); |
| | | sheet.AddMergedRegion(new CellRangeAddress(_idx, _idx, 1, 2)); |
| | | sheet.AddMergedRegion(new CellRangeAddress(_idx, _idx, 3, 4)); |
| | | } |
| | | |
| | | break; |
| | | case "关键部件一致性": |
| | | if (i == 1) |
| | |
| | | if (i == 4) |
| | | cell7.SetCellValue(rrr["认证信息"].ToString()); |
| | | if (i == 5) |
| | | cell7.SetCellValue(rrr["是否符合CCC一致性"] |
| | | .ToString()); |
| | | cell7.SetCellValue(rrr["是否符合CCC一致性"].ToString()); |
| | | //if (i == 6) |
| | | // cell7.SetCellValue(rrr["检验结果"].ToString()); |
| | | break; |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | _idx++; |
| | | } |
| | | |
| | | var row8 = sheet.CreateRow(_idx); |
| | | IRow row8 = sheet.CreateRow(_idx); |
| | | row8.HeightInPoints = rowHeight; |
| | | for (var colIndex = 0; colIndex < maxCols; colIndex++) |
| | | for (int colIndex = 0; colIndex < maxCols; colIndex++) |
| | | { |
| | | var cell = row8.CreateCell(colIndex); |
| | | ICell cell = row8.CreateCell(colIndex); |
| | | cell.CellStyle = style12; |
| | | } |
| | | |
| | | sheet.AddMergedRegion(new CellRangeAddress(_idx, _idx, 1, 5)); |
| | | setCellVal(sheet, _idx, 0, "综合判定"); |
| | | setCellVal(sheet, _idx, 1, "合格"); |
| | | _idx++; |
| | | var row9 = sheet.CreateRow(_idx); |
| | | IRow row9 = sheet.CreateRow(_idx); |
| | | row9.HeightInPoints = rowHeight; |
| | | for (var colIndex = 0; colIndex < maxCols; colIndex++) |
| | | for (int colIndex = 0; colIndex < maxCols; colIndex++) |
| | | { |
| | | var cell = row9.CreateCell(colIndex); |
| | | ICell cell = row9.CreateCell(colIndex); |
| | | cell.CellStyle = style; |
| | | } |
| | | |
| | | sheet.AddMergedRegion(new CellRangeAddress(_idx, _idx, 1, 3)); |
| | | sheet.AddMergedRegion(new CellRangeAddress(_idx, _idx, 4, 6)); |
| | | setCellVal(sheet, _idx, 1, "工艺 已确认:合格"); |
| | |
| | | sheet.AddMergedRegion(new CellRangeAddress(_idx - 1, _idx, 0, 0)); |
| | | _idx++; |
| | | |
| | | var row10 = sheet.CreateRow(_idx); |
| | | IRow row10 = sheet.CreateRow(_idx); |
| | | row10.HeightInPoints = rowHeight; |
| | | for (var colIndex = 0; colIndex < maxCols; colIndex++) |
| | | for (int colIndex = 0; colIndex < maxCols; colIndex++) |
| | | { |
| | | var cell = row10.CreateCell(colIndex); |
| | | ICell cell = row10.CreateCell(colIndex); |
| | | cell.CellStyle = style12; |
| | | } |
| | | |
| | | sheet.AddMergedRegion(new CellRangeAddress(_idx, _idx, 1, 5)); |
| | | setCellVal(sheet, _idx, 0, "审核意见"); |
| | | setCellVal(sheet, _idx, 1, "合格"); |
| | | _idx++; |
| | | |
| | | var row11 = sheet.CreateRow(_idx); |
| | | IRow row11 = sheet.CreateRow(_idx); |
| | | row11.HeightInPoints = rowHeight; |
| | | for (var colIndex = 0; colIndex < maxCols; colIndex++) |
| | | for (int colIndex = 0; colIndex < maxCols; colIndex++) |
| | | { |
| | | var cell = row11.CreateCell(colIndex); |
| | | ICell cell = row11.CreateCell(colIndex); |
| | | cell.CellStyle = style12; |
| | | } |
| | | |
| | | sheet.AddMergedRegion(new CellRangeAddress(_idx, _idx, 0, 6)); |
| | | setCellVal(sheet, _idx, 0, "首件填写,来料检验"); |
| | | //****合并好后开始赋值end************** |
| | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 生成iqc |
| | | /// 生成iqc |
| | | /// </summary> |
| | | /// <param name="dtSource"></param> |
| | | public static void ExportIqc(DataSet dtSource, string strFileName) |
| | | { |
| | | //行高 |
| | | var rowHeight = 25; |
| | | int rowHeight = 25; |
| | | //总列 |
| | | var maxCols = 8; |
| | | int maxCols = 8; |
| | | // 创建工作簿 |
| | | var workbook = new HSSFWorkbook(); |
| | | var sheet = workbook.CreateSheet("Sheet1"); |
| | | HSSFWorkbook workbook = new HSSFWorkbook(); |
| | | ISheet sheet = workbook.CreateSheet("Sheet1"); |
| | | |
| | | // 创建单元格样式 - 带边框和指定字体 |
| | | var style = getStyle(workbook); |
| | | var styleHeader = getStyle(workbook, 20, true, true); |
| | | var style12 = getStyle(workbook, 11, false, true); |
| | | ICellStyle style = getStyle(workbook); |
| | | ICellStyle styleHeader = getStyle(workbook, 20, true, true); |
| | | ICellStyle style12 = getStyle(workbook, 11, false, true); |
| | | |
| | | // 设置列宽(6列) |
| | | sheet.SetColumnWidth(0, 3000); // 第一列稍宽 |
| | | sheet.SetColumnWidth(0, 3000); // 第一列稍宽 |
| | | sheet.SetColumnWidth(1, 3000); |
| | | sheet.SetColumnWidth(2, 3000); |
| | | sheet.SetColumnWidth(3, 3000); |
| | |
| | | sheet.SetColumnWidth(6, 3000); |
| | | sheet.SetColumnWidth(7, 3000); |
| | | // 创建9行 |
| | | for (var rowIndex = 0; rowIndex <= 8; rowIndex++) |
| | | for (int rowIndex = 0; rowIndex <= 8; rowIndex++) |
| | | { |
| | | var row = sheet.CreateRow(rowIndex); |
| | | IRow row = sheet.CreateRow(rowIndex); |
| | | // 设置行高(所有行相同高度) |
| | | row.HeightInPoints = rowHeight; |
| | | // 创建个单元格 |
| | | for (var colIndex = 0; colIndex < maxCols; colIndex++) |
| | | for (int colIndex = 0; colIndex < maxCols; colIndex++) |
| | | { |
| | | var cell = row.CreateCell(colIndex); |
| | | ICell cell = row.CreateCell(colIndex); |
| | | if (rowIndex == 1) |
| | | cell.CellStyle = styleHeader; |
| | | else |
| | |
| | | cell.SetCellValue($"行{rowIndex + 1}列{colIndex + 1}"); |
| | | } |
| | | } |
| | | |
| | | //这是表头 |
| | | var tb0 = dtSource.Tables[0]; |
| | | var row0 = tb0.Rows[0]; |
| | | DataTable tb0 = dtSource.Tables[0]; |
| | | DataRow row0 = tb0.Rows[0]; |
| | | //第一行列合并 |
| | | sheet.AddMergedRegion(new CellRangeAddress(0, 0, 0, 3)); |
| | | sheet.AddMergedRegion(new CellRangeAddress(0, 0, 4, 7)); |
| | |
| | | setCellVal(sheet, 8, 6, "检验记录"); |
| | | setCellVal(sheet, 8, 7, "检验结果"); |
| | | ////从第9行开始,就是循环数据库 |
| | | var _idx = 9; |
| | | var tb1 = dtSource.Tables[1]; |
| | | int _idx = 9; |
| | | DataTable tb1 = dtSource.Tables[1]; |
| | | foreach (DataRow rrr in tb1.Rows) |
| | | { |
| | | var row7 = sheet.CreateRow(_idx); |
| | | IRow row7 = sheet.CreateRow(_idx); |
| | | row7.HeightInPoints = rowHeight; |
| | | for (var i = 0; i < maxCols; i++) |
| | | for (int i = 0; i < maxCols; i++) |
| | | { |
| | | var cell7 = row7.CreateCell(i); |
| | | ICell cell7 = row7.CreateCell(i); |
| | | cell7.CellStyle = style; |
| | | // cell7.SetCellValue(rrr[ary[i]].ToString()); |
| | | } |
| | | |
| | | sheet.AddMergedRegion(new CellRangeAddress(_idx, _idx, 1, 5)); |
| | | setCellVal(sheet, _idx, 0, rrr["项目"].ToString()); |
| | | setCellVal(sheet, _idx, 1, rrr["质量要求"].ToString()); |
| | |
| | | setCellVal(sheet, _idx, 7, rrr["检验结果"].ToString()); |
| | | _idx++; |
| | | } |
| | | |
| | | //备注 |
| | | var row8 = sheet.CreateRow(_idx); |
| | | IRow row8 = sheet.CreateRow(_idx); |
| | | row8.HeightInPoints = rowHeight; |
| | | for (var colIndex = 0; colIndex < maxCols; colIndex++) |
| | | for (int colIndex = 0; colIndex < maxCols; colIndex++) |
| | | { |
| | | var cell = row8.CreateCell(colIndex); |
| | | ICell cell = row8.CreateCell(colIndex); |
| | | cell.CellStyle = style12; |
| | | } |
| | | |
| | | sheet.AddMergedRegion(new CellRangeAddress(_idx, _idx, 1, 7)); |
| | | setCellVal(sheet, _idx, 0, "备注:"); |
| | | _idx++; |
| | | //综合判定 |
| | | for (var i = 0; i < 2; i++) |
| | | for (int i = 0; i < 2; i++) |
| | | { |
| | | var row9 = sheet.CreateRow(_idx); |
| | | IRow row9 = sheet.CreateRow(_idx); |
| | | row9.HeightInPoints = rowHeight; |
| | | for (var colIndex = 0; colIndex < maxCols; colIndex++) |
| | | for (int colIndex = 0; colIndex < maxCols; colIndex++) |
| | | { |
| | | var cell = row9.CreateCell(colIndex); |
| | | ICell cell = row9.CreateCell(colIndex); |
| | | cell.CellStyle = style; |
| | | } |
| | | |
| | | _idx++; |
| | | } |
| | | |
| | | sheet.AddMergedRegion(new CellRangeAddress(_idx - 2, _idx - 1, 0, 0)); |
| | | sheet.AddMergedRegion(new CellRangeAddress(_idx - 2, _idx - 2, 1, 7)); |
| | | sheet.AddMergedRegion(new CellRangeAddress(_idx - 1, _idx - 1, 1, 7)); |
| | |
| | | setCellVal(sheet, _idx - 2, 1, row0["zhpd"].ToString()); |
| | | setCellVal(sheet, _idx - 1, 1, row0["zhpdqz"].ToString()); |
| | | //审核意见: |
| | | for (var i = 0; i < 2; i++) |
| | | for (int i = 0; i < 2; i++) |
| | | { |
| | | var row9 = sheet.CreateRow(_idx); |
| | | IRow row9 = sheet.CreateRow(_idx); |
| | | row9.HeightInPoints = rowHeight; |
| | | for (var colIndex = 0; colIndex < maxCols; colIndex++) |
| | | for (int colIndex = 0; colIndex < maxCols; colIndex++) |
| | | { |
| | | var cell = row9.CreateCell(colIndex); |
| | | ICell cell = row9.CreateCell(colIndex); |
| | | cell.CellStyle = style; |
| | | } |
| | | |
| | | _idx++; |
| | | } |
| | | |
| | | sheet.AddMergedRegion(new CellRangeAddress(_idx - 2, _idx - 1, 0, 0)); |
| | | sheet.AddMergedRegion(new CellRangeAddress(_idx - 2, _idx - 2, 1, 7)); |
| | | sheet.AddMergedRegion(new CellRangeAddress(_idx - 1, _idx - 1, 1, 7)); |
| | |
| | | setCellVal(sheet, _idx - 2, 1, row0["shyj"].ToString()); |
| | | setCellVal(sheet, _idx - 1, 1, row0["shyjqz"].ToString()); |
| | | string[] ary = { "采购部意见", "销售部意见", "技术部意见", "生产部意见", "品质部意见" }; |
| | | for (var i = 0; i < ary.Length; i++) |
| | | for (int i = 0; i < ary.Length; i++) |
| | | { |
| | | var row9 = sheet.CreateRow(_idx); |
| | | IRow row9 = sheet.CreateRow(_idx); |
| | | row9.HeightInPoints = rowHeight; |
| | | for (var colIndex = 0; colIndex < maxCols; colIndex++) |
| | | for (int colIndex = 0; colIndex < maxCols; colIndex++) |
| | | { |
| | | var cell = row9.CreateCell(colIndex); |
| | | ICell cell = row9.CreateCell(colIndex); |
| | | cell.CellStyle = style; |
| | | } |
| | | |
| | | // sheet.AddMergedRegion(new CellRangeAddress(_idx, _idx, 0, 1)); |
| | | sheet.AddMergedRegion(new CellRangeAddress(_idx, _idx, 2, 7)); |
| | | _idx++; |
| | | } |
| | | |
| | | setCellVal(sheet, _idx - ary.Length, 0, "不合格评审:"); |
| | | sheet.AddMergedRegion(new CellRangeAddress(_idx - ary.Length, _idx - 1, |
| | | 0, 0)); |
| | | for (var i = 0; i < ary.Length; i++) |
| | | sheet.AddMergedRegion(new CellRangeAddress(_idx - ary.Length, _idx - 1, 0, 0)); |
| | | for (int i = 0; i < ary.Length; i++) |
| | | { |
| | | setCellVal(sheet, _idx - i - 1, 1, ary[i]); |
| | | setCellVal(sheet, _idx - i - 1, 2, |
| | | "□ 同意 □ 不同意 签名/日期:"); |
| | | setCellVal(sheet, _idx - i - 1, 2, "□ 同意 □ 不同意 签名/日期:"); |
| | | } |
| | | |
| | | //****合并好后开始赋值end************** |
| | | //保存 |
| | | using (var ms = new MemoryStream()) |
| | |
| | | |
| | | |
| | | /// <summary> |
| | | /// 生成巡检 |
| | | /// 生成巡检 |
| | | /// </summary> |
| | | /// <param name="dtSource"></param> |
| | | public static void ExportXunJian(DataSet dtSource, string strFileName) |
| | | { |
| | | var tb0 = dtSource.Tables[0]; |
| | | var row0 = tb0.Rows[0]; |
| | | var tb1 = dtSource.Tables[1]; |
| | | DataTable tb0 = dtSource.Tables[0]; |
| | | DataRow row0 = tb0.Rows[0]; |
| | | DataTable tb1 = dtSource.Tables[1]; |
| | | //行高 |
| | | var rowHeight = 25; |
| | | int rowHeight = 25; |
| | | //总列 |
| | | var maxCols = 10; |
| | | var workbook = new HSSFWorkbook(); |
| | | var sheet = workbook.CreateSheet("Sheet1"); |
| | | int maxCols = 10; |
| | | HSSFWorkbook workbook = new HSSFWorkbook(); |
| | | ISheet sheet = workbook.CreateSheet("Sheet1"); |
| | | // 创建单元格样式 - 带边框和指定字体 |
| | | var style = getStyle(workbook); |
| | | var styleHeader = getStyle(workbook, 20, true, true); |
| | | var style12 = getStyle(workbook, 11, false, true); |
| | | ICellStyle style = getStyle(workbook); |
| | | ICellStyle styleHeader = getStyle(workbook, 20, true, true); |
| | | ICellStyle style12 = getStyle(workbook, 11, false, true); |
| | | // 设置列宽(10列) |
| | | sheet.SetColumnWidth(0, 3000); // 第一列稍宽 |
| | | sheet.SetColumnWidth(0, 3000); // 第一列稍宽 |
| | | sheet.SetColumnWidth(1, 3000); |
| | | sheet.SetColumnWidth(2, 3000); |
| | | sheet.SetColumnWidth(3, 3000); |
| | |
| | | sheet.SetColumnWidth(8, 3000); |
| | | sheet.SetColumnWidth(9, 3000); |
| | | // 创建头行 |
| | | for (var rowIndex = 0; rowIndex <= 2; rowIndex++) |
| | | for (int rowIndex = 0; rowIndex <= 2; rowIndex++) |
| | | { |
| | | var row = sheet.CreateRow(rowIndex); |
| | | IRow row = sheet.CreateRow(rowIndex); |
| | | // 设置行高(所有行相同高度) |
| | | row.HeightInPoints = rowHeight; |
| | | // 创建个单元格 |
| | | for (var colIndex = 0; colIndex < maxCols; colIndex++) |
| | | for (int colIndex = 0; colIndex < maxCols; colIndex++) |
| | | { |
| | | var cell = row.CreateCell(colIndex); |
| | | ICell cell = row.CreateCell(colIndex); |
| | | if (rowIndex == 0) |
| | | cell.CellStyle = styleHeader; |
| | | else |
| | | cell.CellStyle = style; |
| | | } |
| | | } |
| | | |
| | | //第一行列合并 |
| | | sheet.AddMergedRegion(new CellRangeAddress(0, 0, 0, 9)); |
| | | setCellVal(sheet, 0, 0, row0["title"].ToString()); |
| | |
| | | setCellVal(sheet, 1, 5, "规格型号"); |
| | | setCellVal(sheet, 1, 6, row0["itemModel"].ToString()); |
| | | //第三行列合并 |
| | | sheet.AddMergedRegion(new CellRangeAddress(2, 2, 2, 4)); |
| | | setCellVal(sheet, 2, 0, "序号"); |
| | | sheet.AddMergedRegion(new CellRangeAddress(2, 2,2, 4)); |
| | | setCellVal(sheet,2, 0, "序号"); |
| | | setCellVal(sheet, 2, 1, "检验项目"); |
| | | setCellVal(sheet, 2, 2, "检验标准"); |
| | | setCellVal(sheet, 2, 5, row0["tm1"].ToString()); |
| | |
| | | setCellVal(sheet, 2, 8, row0["tm4"].ToString()); |
| | | setCellVal(sheet, 2, 9, row0["tm5"].ToString()); |
| | | //循环数据库 |
| | | var _idx = 3; |
| | | int _idx = 3; |
| | | foreach (DataRow rrr in tb1.Rows) |
| | | { |
| | | var row7 = sheet.CreateRow(_idx); |
| | | IRow row7 = sheet.CreateRow(_idx); |
| | | row7.HeightInPoints = rowHeight; |
| | | for (var colIndex = 0; colIndex < maxCols; colIndex++) |
| | | for (int colIndex = 0; colIndex < maxCols; colIndex++) |
| | | { |
| | | var cell7 = row7.CreateCell(colIndex); |
| | | ICell cell7 = row7.CreateCell(colIndex); |
| | | cell7.CellStyle = style; |
| | | // cell7.SetCellValue("1"); |
| | | switch (colIndex) |
| | |
| | | cell7.SetCellValue(rrr["序号"].ToString()); |
| | | break; |
| | | case 1: |
| | | sheet.AddMergedRegion( |
| | | new CellRangeAddress(_idx, _idx, 2, 4)); |
| | | sheet.AddMergedRegion(new CellRangeAddress(_idx, _idx, 2, 4)); |
| | | cell7.SetCellValue(rrr["检验项目"].ToString()); |
| | | break; |
| | | case 2: |
| | |
| | | break; |
| | | } |
| | | } |
| | | |
| | | _idx++; |
| | | } |
| | | |
| | | ////备注 |
| | | var row8 = sheet.CreateRow(_idx); |
| | | IRow row8 = sheet.CreateRow(_idx); |
| | | row8.HeightInPoints = rowHeight; |
| | | for (var colIndex = 0; colIndex < maxCols; colIndex++) |
| | | for (int colIndex = 0; colIndex < maxCols; colIndex++) |
| | | { |
| | | var cell = row8.CreateCell(colIndex); |
| | | ICell cell = row8.CreateCell(colIndex); |
| | | cell.CellStyle = style12; |
| | | } |
| | | |
| | | sheet.AddMergedRegion(new CellRangeAddress(_idx, _idx, 0, 4)); |
| | | setCellVal(sheet, _idx, 0, "巡检人:"); |
| | | setCellVal(sheet, _idx, 5, row0["xjr1"].ToString()); |
| | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 生成成品检验报告(按实际模板结构) |
| | | /// 生成成品检验报告(按实际模板结构) |
| | | /// </summary> |
| | | /// <param name="dtSource"></param> |
| | | /// <param name="strFileName"></param> |
| | | public static void ExportChengPin(DataSet dtSource, string strFileName) |
| | | { |
| | | //行高 |
| | | var rowHeight = 25; |
| | | int rowHeight = 25; |
| | | //总列数 - 根据模板分析,至少需要18列 |
| | | var maxCols = 18; |
| | | int maxCols = 18; |
| | | // 创建工作簿 |
| | | var workbook = new HSSFWorkbook(); |
| | | var sheet = workbook.CreateSheet("Sheet1"); |
| | | HSSFWorkbook workbook = new HSSFWorkbook(); |
| | | ISheet sheet = workbook.CreateSheet("Sheet1"); |
| | | |
| | | // 创建单元格样式 |
| | | var style = getStyle(workbook); |
| | | var styleHeader = getStyle(workbook, 16, true, true); |
| | | var styleTitle = getStyle(workbook, 14, true, true); |
| | | var styleSmall = getStyle(workbook, 10); |
| | | ICellStyle style = getStyle(workbook); |
| | | ICellStyle styleHeader = getStyle(workbook, 16, true, true); |
| | | ICellStyle styleTitle = getStyle(workbook, 14, true, true); |
| | | ICellStyle styleSmall = getStyle(workbook, 10, false, false); |
| | | |
| | | // 设置列宽 |
| | | sheet.SetColumnWidth(0, 3500); // A列:项目名称 |
| | | sheet.SetColumnWidth(1, 5000); // B列:标准/规范 |
| | | for (var i = 2; i < 18; i++) // C到R列:16个检测值列 |
| | | sheet.SetColumnWidth(i, 2500); |
| | | |
| | | //获取表头数据 |
| | | var tb0 = dtSource.Tables[0]; |
| | | var row0 = tb0.Rows[0]; |
| | | var _idx = 0; |
| | | |
| | | // 第1行:报告标题 |
| | | var titleRow = sheet.CreateRow(_idx); |
| | | titleRow.HeightInPoints = 30; |
| | | for (var i = 0; i < maxCols; i++) |
| | | sheet.SetColumnWidth(0, 3500); // A列:项目名称 |
| | | sheet.SetColumnWidth(1, 5000); // B列:标准/规范 |
| | | for (int i = 2; i < 18; i++) // C到R列:16个检测值列 |
| | | { |
| | | var cell = titleRow.CreateCell(i); |
| | | cell.CellStyle = styleHeader; |
| | | sheet.SetColumnWidth(i, 2500); |
| | | } |
| | | |
| | | //获取表头数据 |
| | | DataTable tb0 = dtSource.Tables[0]; |
| | | DataRow row0 = tb0.Rows[0]; |
| | | int _idx = 0; |
| | | |
| | | // 第1行:报告标题 |
| | | IRow titleRow = sheet.CreateRow(_idx); |
| | | titleRow.HeightInPoints = 30; |
| | | for (int i = 0; i < maxCols; i++) |
| | | { |
| | | ICell cell = titleRow.CreateCell(i); |
| | | cell.CellStyle = styleHeader; |
| | | } |
| | | sheet.AddMergedRegion(new CellRangeAddress(_idx, _idx, 0, maxCols - 1)); |
| | | setCellVal(sheet, _idx, 0, "成品检验报告"); |
| | | _idx++; |
| | | |
| | | // 第2行:基本信息第一行 |
| | | var info1Row = sheet.CreateRow(_idx); |
| | | IRow info1Row = sheet.CreateRow(_idx); |
| | | info1Row.HeightInPoints = rowHeight; |
| | | for (var i = 0; i < maxCols; i++) |
| | | for (int i = 0; i < maxCols; i++) |
| | | { |
| | | var cell = info1Row.CreateCell(i); |
| | | ICell cell = info1Row.CreateCell(i); |
| | | cell.CellStyle = style; |
| | | } |
| | | |
| | | setCellVal(sheet, _idx, 0, |
| | | "生产车间:" + (row0["workShop"]?.ToString() ?? "")); |
| | | setCellVal(sheet, _idx, 0, "生产车间:" + (row0["workShop"]?.ToString() ?? "")); |
| | | sheet.AddMergedRegion(new CellRangeAddress(_idx, _idx, 0, 5)); |
| | | |
| | | setCellVal(sheet, _idx, 12, |
| | | "室温:" + (row0["temperature"]?.ToString() ?? "")); |
| | | setCellVal(sheet, _idx, 12, "室温:" + (row0["temperature"]?.ToString() ?? "")); |
| | | sheet.AddMergedRegion(new CellRangeAddress(_idx, _idx, 12, 17)); |
| | | _idx++; |
| | | |
| | | // 第3行:产品信息 |
| | | var info2Row = sheet.CreateRow(_idx); |
| | | IRow info2Row = sheet.CreateRow(_idx); |
| | | info2Row.HeightInPoints = rowHeight; |
| | | for (var i = 0; i < maxCols; i++) |
| | | for (int i = 0; i < maxCols; i++) |
| | | { |
| | | var cell = info2Row.CreateCell(i); |
| | | ICell cell = info2Row.CreateCell(i); |
| | | cell.CellStyle = style; |
| | | } |
| | | |
| | | setCellVal(sheet, _idx, 0, "产品名称"); |
| | | sheet.AddMergedRegion(new CellRangeAddress(_idx, _idx, 1, 4)); |
| | | setCellVal(sheet, _idx, 1, row0["itemName"]?.ToString() ?? ""); |
| | |
| | | _idx++; |
| | | |
| | | // 第4行:商标等信息 |
| | | var info3Row = sheet.CreateRow(_idx); |
| | | IRow info3Row = sheet.CreateRow(_idx); |
| | | info3Row.HeightInPoints = rowHeight; |
| | | for (var i = 0; i < maxCols; i++) |
| | | for (int i = 0; i < maxCols; i++) |
| | | { |
| | | var cell = info3Row.CreateCell(i); |
| | | ICell cell = info3Row.CreateCell(i); |
| | | cell.CellStyle = style; |
| | | } |
| | | |
| | | setCellVal(sheet, _idx, 0, "商标"); |
| | | sheet.AddMergedRegion(new CellRangeAddress(_idx, _idx, 1, 4)); |
| | | setCellVal(sheet, _idx, 1, row0["brand"]?.ToString() ?? ""); |
| | |
| | | _idx++; |
| | | |
| | | // 第5行:AC/Re标准 |
| | | var acreRow = sheet.CreateRow(_idx); |
| | | IRow acreRow = sheet.CreateRow(_idx); |
| | | acreRow.HeightInPoints = rowHeight; |
| | | for (var i = 0; i < maxCols; i++) |
| | | for (int i = 0; i < maxCols; i++) |
| | | { |
| | | var cell = acreRow.CreateCell(i); |
| | | ICell cell = acreRow.CreateCell(i); |
| | | cell.CellStyle = style; |
| | | } |
| | | |
| | | setCellVal(sheet, _idx, 0, "Ac/Re(A类)"); |
| | | sheet.AddMergedRegion(new CellRangeAddress(_idx, _idx, 1, 5)); |
| | | setCellVal(sheet, _idx, 1, row0["acRe_A"]?.ToString() ?? ""); |
| | |
| | | _idx++; |
| | | |
| | | // 第6行:抽样信息 |
| | | var sampleRow = sheet.CreateRow(_idx); |
| | | IRow sampleRow = sheet.CreateRow(_idx); |
| | | sampleRow.HeightInPoints = rowHeight; |
| | | for (var i = 0; i < maxCols; i++) |
| | | for (int i = 0; i < maxCols; i++) |
| | | { |
| | | var cell = sampleRow.CreateCell(i); |
| | | ICell cell = sampleRow.CreateCell(i); |
| | | cell.CellStyle = style; |
| | | } |
| | | |
| | | setCellVal(sheet, _idx, 0, "抽样"); |
| | | setCellVal(sheet, _idx, 1, "匀速"); |
| | | setCellVal(sheet, _idx, 2, |
| | | row0["SampleMethod"]?.ToString() == "匀速" ? "√" : ""); |
| | | setCellVal(sheet, _idx, 2, row0["SampleMethod"]?.ToString() == "匀速" ? "√" : ""); |
| | | setCellVal(sheet, _idx, 3, "随机"); |
| | | setCellVal(sheet, _idx, 4, |
| | | row0["SampleMethod"]?.ToString() == "随机" ? "√" : ""); |
| | | setCellVal(sheet, _idx, 4, row0["SampleMethod"]?.ToString() == "随机" ? "√" : ""); |
| | | |
| | | setCellVal(sheet, _idx, 5, "样本数"); |
| | | setCellVal(sheet, _idx, 6, "匀速抽样数"); |
| | |
| | | _idx++; |
| | | |
| | | // 第7行:检验项目表头 |
| | | var headerRow = sheet.CreateRow(_idx); |
| | | IRow headerRow = sheet.CreateRow(_idx); |
| | | headerRow.HeightInPoints = rowHeight; |
| | | for (var i = 0; i < maxCols; i++) |
| | | for (int i = 0; i < maxCols; i++) |
| | | { |
| | | var cell = headerRow.CreateCell(i); |
| | | ICell cell = headerRow.CreateCell(i); |
| | | cell.CellStyle = styleTitle; |
| | | } |
| | | |
| | | setCellVal(sheet, _idx, 0, "项目"); |
| | | setCellVal(sheet, _idx, 1, "标准"); |
| | | setCellVal(sheet, _idx, 2, "1"); |
| | | setCellVal(sheet, _idx, 3, "2"); |
| | | // 根据需要继续添加更多列标题,这里简化为主要列 |
| | | for (var i = 4; i < 18; i++) |
| | | setCellVal(sheet, _idx, i, (i - 1).ToString()); |
| | | for (int i = 4; i < 18; i++) |
| | | { |
| | | setCellVal(sheet, _idx, i, (i-1).ToString()); |
| | | } |
| | | _idx++; |
| | | |
| | | // 检验项目数据 |
| | | if (dtSource.Tables.Count > 1) |
| | | { |
| | | var tb1 = dtSource.Tables[1]; |
| | | DataTable tb1 = dtSource.Tables[1]; |
| | | foreach (DataRow rrr in tb1.Rows) |
| | | { |
| | | var dataRow = sheet.CreateRow(_idx); |
| | | IRow dataRow = sheet.CreateRow(_idx); |
| | | dataRow.HeightInPoints = rowHeight; |
| | | |
| | | for (var i = 0; i < maxCols; i++) |
| | | for (int i = 0; i < maxCols; i++) |
| | | { |
| | | var cell = dataRow.CreateCell(i); |
| | | ICell cell = dataRow.CreateCell(i); |
| | | cell.CellStyle = style; |
| | | } |
| | | |
| | |
| | | setCellVal(sheet, _idx, 1, rrr["RPB004"]?.ToString() ?? ""); |
| | | |
| | | // 填充16个测试值 |
| | | for (var i = 0; i < 16; i++) |
| | | for (int i = 0; i < 16; i++) |
| | | { |
| | | var colName = |
| | | $"RPB{i + 5:D3}"; // RPB005, RPB006, ..., RPB020 |
| | | string colName = $"RPB{i + 5:D3}"; // RPB005, RPB006, ..., RPB020 |
| | | if (rrr.Table.Columns.Contains(colName)) |
| | | setCellVal(sheet, _idx, i + 2, |
| | | rrr[colName]?.ToString() ?? ""); |
| | | { |
| | | setCellVal(sheet, _idx, i + 2, rrr[colName]?.ToString() ?? ""); |
| | | } |
| | | else |
| | | { |
| | | setCellVal(sheet, _idx, i + 2, ""); |
| | | } |
| | | } |
| | | |
| | | _idx++; |
| | |
| | | } |
| | | |
| | | // 不合格内容记录 |
| | | var defectHeaderRow = sheet.CreateRow(_idx); |
| | | IRow defectHeaderRow = sheet.CreateRow(_idx); |
| | | defectHeaderRow.HeightInPoints = rowHeight; |
| | | for (var i = 0; i < maxCols; i++) |
| | | for (int i = 0; i < maxCols; i++) |
| | | { |
| | | var cell = defectHeaderRow.CreateCell(i); |
| | | ICell cell = defectHeaderRow.CreateCell(i); |
| | | cell.CellStyle = styleTitle; |
| | | } |
| | | |
| | | setCellVal(sheet, _idx, 0, "序号"); |
| | | sheet.AddMergedRegion(new CellRangeAddress(_idx, _idx, 1, |
| | | 10)); // 不合格内容占多列 |
| | | sheet.AddMergedRegion(new CellRangeAddress(_idx, _idx, 1, 10)); // 不合格内容占多列 |
| | | setCellVal(sheet, _idx, 1, "不合格内容"); |
| | | setCellVal(sheet, _idx, 11, "A类"); |
| | | setCellVal(sheet, _idx, 12, "B类"); |
| | | setCellVal(sheet, _idx, 13, "C类"); |
| | | sheet.AddMergedRegion(new CellRangeAddress(_idx, _idx, 14, |
| | | 17)); // 注意点占剩余列 |
| | | sheet.AddMergedRegion(new CellRangeAddress(_idx, _idx, 14, 17)); // 注意点占剩余列 |
| | | setCellVal(sheet, _idx, 14, "注意点"); |
| | | _idx++; |
| | | |
| | | if (dtSource.Tables.Count > 2) |
| | | { |
| | | var tb2 = dtSource.Tables[2]; |
| | | DataTable tb2 = dtSource.Tables[2]; |
| | | foreach (DataRow rrr in tb2.Rows) |
| | | { |
| | | if (rrr["Description"]?.ToString() == "不良数量") |
| | | break; |
| | | var dataRow = sheet.CreateRow(_idx); |
| | | IRow dataRow = sheet.CreateRow(_idx); |
| | | dataRow.HeightInPoints = rowHeight; |
| | | |
| | | for (var i = 0; i < maxCols; i++) |
| | | for (int i = 0; i < maxCols; i++) |
| | | { |
| | | var cell = dataRow.CreateCell(i); |
| | | ICell cell = dataRow.CreateCell(i); |
| | | cell.CellStyle = style; |
| | | } |
| | | |
| | | setCellVal(sheet, _idx, 0, rrr["Seq"]?.ToString() ?? ""); |
| | | sheet.AddMergedRegion( |
| | | new CellRangeAddress(_idx, _idx, 1, 10)); // 不合格内容占多列 |
| | | setCellVal(sheet, _idx, 1, |
| | | rrr["Description"]?.ToString() ?? ""); |
| | | sheet.AddMergedRegion(new CellRangeAddress(_idx, _idx, 1, 10)); // 不合格内容占多列 |
| | | setCellVal(sheet, _idx, 1, rrr["Description"]?.ToString() ?? ""); |
| | | setCellVal(sheet, _idx, 11, rrr["AClass"]?.ToString() ?? ""); |
| | | setCellVal(sheet, _idx, 12, rrr["BClass"]?.ToString() ?? ""); |
| | | setCellVal(sheet, _idx, 13, rrr["CClass"]?.ToString() ?? ""); |
| | | sheet.AddMergedRegion( |
| | | new CellRangeAddress(_idx, _idx, 14, 17)); // 注意点占剩余列 |
| | | sheet.AddMergedRegion(new CellRangeAddress(_idx, _idx, 14, 17)); // 注意点占剩余列 |
| | | setCellVal(sheet, _idx, 14, rrr["Point"]?.ToString() ?? ""); |
| | | _idx++; |
| | | } |
| | | |
| | | var dr = tb2.Rows[tb2.Rows.Count - 1]; |
| | | DataRow dr = tb2.Rows[tb2.Rows.Count - 1]; |
| | | // 备注行 |
| | | var remarkRow = sheet.CreateRow(_idx); |
| | | IRow remarkRow = sheet.CreateRow(_idx); |
| | | remarkRow.HeightInPoints = rowHeight; |
| | | for (var i = 0; i < maxCols; i++) |
| | | for (int i = 0; i < maxCols; i++) |
| | | { |
| | | var cell = remarkRow.CreateCell(i); |
| | | ICell cell = remarkRow.CreateCell(i); |
| | | cell.CellStyle = style; |
| | | } |
| | | |
| | | setCellVal(sheet, _idx, 0, "备注:"); |
| | | sheet.AddMergedRegion(new CellRangeAddress(_idx, _idx, 1, 8)); |
| | | setCellVal(sheet, _idx, 9, "不良数量:"); |
| | |
| | | setCellVal(sheet, _idx, 11, dr["AClass"]?.ToString() ?? ""); |
| | | setCellVal(sheet, _idx, 12, dr["BClass"]?.ToString() ?? ""); |
| | | setCellVal(sheet, _idx, 13, dr["CClass"]?.ToString() ?? ""); |
| | | sheet.AddMergedRegion(new CellRangeAddress(_idx, _idx, 14, |
| | | 17)); // 注意点占剩余列 |
| | | sheet.AddMergedRegion(new CellRangeAddress(_idx, _idx, 14, 17)); // 注意点占剩余列 |
| | | setCellVal(sheet, _idx, 14, dr["Point"]?.ToString() ?? ""); |
| | | _idx++; |
| | | |
| | | // 大的备注内容区域 |
| | | var remarkContentRow = sheet.CreateRow(_idx); |
| | | IRow remarkContentRow = sheet.CreateRow(_idx); |
| | | remarkContentRow.HeightInPoints = 60; |
| | | for (var i = 0; i < maxCols; i++) |
| | | for (int i = 0; i < maxCols; i++) |
| | | { |
| | | var cell = remarkContentRow.CreateCell(i); |
| | | ICell cell = remarkContentRow.CreateCell(i); |
| | | cell.CellStyle = style; |
| | | } |
| | | |
| | | sheet.AddMergedRegion(new CellRangeAddress(_idx, _idx, 0, 17)); |
| | | setCellVal(sheet, _idx, 0, dr["Remark"]?.ToString() ?? ""); |
| | | _idx++; |
| | | } |
| | | |
| | | // 检验判定区域(3行布局) |
| | | for (var judgeRowIndex = 0; judgeRowIndex < 3; judgeRowIndex++) |
| | | for (int judgeRowIndex = 0; judgeRowIndex < 3; judgeRowIndex++) |
| | | { |
| | | var judgmentRow = sheet.CreateRow(_idx); |
| | | IRow judgmentRow = sheet.CreateRow(_idx); |
| | | judgmentRow.HeightInPoints = rowHeight; |
| | | for (var i = 0; i < maxCols; i++) |
| | | for (int i = 0; i < maxCols; i++) |
| | | { |
| | | var cell = judgmentRow.CreateCell(i); |
| | | ICell cell = judgmentRow.CreateCell(i); |
| | | cell.CellStyle = styleTitle; |
| | | } |
| | | |
| | |
| | | { |
| | | // 第一行:检验判定 |
| | | setCellVal(sheet, _idx, 0, "检验判定"); |
| | | sheet.AddMergedRegion( |
| | | new CellRangeAddress(_idx, _idx + 2, 0, 0)); // 检验判定跨3行 |
| | | sheet.AddMergedRegion(new CellRangeAddress(_idx, _idx + 2, 0, 0)); // 检验判定跨3行 |
| | | |
| | | if (row0["CheckResult"]?.ToString() == "合格") |
| | | { |
| | | setCellVal(sheet, _idx, 1, "√ 合格 □ 不合格"); |
| | | else if (row0["CheckResult"]?.ToString() == "不合格") |
| | | } |
| | | else if(row0["CheckResult"]?.ToString() == "不合格") |
| | | { |
| | | setCellVal(sheet, _idx, 1, "□ 合格 √ 不合格"); |
| | | } |
| | | else |
| | | { |
| | | setCellVal(sheet, _idx, 1, "□ 合格 □ 不合格"); |
| | | sheet.AddMergedRegion( |
| | | new CellRangeAddress(_idx, _idx + 1, 1, 5)); // 合格/不合格跨2行 |
| | | } |
| | | sheet.AddMergedRegion(new CellRangeAddress(_idx, _idx + 1, 1, 5)); // 合格/不合格跨2行 |
| | | |
| | | setCellVal(sheet, _idx, 6, "审核"); |
| | | sheet.AddMergedRegion( |
| | | new CellRangeAddress(_idx, _idx + 2, 6, 6)); // 审核跨3行 |
| | | sheet.AddMergedRegion(new CellRangeAddress(_idx, _idx + 2, 6, 6)); // 审核跨3行 |
| | | |
| | | if (row0["ProcessResults"]?.ToString() == "无") |
| | | { |
| | | setCellVal(sheet, _idx, 7, "√ 无 □ 返工"); |
| | | } |
| | | else if (row0["ProcessResults"]?.ToString() == "返工") |
| | | { |
| | | setCellVal(sheet, _idx, 7, "□ 无 √ 返工"); |
| | | } |
| | | else |
| | | { |
| | | setCellVal(sheet, _idx, 7, "□ 无 □ 返工"); |
| | | } |
| | | sheet.AddMergedRegion(new CellRangeAddress(_idx, _idx, 7, 11)); |
| | | |
| | | setCellVal(sheet, _idx, 12, "审批"); |
| | | sheet.AddMergedRegion( |
| | | new CellRangeAddress(_idx, _idx + 2, 12, 12)); // 审批跨3行 |
| | | sheet.AddMergedRegion(new CellRangeAddress(_idx, _idx + 2, 12, 12)); // 审批跨3行 |
| | | |
| | | if (row0["ProcessResults"]?.ToString() == "无") |
| | | { |
| | | setCellVal(sheet, _idx, 13, "√ 无 □ 返工"); |
| | | } |
| | | else if (row0["ProcessResults"]?.ToString() == "返工") |
| | | { |
| | | setCellVal(sheet, _idx, 13, "□ 无 √ 返工"); |
| | | } |
| | | else |
| | | { |
| | | setCellVal(sheet, _idx, 13, "□ 无 □ 返工"); |
| | | } |
| | | sheet.AddMergedRegion(new CellRangeAddress(_idx, _idx, 13, 17)); |
| | | } |
| | | else if (judgeRowIndex == 1) |
| | | { |
| | | if (row0["ProcessResults"]?.ToString() == "让步接收") |
| | | { |
| | | setCellVal(sheet, _idx, 7, "√ 让步接收 □ 特采"); |
| | | } |
| | | else if (row0["ProcessResults"]?.ToString() == "特采") |
| | | { |
| | | setCellVal(sheet, _idx, 7, "□ 让步接收 √ 特采"); |
| | | } |
| | | else |
| | | { |
| | | setCellVal(sheet, _idx, 7, "□ 让步接收 □ 特采"); |
| | | } |
| | | // 第二行:让步接收选项 |
| | | |
| | | |
| | | sheet.AddMergedRegion(new CellRangeAddress(_idx, _idx, 7, 11)); |
| | | |
| | | if (row0["ProcessResults"]?.ToString() == "让步接收") |
| | | { |
| | | setCellVal(sheet, _idx, 13, "√ 让步接收 □ 特采"); |
| | | } |
| | | else if (row0["ProcessResults"]?.ToString() == "特采") |
| | | { |
| | | setCellVal(sheet, _idx, 13, "□ 让步接收 √ 特采"); |
| | | } |
| | | else |
| | | { |
| | | setCellVal(sheet, _idx, 13, "□ 让步接收 □ 特采"); |
| | | } |
| | | sheet.AddMergedRegion(new CellRangeAddress(_idx, _idx, 13, 17)); |
| | | } |
| | | else |
| | | { |
| | | // 签名行 |
| | | sheet.AddMergedRegion(new CellRangeAddress(_idx, _idx, 1, 2)); |
| | | setCellVal(sheet, _idx, 1, "签名/日期:"); |
| | | setCellVal(sheet, _idx, 1, $"签名/日期:"); |
| | | sheet.AddMergedRegion(new CellRangeAddress(_idx, _idx, 3, 5)); |
| | | setCellVal(sheet, _idx, 3, |
| | | $"{row0["JY_USER"]?.ToString() ?? ""}/{row0["JY_DATE"]?.ToString() ?? ""}"); |
| | | setCellVal(sheet, _idx, 3, $"{row0["JY_USER"]?.ToString() ?? ""}/{row0["JY_DATE"]?.ToString() ?? ""}"); |
| | | sheet.AddMergedRegion(new CellRangeAddress(_idx, _idx, 7, 8)); |
| | | setCellVal(sheet, _idx, 7, "签名/日期:"); |
| | | setCellVal(sheet, _idx, 7, $"签名/日期:"); |
| | | sheet.AddMergedRegion(new CellRangeAddress(_idx, _idx, 9, 11)); |
| | | setCellVal(sheet, _idx, 9, |
| | | $"{row0["CHECK_USER"]?.ToString() ?? ""}/{row0["CHECK_DATE"]?.ToString() ?? ""}"); |
| | | setCellVal(sheet, _idx, 9, $"{row0["CHECK_USER"]?.ToString() ?? ""}/{row0["CHECK_DATE"]?.ToString() ?? ""}"); |
| | | sheet.AddMergedRegion(new CellRangeAddress(_idx, _idx, 13, 14)); |
| | | setCellVal(sheet, _idx, 13, "签名/日期:"); |
| | | setCellVal(sheet, _idx, 13, $"签名/日期:"); |
| | | sheet.AddMergedRegion(new CellRangeAddress(_idx, _idx, 15, 17)); |
| | | setCellVal(sheet, _idx, 15, |
| | | $"{row0["SP_USER"]?.ToString() ?? ""}/{row0["SP_DATE"]?.ToString() ?? ""}"); |
| | | setCellVal(sheet, _idx, 15, $"{row0["SP_USER"]?.ToString() ?? ""}/{row0["SP_DATE"]?.ToString() ?? ""}"); |
| | | } |
| | | |
| | | _idx++; |
| | | } |
| | | |
| | | //保存 |
| | | using (var ms = new MemoryStream()) |
| | | { |
| | | using (var fs = new FileStream(strFileName, FileMode.Create, |
| | | FileAccess.Write)) |
| | | using (var fs = new FileStream(strFileName, FileMode.Create, FileAccess.Write)) |
| | | { |
| | | workbook.Write(ms); |
| | | ms.Flush(); |
| | |
| | | return "=" + cell.CellFormula; |
| | | } |
| | | } |
| | | } |
| | | } |