using NPOI.XWPF.UserModel; using NPOI.OpenXmlFormats.Wordprocessing; using SHJX.Service.Model.Dao; using System; using System.IO; using System.Linq; using System.Data; using NPOI.SS.Util; using System.Collections.Generic; namespace SHJX.Service.Common.Extend { public class ExportWordByNPOI : NpoiWordParagraphTextStyle { public override void Write(List tasks, string savePath) { string fileName = string.Format("GMSY_Result_by_{0}.docx", DateTime.Now.ToString("yyyyMMddHHmmss"), System.Text.Encoding.UTF8); if (!Directory.Exists(savePath)) { Directory.CreateDirectory(savePath); } using var stream = new FileStream(Path.Combine(savePath, fileName), FileMode.Create, FileAccess.Write); //创建document文档对象对象实例 XWPFDocument document = new XWPFDocument(); CT_SectPr m_SectPr = new CT_SectPr(); //实例⼀个尺⼨类的实例 m_SectPr.pgSz.w = 16838; //设置宽度(这⾥是⼀个ulong类型) m_SectPr.pgSz.h = 11906; //设置⾼度(这⾥是⼀个ulong类型) XWPFDocument doc = new XWPFDocument(); document.Document.body.sectPr = m_SectPr; //设置页⾯的尺⼨ #region Table Header //创建文档中的表格对象实例 XWPFTable headTable = document.CreateTable(4, 4); //显示的行列数rows:4行,cols:4列 headTable.Width = 5200;//总宽度 headTable.SetColumnWidth(0, 1300); /* 设置列宽 */ headTable.SetColumnWidth(1, 1100); /* 设置列宽 */ headTable.SetColumnWidth(2, 1400); /* 设置列宽 */ headTable.SetColumnWidth(3, 1400); /* 设置列宽 */ //Table 表格第一行展示...后面的都是一样,只改变GetRow中的行数 headTable.GetRow(0).MergeCells(0, 3);//合并3列 headTable.GetRow(0).GetCell(0).SetParagraph(SetTableParagraph(document, headTable, "水质高锰酸盐指数", ParagraphAlignment.CENTER, 24, true)); //Table 表格第二行 headTable.GetRow(1).GetCell(0).SetParagraph(SetTableParagraph(document, headTable, "采样日期", ParagraphAlignment.CENTER, 24, true)); headTable.GetRow(1).GetCell(1).SetParagraph(SetTableParagraph(document, headTable, string.Empty, ParagraphAlignment.CENTER, 24, false)); headTable.GetRow(1).GetCell(2).SetParagraph(SetTableParagraph(document, headTable, "分析日期", ParagraphAlignment.CENTER, 24, true)); headTable.GetRow(1).GetCell(3).SetParagraph(SetTableParagraph(document, headTable, string.Empty, ParagraphAlignment.CENTER, 24, false)); //Table 表格第三行 headTable.GetRow(2).GetCell(0).SetParagraph(SetTableParagraph(document, headTable, "消解时间", ParagraphAlignment.CENTER, 24, true)); headTable.GetRow(2).GetCell(1).SetParagraph(SetTableParagraph(document, headTable, string.Empty, ParagraphAlignment.CENTER, 24, false)); headTable.GetRow(2).GetCell(2).SetParagraph(SetTableParagraph(document, headTable, "检查次数", ParagraphAlignment.CENTER, 24, true)); headTable.GetRow(2).GetCell(3).SetParagraph(SetTableParagraph(document, headTable, string.Empty, ParagraphAlignment.CENTER, 24, false)); headTable.GetRow(3).MergeCells(1, 3);//合并3列 headTable.GetRow(3).GetCell(0).SetParagraph(SetTableParagraph(document, headTable, "分析方法名称及依据", ParagraphAlignment.CENTER, 24, false)); headTable.GetRow(3).GetCell(1).SetParagraph(SetTableParagraph(document, headTable, "《水质高锰酸盐指数的测定(GB 11892-89)》、《国家地表水环境质量监测网监测任务作业指导书(2017)》", ParagraphAlignment.LEFT, 10, false)); #endregion #region 标定 var acidTask = tasks.Where(item => item.TaskType.Equals(TaskTypeName.CALIBRATION_ZH) && item.AcidBaseProp.Equals(AcidBase.Acid)).ToList(); double acidAvg = 0; var acid_k = CalculationResult.CalculateType(acidTask, (arg) => 10 / arg, ref acidAvg); var alkaliTask = tasks.Where(item => item.TaskType.Equals(TaskTypeName.CALIBRATION_ZH) && item.AcidBaseProp.Equals(AcidBase.Alkali)).ToList(); double alkaliAvg = 0; var alkali_k = CalculationResult.CalculateType(alkaliTask, (arg) => 10 / arg, ref alkaliAvg); XWPFTable calibrationTable = document.CreateTable(2, 4); calibrationTable.Width = 5200;//总宽度 calibrationTable.SetColumnWidth(0, 1300); /* 设置列宽 */ calibrationTable.SetColumnWidth(1, 1100); /* 设置列宽 */ calibrationTable.SetColumnWidth(2, 1400); /* 设置列宽 */ calibrationTable.SetColumnWidth(3, 1400); /* 设置列宽 */ calibrationTable.GetRow(0).MergeCells(0, 3);//合并3列 calibrationTable.GetRow(0).GetCell(0).SetParagraph(SetTableParagraph(document, calibrationTable, "标定", ParagraphAlignment.CENTER, 24, true)); calibrationTable.GetRow(1).MergeCells(1, 2);//合并3列 calibrationTable.GetRow(1).GetCell(0).SetParagraph(SetTableParagraph(document, calibrationTable, "草酸钠标液浓度", ParagraphAlignment.CENTER, 24, true)); calibrationTable.GetRow(1).GetCell(1).SetParagraph(SetTableParagraph(document, calibrationTable, "标定高锰酸钾体积V2(ml)", ParagraphAlignment.CENTER, 24, true)); calibrationTable.GetRow(1).GetCell(2).SetParagraph(SetTableParagraph(document, calibrationTable, "K=10/v2", ParagraphAlignment.CENTER, 24, true)); CT_Row nr = new CT_Row(); XWPFTableRow mr = new XWPFTableRow(nr, calibrationTable);//创建行 calibrationTable.AddRow(mr);//将行添加到table中 XWPFTableCell c1 = mr.CreateCell();//创建单元格 CT_Tc ct = c1.GetCTTc(); CT_TcPr cp = ct.AddNewTcPr(); cp.AddNewVMerge().val = ST_Merge.restart;//合并行 cp.AddNewVAlign().val = ST_VerticalJc.center;//垂直 ct.GetPList()[0].AddNewPPr().AddNewJc().val = ST_Jc.center; ct.GetPList()[0].AddNewR().AddNewT().Value = " 0.01mol/l"; c1 = mr.CreateCell();//创建单元格 ct = c1.GetCTTc(); cp = ct.AddNewTcPr(); cp.AddNewVAlign().val = ST_VerticalJc.center; ct.GetPList()[0].AddNewPPr().AddNewJc().val = ST_Jc.center;//单元格内容居中显示 ct.GetPList()[0].AddNewR().AddNewT().Value = "酸性法"; c1 = mr.CreateCell();//创建单元格 ct = c1.GetCTTc(); cp = ct.AddNewTcPr(); cp.AddNewVAlign().val = ST_VerticalJc.center; ct.GetPList()[0].AddNewPPr().AddNewJc().val = ST_Jc.center;//单元格内容居中显示 ct.GetPList()[0].AddNewR().AddNewT().Value = $"{acidAvg:F2}"; c1 = mr.CreateCell();//创建单元格 ct = c1.GetCTTc(); cp = ct.AddNewTcPr(); cp.AddNewVAlign().val = ST_VerticalJc.center; ct.GetPList()[0].AddNewPPr().AddNewJc().val = ST_Jc.center;//单元格内容居中显示 ct.GetPList()[0].AddNewR().AddNewT().Value = $"{acid_k:F2}"; nr = new CT_Row(); mr = new XWPFTableRow(nr, calibrationTable); calibrationTable.AddRow(mr); c1 = mr.CreateCell();//创建单元格 ct = c1.GetCTTc(); cp = ct.AddNewTcPr(); cp.AddNewVMerge().val = ST_Merge.@continue;//合并行 序号 c1 = mr.CreateCell();//创建单元格 ct = c1.GetCTTc(); cp = ct.AddNewTcPr(); cp.AddNewVAlign().val = ST_VerticalJc.center; ct.GetPList()[0].AddNewPPr().AddNewJc().val = ST_Jc.center;//单元格内容居中显示 ct.GetPList()[0].AddNewR().AddNewT().Value = "碱性法"; c1 = mr.CreateCell();//创建单元格 ct = c1.GetCTTc(); cp = ct.AddNewTcPr(); cp.AddNewVAlign().val = ST_VerticalJc.center; ct.GetPList()[0].AddNewPPr().AddNewJc().val = ST_Jc.center;//单元格内容居中显示 ct.GetPList()[0].AddNewR().AddNewT().Value = $"{alkaliAvg:F2}"; c1 = mr.CreateCell();//创建单元格 ct = c1.GetCTTc(); cp = ct.AddNewTcPr(); cp.AddNewVAlign().val = ST_VerticalJc.center; ct.GetPList()[0].AddNewPPr().AddNewJc().val = ST_Jc.center;//单元格内容居中显示 ct.GetPList()[0].AddNewR().AddNewT().Value = $"{alkali_k:F2}"; #endregion #region Sample Head XWPFTable sampleHeadTable = document.CreateTable(1, 7); sampleHeadTable.Width = 5180;//总宽度 for (int i = 0; i < 7; i++) { sampleHeadTable.SetColumnWidth(i, 740); /* 设置列宽 */ } sampleHeadTable.GetRow(0).MergeCells(0, 6);//合并3列 sampleHeadTable.GetRow(0).GetCell(0).SetParagraph(SetTableParagraph(document, sampleHeadTable, "水样测试", ParagraphAlignment.CENTER, 24, true)); nr = new CT_Row(); mr = new XWPFTableRow(nr, calibrationTable);//创建行 sampleHeadTable.AddRow(mr);//将行添加到table中 c1 = mr.CreateCell();//创建单元格 ct = c1.GetCTTc(); cp = ct.AddNewTcPr(); cp.AddNewVMerge().val = ST_Merge.restart;//合并行 cp.AddNewVAlign().val = ST_VerticalJc.center;//垂直 ct.GetPList()[0].AddNewPPr().AddNewJc().val = ST_Jc.center; ct.GetPList()[0].AddNewR().AddNewT().Value = "序号"; c1 = mr.CreateCell();//创建单元格 ct = c1.GetCTTc(); cp = ct.AddNewTcPr(); cp.AddNewVMerge().val = ST_Merge.restart;//合并行 cp.AddNewVAlign().val = ST_VerticalJc.center;//垂直 ct.GetPList()[0].AddNewPPr().AddNewJc().val = ST_Jc.center; ct.GetPList()[0].AddNewR().AddNewT().Value = "样品编号"; string[] title = new string[] { "测定", "取样", "稀释", "高锰酸钾溶液" }; foreach (var item in title) { c1 = mr.CreateCell();//创建单元格 ct = c1.GetCTTc(); cp = ct.AddNewTcPr(); cp.AddNewVAlign().val = ST_VerticalJc.center; ct.GetPList()[0].AddNewPPr().AddNewJc().val = ST_Jc.center;//单元格内容居中显示 ct.GetPList()[0].AddNewR().AddNewT().Value = item; } c1 = mr.CreateCell();//创建单元格 ct = c1.GetCTTc(); cp = ct.AddNewTcPr(); cp.AddNewVMerge().val = ST_Merge.restart;//合并行 cp.AddNewVAlign().val = ST_VerticalJc.center; ct.GetPList()[0].AddNewPPr().AddNewJc().val = ST_Jc.center;//单元格内容居中显示 ct.GetPList()[0].AddNewR().AddNewT().Value = "样品浓度(mg/L)"; nr = new CT_Row(); mr = new XWPFTableRow(nr, sampleHeadTable); sampleHeadTable.AddRow(mr); c1 = mr.CreateCell();//创建单元格 ct = c1.GetCTTc(); cp = ct.AddNewTcPr(); cp.AddNewVMerge().val = ST_Merge.@continue;//合并行 序号 c1 = mr.CreateCell();//创建单元格 ct = c1.GetCTTc(); cp = ct.AddNewTcPr(); cp.AddNewVMerge().val = ST_Merge.@continue;//合并行 序号 title = new string[] { "方法", "体积(ml)", "倍数", "消耗量(ml)" }; foreach (var item in title) { c1 = mr.CreateCell();//创建单元格 ct = c1.GetCTTc(); cp = ct.AddNewTcPr(); cp.AddNewVAlign().val = ST_VerticalJc.center; ct.GetPList()[0].AddNewPPr().AddNewJc().val = ST_Jc.center;//单元格内容居中显示 ct.GetPList()[0].AddNewR().AddNewT().Value = item; } c1 = mr.CreateCell();//创建单元格 ct = c1.GetCTTc(); cp = ct.AddNewTcPr(); cp.AddNewVMerge().val = ST_Merge.@continue;//合并行 序号 #endregion #region Sample Content List blankTasks = tasks.Where(item => item.TaskType.Equals(TaskTypeName.BLANK_ZH)).ToList(); List sampleTasks = tasks.Where(item => item.TaskType.Equals(TaskTypeName.SAMPLE_ZH)).ToList(); int sampleCount = blankTasks.Count + sampleTasks.Count; XWPFTable sampleContentTable = document.CreateTable(sampleCount, 7); sampleContentTable.Width = 5180;//总宽度 for (int i = 0; i < 7; i++) { sampleContentTable.SetColumnWidth(i, 740); /* 设置列宽 */ } int index = 0; foreach (var item in blankTasks) { sampleContentTable.GetRow(index).GetCell(0).SetParagraph(SetTableParagraph(document, headTable, $"{index}", ParagraphAlignment.CENTER, 24, true)); sampleContentTable.GetRow(index).GetCell(1).SetParagraph(SetTableParagraph(document, headTable, item.TaskType, ParagraphAlignment.CENTER, 24, false)); sampleContentTable.GetRow(index).GetCell(2).SetParagraph(SetTableParagraph(document, headTable, item.AcidBaseProp.Equals(AcidBase.Acid) ? "酸性法" : "碱性法", ParagraphAlignment.CENTER, 24, true)); sampleContentTable.GetRow(index).GetCell(3).SetParagraph(SetTableParagraph(document, headTable, $"{item.SampleVolume:F2}", ParagraphAlignment.CENTER, 24, false)); sampleContentTable.GetRow(index).GetCell(4).SetParagraph(SetTableParagraph(document, headTable, $"{item.SampleMultiple:F2}", ParagraphAlignment.CENTER, 24, false)); sampleContentTable.GetRow(index).GetCell(5).SetParagraph(SetTableParagraph(document, headTable, $"{item.Amount:F2}", ParagraphAlignment.CENTER, 24, false)); sampleContentTable.GetRow(index).GetCell(6).SetParagraph(SetTableParagraph(document, headTable, $"{item.Result:F2}", ParagraphAlignment.CENTER, 24, false)); index++; } foreach (var item in sampleTasks) { sampleContentTable.GetRow(index).GetCell(0).SetParagraph(SetTableParagraph(document, headTable, $"{index}", ParagraphAlignment.CENTER, 24, true)); sampleContentTable.GetRow(index).GetCell(1).SetParagraph(SetTableParagraph(document, headTable, item.TaskType, ParagraphAlignment.CENTER, 24, false)); sampleContentTable.GetRow(index).GetCell(2).SetParagraph(SetTableParagraph(document, headTable, item.AcidBaseProp.Equals(AcidBase.Acid) ? "酸性法" : "碱性法", ParagraphAlignment.CENTER, 24, true)); sampleContentTable.GetRow(index).GetCell(3).SetParagraph(SetTableParagraph(document, headTable, $"{item.SampleVolume:F2}", ParagraphAlignment.CENTER, 24, false)); sampleContentTable.GetRow(index).GetCell(4).SetParagraph(SetTableParagraph(document, headTable, $"{item.SampleMultiple:F2}", ParagraphAlignment.CENTER, 24, false)); sampleContentTable.GetRow(index).GetCell(5).SetParagraph(SetTableParagraph(document, headTable, $"{item.Amount:F2}", ParagraphAlignment.CENTER, 24, false)); sampleContentTable.GetRow(index).GetCell(6).SetParagraph(SetTableParagraph(document, headTable, $"{item.Result:F2}", ParagraphAlignment.CENTER, 24, false)); index++; } #endregion #region Table Footer XWPFTable footTable = document.CreateTable(1, 7); footTable.Width = 5180;//总宽度 for (int i = 0; i < 7; i++) { footTable.SetColumnWidth(i, 740); /* 设置列宽 */ } footTable.RemoveRow(0); nr = new CT_Row(); mr = new XWPFTableRow(nr, footTable);//创建行 footTable.AddRow(mr);//将行添加到table中 c1 = mr.CreateCell();//创建单元格 ct = c1.GetCTTc(); cp = ct.AddNewTcPr(); cp.AddNewVMerge().val = ST_Merge.restart;//合并行 cp.AddNewVAlign().val = ST_VerticalJc.center;//垂直 ct.GetPList()[0].AddNewPPr().AddNewJc().val = ST_Jc.center; ct.GetPList()[0].AddNewR().AddNewT().Value = "准确度"; c1 = mr.CreateCell();//创建单元格 ct = c1.GetCTTc(); cp = ct.AddNewTcPr(); cp.gridSpan = new CT_DecimalNumber(); cp.gridSpan.val = Convert.ToString(2); //合并列 cp.AddNewVAlign().val = ST_VerticalJc.center;//垂直 ct.GetPList()[0].AddNewPPr().AddNewJc().val = ST_Jc.center; ct.GetPList()[0].AddNewR().AddNewT().Value = "质控样品编号"; c1 = mr.CreateCell();//创建单元格 ct = c1.GetCTTc(); cp = ct.AddNewTcPr(); cp.AddNewVAlign().val = ST_VerticalJc.center;//垂直 ct.GetPList()[0].AddNewPPr().AddNewJc().val = ST_Jc.center; ct.GetPList()[0].AddNewR().AddNewT().Value = "真值(mg/l)"; c1 = mr.CreateCell();//创建单元格 ct = c1.GetCTTc(); cp = ct.AddNewTcPr(); cp.gridSpan = new CT_DecimalNumber(); cp.gridSpan.val = Convert.ToString(2); //合并列 cp.AddNewVAlign().val = ST_VerticalJc.center;//垂直 ct.GetPList()[0].AddNewPPr().AddNewJc().val = ST_Jc.center; ct.GetPList()[0].AddNewR().AddNewT().Value = "测试含量(mg/l)"; c1 = mr.CreateCell();//创建单元格 ct = c1.GetCTTc(); cp = ct.AddNewTcPr(); cp.AddNewVAlign().val = ST_VerticalJc.center;//垂直 ct.GetPList()[0].AddNewPPr().AddNewJc().val = ST_Jc.center; ct.GetPList()[0].AddNewR().AddNewT().Value = "是否合格"; for (int i = 0; i < 2; i++) { nr = new CT_Row(); mr = new XWPFTableRow(nr, footTable);//创建行 footTable.AddRow(mr);//将行添加到table中 c1 = mr.CreateCell();//创建单元格 ct = c1.GetCTTc(); cp = ct.AddNewTcPr(); cp.AddNewVMerge().val = ST_Merge.@continue;//合并行 cp.AddNewVAlign().val = ST_VerticalJc.center;//垂直 ct.GetPList()[0].AddNewPPr().AddNewJc().val = ST_Jc.center; c1 = mr.CreateCell();//创建单元格 ct = c1.GetCTTc(); cp = ct.AddNewTcPr(); cp.gridSpan = new CT_DecimalNumber(); cp.gridSpan.val = Convert.ToString(2); //合并列 cp.AddNewVAlign().val = ST_VerticalJc.center;//垂直 ct.GetPList()[0].AddNewPPr().AddNewJc().val = ST_Jc.center; for (int j = 0; j < 4; j++) { c1 = mr.CreateCell();//创建单元格 ct = c1.GetCTTc(); cp = ct.AddNewTcPr(); cp.AddNewVAlign().val = ST_VerticalJc.center;//垂直 ct.GetPList()[0].AddNewPPr().AddNewJc().val = ST_Jc.center; } } nr = new CT_Row(); mr = new XWPFTableRow(nr, footTable);//创建行 footTable.AddRow(mr);//将行添加到table中 c1 = mr.CreateCell();//创建单元格 ct = c1.GetCTTc(); cp = ct.AddNewTcPr(); cp.AddNewVMerge().val = ST_Merge.restart;//合并行 cp.AddNewVAlign().val = ST_VerticalJc.center;//垂直 ct.GetPList()[0].AddNewPPr().AddNewJc().val = ST_Jc.center; ct.GetPList()[0].AddNewR().AddNewT().Value = "精密度"; for (int i = 0; i < 2; i++) { c1 = mr.CreateCell();//创建单元格 ct = c1.GetCTTc(); cp = ct.AddNewTcPr(); cp.AddNewVAlign().val = ST_VerticalJc.center;//垂直 ct.GetPList()[0].AddNewPPr().AddNewJc().val = ST_Jc.center; ct.GetPList()[0].AddNewR().AddNewT().Value = "平行样编号"; c1 = mr.CreateCell();//创建单元格 ct = c1.GetCTTc(); cp = ct.AddNewTcPr(); cp.gridSpan = new CT_DecimalNumber(); cp.gridSpan.val = Convert.ToString(2); //合并列 cp.AddNewVAlign().val = ST_VerticalJc.center;//垂直 ct.GetPList()[0].AddNewPPr().AddNewJc().val = ST_Jc.center; } nr = new CT_Row(); mr = new XWPFTableRow(nr, footTable);//创建行 footTable.AddRow(mr);//将行添加到table中 c1 = mr.CreateCell();//创建单元格 ct = c1.GetCTTc(); cp = ct.AddNewTcPr(); cp.AddNewVMerge().val = ST_Merge.@continue;//合并行 for (int i = 0; i < 2; i++) { c1 = mr.CreateCell();//创建单元格 ct = c1.GetCTTc(); cp = ct.AddNewTcPr(); cp.AddNewVAlign().val = ST_VerticalJc.center;//垂直 ct.GetPList()[0].AddNewPPr().AddNewJc().val = ST_Jc.center; ct.GetPList()[0].AddNewR().AddNewT().Value = "测试含量(mg/l)"; for (int j = 0; j < 2; j++) { c1 = mr.CreateCell();//创建单元格 ct = c1.GetCTTc(); cp = ct.AddNewTcPr(); cp.AddNewVAlign().val = ST_VerticalJc.center;//垂直 ct.GetPList()[0].AddNewPPr().AddNewJc().val = ST_Jc.center; } } title = new string[] { "均值", "相对偏差(%)" }; foreach (var item in title) { nr = new CT_Row(); mr = new XWPFTableRow(nr, footTable);//创建行 footTable.AddRow(mr);//将行添加到table中 c1 = mr.CreateCell();//创建单元格 ct = c1.GetCTTc(); cp = ct.AddNewTcPr(); cp.AddNewVMerge().val = ST_Merge.@continue;//合并行 for (int i = 0; i < 2; i++) { c1 = mr.CreateCell();//创建单元格 ct = c1.GetCTTc(); cp = ct.AddNewTcPr(); cp.AddNewVAlign().val = ST_VerticalJc.center;//垂直 ct.GetPList()[0].AddNewPPr().AddNewJc().val = ST_Jc.center; ct.GetPList()[0].AddNewR().AddNewT().Value = item; c1 = mr.CreateCell();//创建单元格 ct = c1.GetCTTc(); cp = ct.AddNewTcPr(); cp.gridSpan = new CT_DecimalNumber(); cp.gridSpan.val = Convert.ToString(2); //合并列 cp.AddNewVAlign().val = ST_VerticalJc.center;//垂直 ct.GetPList()[0].AddNewPPr().AddNewJc().val = ST_Jc.center; } } nr = new CT_Row(); mr = new XWPFTableRow(nr, footTable);//创建行 footTable.AddRow(mr);//将行添加到table中 title = new string[] { "分析人", "校准人" }; foreach (var item in title) { c1 = mr.CreateCell();//创建单元格 ct = c1.GetCTTc(); cp = ct.AddNewTcPr(); cp.AddNewVAlign().val = ST_VerticalJc.center;//垂直 ct.GetPList()[0].AddNewPPr().AddNewJc().val = ST_Jc.center; ct.GetPList()[0].AddNewR().AddNewT().Value = item; c1 = mr.CreateCell();//创建单元格 ct = c1.GetCTTc(); cp = ct.AddNewTcPr(); cp.AddNewVAlign().val = ST_VerticalJc.center;//垂直 ct.GetPList()[0].AddNewPPr().AddNewJc().val = ST_Jc.center; } c1 = mr.CreateCell();//创建单元格 ct = c1.GetCTTc(); cp = ct.AddNewTcPr(); cp.AddNewVAlign().val = ST_VerticalJc.center;//垂直 ct.GetPList()[0].AddNewPPr().AddNewJc().val = ST_Jc.center; ct.GetPList()[0].AddNewR().AddNewT().Value = "审核人"; c1 = mr.CreateCell();//创建单元格 ct = c1.GetCTTc(); cp = ct.AddNewTcPr(); cp.gridSpan = new CT_DecimalNumber(); cp.gridSpan.val = Convert.ToString(2); //合并列 cp.AddNewVAlign().val = ST_VerticalJc.center;//垂直 ct.GetPList()[0].AddNewPPr().AddNewJc().val = ST_Jc.center; #endregion document.Write(stream); } } }