后端接口

 /// <summary>/// 根据id导出 生成word文档/// </summary>/// <param name="ID"></param>/// <returns></returns>[HttpGet("PersonalInfoExport")]public IActionResult PersonalInfoExport(int ID){try{var model = _personalInfomationService.GetModel(ID);string uploadPath = Utils.UploadPath + "/" + DateTime.Now.ToString("yyyyMMdd") + "/";string filePath = _webhostEnvironment.WebRootPath + "/" + uploadPath;var fileName = "干部信息表(" + model.Name + ")-" + DateTime.Now.ToString("yyyyMMddHHmmssfff") + ".docx";string fileFullName = filePath + fileName;var savePath = "";//如果目录不存在,则创建目录if (!Directory.Exists(filePath)){Directory.CreateDirectory(filePath);}//XWPFInsertPicture.WordIndertPicTest(_webhostEnvironment.WebRootPath + "/" + model.PhotoUrl);using (var stream = new FileStream(Path.Combine(filePath, fileName), FileMode.Create, FileAccess.Write)){//创建document文档对象对象实例XWPFDocument document = new XWPFDocument();var title = "干部(职工)基本信息表";//文本标题document.SetParagraph(NpoiWordParagraphTextStyleHelper._.ParagraphInstanceSetting(document, title, true, 26, "方正小标宋_GBK", ParagraphAlignment.CENTER), 0);#region 文档第一个表格对象实例//创建文档中的表格对象实例XWPFTable firstXwpfTable = document.CreateTable(4, 7);//显示的行列数rows:4行,cols:7列firstXwpfTable.Width = 5250;//总宽度firstXwpfTable.SetColumnWidth(0, 700); /* 设置列宽 */firstXwpfTable.SetColumnWidth(1, 750); /* 设置列宽 */firstXwpfTable.SetColumnWidth(2, 750); /* 设置列宽 */firstXwpfTable.SetColumnWidth(3, 750); /* 设置列宽 */firstXwpfTable.SetColumnWidth(4, 800); /* 设置列宽 */firstXwpfTable.SetColumnWidth(5, 750); /* 设置列宽 */firstXwpfTable.SetColumnWidth(6, 750); /* 设置列宽 */int row = 0;firstXwpfTable.GetRow(row).Height = 30 * 20;//Table 表格第一行展示...后面的都是一样,只改变GetRow中的行数firstXwpfTable.GetRow(row).GetCell(0).SetParagraph(NpoiWordParagraphTextStyleHelper._.SetTableParagraphInstanceSetting(document, firstXwpfTable, "姓  名", ParagraphAlignment.CENTER, 35, false));firstXwpfTable.GetRow(row).GetCell(1).SetParagraph(NpoiWordParagraphTextStyleHelper._.SetTableParagraphInstanceSetting(document, firstXwpfTable, model.Name, ParagraphAlignment.CENTER, 35, false));firstXwpfTable.GetRow(row).GetCell(2).SetParagraph(NpoiWordParagraphTextStyleHelper._.SetTableParagraphInstanceSetting(document, firstXwpfTable, "性  别", ParagraphAlignment.CENTER, 35, false));firstXwpfTable.GetRow(row).GetCell(3).SetParagraph(NpoiWordParagraphTextStyleHelper._.SetTableParagraphInstanceSetting(document, firstXwpfTable, GetSex(model.Sex), ParagraphAlignment.CENTER, 35, false));firstXwpfTable.GetRow(row).GetCell(4).SetParagraph(NpoiWordParagraphTextStyleHelper._.SetTableParagraphInstanceSetting(document, firstXwpfTable, "出生年月", ParagraphAlignment.CENTER, 35, false));firstXwpfTable.GetRow(row).GetCell(5).SetParagraph(NpoiWordParagraphTextStyleHelper._.SetTableParagraphInstanceSetting(document, firstXwpfTable, GetDataTimeString(model.Birthday), ParagraphAlignment.CENTER, 35, false));//img图片NpoiWordParagraphTextStyleHelper._.MergeVertically(firstXwpfTable, 6, 0, 2);//合并列if (System.IO.File.Exists(_webhostEnvironment.WebRootPath + "/" + model.PhotoUrl)){FileStream gfs = null;gfs = new FileStream(_webhostEnvironment.WebRootPath + "/" + model.PhotoUrl, FileMode.Open, FileAccess.Read);#region 方法一XWPFRun r = firstXwpfTable.GetRow(0).GetCell(6).Paragraphs.ToList().FirstOrDefault().CreateRun();r.AddPicture(gfs, (int)PictureType.JPEG, "avatar.png", 1000000, 1400000);CT_Inline inline = r.GetCTR().GetDrawingList()[0].inline[0];inline.docPr.id = 1;//默认插入少了这个ID号,它就是图片的序号,从 1开始编号的。#endregion#region 方法二//var gr = firstXwpfTable.GetRow(0).GetCell(6).Paragraphs.ToList().FirstOrDefault().CreateRun().GetCTR().AddNewDrawing().AddNewInline();//var picID = document.AddPictureData(gfs, (int)PictureType.JPEG);//XWPFInsertPicture.TableInsertPicture(gr, picID, 100, 140);//firstXwpfTable.GetRow(0).GetCell(6).AddParagraph();#endregiongfs.Close();}firstXwpfTable.GetRow(row).GetCell(0).SetVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);firstXwpfTable.GetRow(row).GetCell(1).SetVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);firstXwpfTable.GetRow(row).GetCell(2).SetVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);firstXwpfTable.GetRow(row).GetCell(3).SetVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);firstXwpfTable.GetRow(row).GetCell(4).SetVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);firstXwpfTable.GetRow(row).GetCell(5).SetVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);//Table 表格第二行row = 1;firstXwpfTable.GetRow(row).Height = 30 * 20;firstXwpfTable.GetRow(row).GetCell(0).SetParagraph(NpoiWordParagraphTextStyleHelper._.SetTableParagraphInstanceSetting(document, firstXwpfTable, "民  族", ParagraphAlignment.CENTER, 35, false));firstXwpfTable.GetRow(row).GetCell(1).SetParagraph(NpoiWordParagraphTextStyleHelper._.SetTableParagraphInstanceSetting(document, firstXwpfTable, GetSystemDataByIdstring(model.Nation), ParagraphAlignment.CENTER, 35, false));firstXwpfTable.GetRow(row).GetCell(2).SetParagraph(NpoiWordParagraphTextStyleHelper._.SetTableParagraphInstanceSetting(document, firstXwpfTable, "籍  贯", ParagraphAlignment.CENTER, 35, false));firstXwpfTable.GetRow(row).GetCell(3).SetParagraph(NpoiWordParagraphTextStyleHelper._.SetTableParagraphInstanceSetting(document, firstXwpfTable, model.NativePlace, ParagraphAlignment.CENTER, 35, false));firstXwpfTable.GetRow(row).GetCell(4).SetParagraph(NpoiWordParagraphTextStyleHelper._.SetTableParagraphInstanceSetting(document, firstXwpfTable, "出 生 地", ParagraphAlignment.CENTER, 35, false));firstXwpfTable.GetRow(row).GetCell(5).SetParagraph(NpoiWordParagraphTextStyleHelper._.SetTableParagraphInstanceSetting(document, firstXwpfTable, model.BirthPlace, ParagraphAlignment.CENTER, 35, false));firstXwpfTable.GetRow(row).GetCell(0).SetVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);firstXwpfTable.GetRow(row).GetCell(1).SetVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);firstXwpfTable.GetRow(row).GetCell(2).SetVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);firstXwpfTable.GetRow(row).GetCell(3).SetVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);firstXwpfTable.GetRow(row).GetCell(4).SetVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);firstXwpfTable.GetRow(row).GetCell(5).SetVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);row = 2;firstXwpfTable.GetRow(row).Height = 35 * 20;//Table 表格第三行var rdsj = new List<string>();rdsj.Add("入  党");rdsj.Add("时  间");firstXwpfTable.GetRow(row).GetCell(0).SetParagraph(NpoiWordParagraphTextStyleHelper._.SetTableParagraphInstanceSetting(document, firstXwpfTable, rdsj, ParagraphAlignment.CENTER, 12, false));firstXwpfTable.GetRow(row).GetCell(1).SetParagraph(NpoiWordParagraphTextStyleHelper._.SetTableParagraphInstanceSetting(document, firstXwpfTable, GetDataTimeString(model.TimeOfJoiningTheParty), ParagraphAlignment.CENTER, 12, false));var cjgzsj = new List<string>();cjgzsj.Add("参加工");cjgzsj.Add("作时间");firstXwpfTable.GetRow(row).GetCell(2).SetParagraph(NpoiWordParagraphTextStyleHelper._.SetTableParagraphInstanceSetting(document, firstXwpfTable, cjgzsj, ParagraphAlignment.CENTER, 12, false));firstXwpfTable.GetRow(row).GetCell(3).SetParagraph(NpoiWordParagraphTextStyleHelper._.SetTableParagraphInstanceSetting(document, firstXwpfTable, GetDataTimeString(model.TimeToWork), ParagraphAlignment.CENTER, 12, false));firstXwpfTable.GetRow(row).GetCell(4).SetParagraph(NpoiWordParagraphTextStyleHelper._.SetTableParagraphInstanceSetting(document, firstXwpfTable, "健康状况", ParagraphAlignment.CENTER, 12, false));firstXwpfTable.GetRow(row).GetCell(5).SetParagraph(NpoiWordParagraphTextStyleHelper._.SetTableParagraphInstanceSetting(document, firstXwpfTable, model.Health, ParagraphAlignment.CENTER, 12, false));//firstXwpfTable.GetRow(row).GetCell(6).SetParagraph(NpoiWordParagraphTextStyleHelper._.SetTableParagraphInstanceSetting(document, firstXwpfTable, "出生年月", ParagraphAlignment.CENTER, 24, false));firstXwpfTable.GetRow(row).GetCell(0).SetVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);firstXwpfTable.GetRow(row).GetCell(1).SetVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);firstXwpfTable.GetRow(row).GetCell(2).SetVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);firstXwpfTable.GetRow(row).GetCell(3).SetVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);firstXwpfTable.GetRow(row).GetCell(4).SetVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);firstXwpfTable.GetRow(row).GetCell(5).SetVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);row = 3;firstXwpfTable.GetRow(row).Height = 70 * 20;// Table 表格第四行firstXwpfTable.GetRow(row).Height = 120;firstXwpfTable.GetRow(row).MergeCells(1, 6);//合并3列 职级或 职称var asdf = new List<string>();asdf.Add("职级或");asdf.Add("职称");firstXwpfTable.GetRow(row).GetCell(0).SetParagraph(NpoiWordParagraphTextStyleHelper._.SetTableParagraphInstanceSetting(document, firstXwpfTable, asdf, ParagraphAlignment.CENTER, 12, false));var rankAndTitle = "";var ZJ = GetSystemDataByIdstring(model.RankAndTitle_GWY);var ZC = GetSystemDataByIdstring(model.RankAndTitle_SY);if (!string.IsNullOrEmpty(ZJ)){rankAndTitle = ZJ;if (!string.IsNullOrEmpty(ZC)){rankAndTitle += "/";}}if (!string.IsNullOrEmpty(ZC)){rankAndTitle += ZC;}//rankAndTitle = GetSystemDataByIdstring(model.RankAndTitle_GWY) + "/" + GetSystemDataByIdstring(model.RankAndTitle_SY);firstXwpfTable.GetRow(row).GetCell(1).SetParagraph(NpoiWordParagraphTextStyleHelper._.SetTableParagraphInstanceSetting(document, firstXwpfTable, rankAndTitle, ParagraphAlignment.LEFT, 24, false));firstXwpfTable.GetRow(row).GetCell(0).SetVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);firstXwpfTable.GetRow(row).GetCell(1).SetVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);#endregion#region 文档第二个表格对象实例//创建文档中的表格对象实例XWPFTable secoedXwpfTable = document.CreateTable(2, 5);//显示的行列数rows:4行,cols:7列secoedXwpfTable.Width = 5250;//总宽度secoedXwpfTable.SetColumnWidth(0, 700); /* 设置列宽 */secoedXwpfTable.SetColumnWidth(1, 750); /* 设置列宽 */secoedXwpfTable.SetColumnWidth(2, 1500); /* 设置列宽 */secoedXwpfTable.SetColumnWidth(3, 800); /* 设置列宽 */secoedXwpfTable.SetColumnWidth(4, 1500); /* 设置列宽 */row = 0;secoedXwpfTable.GetRow(row).Height = 45 * 20;var dfdjkdf = new List<string>();dfdjkdf.Add("学 历");dfdjkdf.Add("学 位");secoedXwpfTable.GetRow(row).GetCell(0).SetParagraph(NpoiWordParagraphTextStyleHelper._.SetTableParagraphInstanceSetting(document, firstXwpfTable, dfdjkdf, ParagraphAlignment.CENTER, 24, false));var qrzjy = new List<string>();qrzjy.Add("全日制");qrzjy.Add("教育");secoedXwpfTable.GetRow(row).GetCell(1).SetParagraph(NpoiWordParagraphTextStyleHelper._.SetTableParagraphInstanceSetting(document, firstXwpfTable, qrzjy, ParagraphAlignment.CENTER, 24, false));secoedXwpfTable.GetRow(row).GetCell(2).SetParagraph(NpoiWordParagraphTextStyleHelper._.SetTableParagraphInstanceSetting(document, firstXwpfTable, GetSystemDataByIdstring(model.FullTime_Education), ParagraphAlignment.LEFT, 24, false));var byyxxjzy = new List<string>();byyxxjzy.Add("毕业院校");byyxxjzy.Add("系及专业");secoedXwpfTable.GetRow(row).GetCell(3).SetParagraph(NpoiWordParagraphTextStyleHelper._.SetTableParagraphInstanceSetting(document, firstXwpfTable, byyxxjzy, ParagraphAlignment.CENTER, 24, false));secoedXwpfTable.GetRow(row).GetCell(4).SetParagraph(NpoiWordParagraphTextStyleHelper._.SetTableParagraphInstanceSetting(document, firstXwpfTable, model.FullTime_University + "/" + model.FullTime_Profession, ParagraphAlignment.LEFT, 35, false));secoedXwpfTable.GetRow(row).GetCell(0).SetVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);secoedXwpfTable.GetRow(row).GetCell(1).SetVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);secoedXwpfTable.GetRow(row).GetCell(3).SetVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);row++;secoedXwpfTable.GetRow(row).Height = 45 * 20;//Table 表格第六行secoedXwpfTable.GetRow(row).GetCell(0).SetParagraph(NpoiWordParagraphTextStyleHelper._.SetTableParagraphInstanceSetting(document, firstXwpfTable, "", ParagraphAlignment.CENTER, 30, false));secoedXwpfTable.GetRow(row).GetCell(1).SetParagraph(NpoiWordParagraphTextStyleHelper._.SetTableParagraphInstanceSetting(document, firstXwpfTable, "在职教育", ParagraphAlignment.CENTER, 24, false));secoedXwpfTable.GetRow(row).GetCell(2).SetParagraph(NpoiWordParagraphTextStyleHelper._.SetTableParagraphInstanceSetting(document, firstXwpfTable, GetSystemDataByIdstring(model.OnWork_Education), ParagraphAlignment.LEFT, 24, false));//var byyxxjzy = new List<string>();//byyxxjzy.Add("毕业院校");//byyxxjzy.Add("系及专业");secoedXwpfTable.GetRow(row).GetCell(3).SetParagraph(NpoiWordParagraphTextStyleHelper._.SetTableParagraphInstanceSetting(document, firstXwpfTable, byyxxjzy, ParagraphAlignment.CENTER, 24, false));secoedXwpfTable.GetRow(row).GetCell(4).SetParagraph(NpoiWordParagraphTextStyleHelper._.SetTableParagraphInstanceSetting(document, firstXwpfTable, model.OnWork_University + "/" + model.OnWork_Profession, ParagraphAlignment.LEFT, 24, false));secoedXwpfTable.GetRow(row).GetCell(0).SetVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);secoedXwpfTable.GetRow(row).GetCell(1).SetVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);secoedXwpfTable.GetRow(row).GetCell(3).SetVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);NpoiWordParagraphTextStyleHelper._.MergeVertically(secoedXwpfTable, 0, 0, row);//合并列#endregion#region 文档第三个个表格对象实例XWPFTable thirdXwpfTable2 = document.CreateTable(1, 2);//显示的行列数rows:5行,cols:7列thirdXwpfTable2.Width = 5250;//总宽度thirdXwpfTable2.SetColumnWidth(0, 1450); /* 设置列宽 */thirdXwpfTable2.SetColumnWidth(1, 3800); /* 设置列宽 */row = 0;thirdXwpfTable2.GetRow(row).Height = 30 * 20;//Table 表格第行thirdXwpfTable2.GetRow(row).GetCell(0).SetParagraph(NpoiWordParagraphTextStyleHelper._.SetTableParagraphInstanceSetting(document, firstXwpfTable, "现  任  职  务", ParagraphAlignment.CENTER, 35, false));thirdXwpfTable2.GetRow(row).GetCell(1).SetParagraph(NpoiWordParagraphTextStyleHelper._.SetTableParagraphInstanceSetting(document, firstXwpfTable, GetSystemDataByIdstring(model.Duty), ParagraphAlignment.LEFT, 35, false));thirdXwpfTable2.GetRow(row).GetCell(0).SetVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);thirdXwpfTable2.GetRow(row).GetCell(1).SetVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);XWPFTable thirdXwpfTable = document.CreateTable(3, 7);//显示的行列数rows:5行,cols:7列thirdXwpfTable.Width = 5250;//总宽度thirdXwpfTable.SetColumnWidth(0, 700); /* 设置列宽 */thirdXwpfTable.SetColumnWidth(1, 750); /* 设置列宽 */thirdXwpfTable.SetColumnWidth(2, 750); /* 设置列宽 */thirdXwpfTable.SetColumnWidth(3, 750); /* 设置列宽 */thirdXwpfTable.SetColumnWidth(4, 800); /* 设置列宽 */thirdXwpfTable.SetColumnWidth(5, 750); /* 设置列宽 */thirdXwpfTable.SetColumnWidth(6, 750); /* 设置列宽 */row = 0;thirdXwpfTable.GetRow(row).Height = 210 * 20;//Table 表格行var jdkfd = new List<string>();jdkfd.Add("简");jdkfd.Add("");jdkfd.Add("");jdkfd.Add("");jdkfd.Add("历");thirdXwpfTable.GetRow(row).GetCell(0).SetParagraph(NpoiWordParagraphTextStyleHelper._.SetTableParagraphInstanceSetting(document, firstXwpfTable, jdkfd, ParagraphAlignment.CENTER, 24, false));thirdXwpfTable.GetRow(row).GetCell(1).SetParagraph(NpoiWordParagraphTextStyleHelper._.SetTableParagraphInstanceSetting(document, firstXwpfTable, model.Resume, ParagraphAlignment.LEFT, 24, false));thirdXwpfTable.GetRow(row).MergeCells(1, 6);//合并thirdXwpfTable.GetRow(row).GetCell(0).SetVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);var Rewardspunishments = new List<string>();//Rewardspunishments = model.PersonalRewardsAndPunishments.OrderBy(p=>p.YearOrDate).FirstOrDefault()?.Infos;foreach (var item in model.PersonalRewardsAndPunishments){Rewardspunishments.Add(GetDataTimeString(item.YearOrDate) + "  " + item.Infos);}row++;thirdXwpfTable.GetRow(row).Height = 160 * 20;//Table 表格行var jcqk = new List<string>();jcqk.Add("奖");jcqk.Add("惩");jcqk.Add("情");jcqk.Add("况");thirdXwpfTable.GetRow(row).GetCell(0).SetParagraph(NpoiWordParagraphTextStyleHelper._.SetTableParagraphInstanceSetting(document, firstXwpfTable, jcqk, ParagraphAlignment.CENTER, 24, false));thirdXwpfTable.GetRow(row).GetCell(1).SetParagraph(NpoiWordParagraphTextStyleHelper._.SetTableParagraphInstanceSetting(document, firstXwpfTable, Rewardspunishments, ParagraphAlignment.LEFT, 24, false));thirdXwpfTable.GetRow(row).MergeCells(1, 6);//合并thirdXwpfTable.GetRow(row).GetCell(0).SetVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);var PersonalAnnualAssessmentResults = new List<string>();var PersonalResult = _systemTypeService.GetSystemTypeList("3c2114dc-f042-4c70-b9db-b532f56d89d2");//PersonalAnnualAssessmentResults = model.PersonalAnnualAssessmentResults.OrderBy(p => p.YearOrDate).FirstOrDefault()?.Infos;foreach (var item in model.PersonalAnnualAssessmentResults){PersonalAnnualAssessmentResults.Add(item.Years + "年:  " + PersonalResult.FirstOrDefault(p => p.id == item.Results)?.name + "");}row++;thirdXwpfTable.GetRow(row).Height = 80 * 20;//Table 表格行var ndksjg = new List<string>();ndksjg.Add("年度");ndksjg.Add("考试");ndksjg.Add("结果");thirdXwpfTable.GetRow(row).GetCell(0).SetParagraph(NpoiWordParagraphTextStyleHelper._.SetTableParagraphInstanceSetting(document, firstXwpfTable, ndksjg, ParagraphAlignment.CENTER, 24, false));thirdXwpfTable.GetRow(row).GetCell(1).SetParagraph(NpoiWordParagraphTextStyleHelper._.SetTableParagraphInstanceSetting(document, firstXwpfTable, PersonalAnnualAssessmentResults, ParagraphAlignment.LEFT, 24, false));thirdXwpfTable.GetRow(row).MergeCells(1, 6);//合并thirdXwpfTable.GetRow(row).GetCell(0).SetVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);#endregion#region 文档第四个个表格对象实例int fourth_rows = 7;if (model.PersonalFamilyMembers.Count() >= fourth_rows){fourth_rows = model.PersonalFamilyMembers.Count() + 1;}XWPFTable fourthXwpfTable = document.CreateTable(fourth_rows, 6);//显示的行列数rows:5行,cols:7列fourthXwpfTable.Width = 5250;//总宽度fourthXwpfTable.SetColumnWidth(0, 700); /* 设置列宽 */fourthXwpfTable.SetColumnWidth(1, 750); /* 设置列宽 */fourthXwpfTable.SetColumnWidth(2, 750); /* 设置列宽 */fourthXwpfTable.SetColumnWidth(3, 750); /* 设置列宽 */fourthXwpfTable.SetColumnWidth(4, 800); /* 设置列宽 */fourthXwpfTable.SetColumnWidth(5, 1500); /* 设置列宽 */row = 0;fourthXwpfTable.GetRow(row).Height = 30 * 20;//Table 表格行var jtzycyjzyshgx = new List<string>();jtzycyjzyshgx.Add("家");jtzycyjzyshgx.Add("庭");jtzycyjzyshgx.Add("主");jtzycyjzyshgx.Add("要");jtzycyjzyshgx.Add("成");jtzycyjzyshgx.Add("员");jtzycyjzyshgx.Add("及");jtzycyjzyshgx.Add("重");jtzycyjzyshgx.Add("要");jtzycyjzyshgx.Add("社");jtzycyjzyshgx.Add("会");jtzycyjzyshgx.Add("关");jtzycyjzyshgx.Add("系");fourthXwpfTable.GetRow(row).GetCell(0).SetParagraph(NpoiWordParagraphTextStyleHelper._.SetTableParagraphInstanceSetting(document, firstXwpfTable, jtzycyjzyshgx, ParagraphAlignment.CENTER, 6, false));fourthXwpfTable.GetRow(row).GetCell(1).SetParagraph(NpoiWordParagraphTextStyleHelper._.SetTableParagraphInstanceSetting(document, firstXwpfTable, "称 谓", ParagraphAlignment.CENTER, 30, false));fourthXwpfTable.GetRow(row).GetCell(2).SetParagraph(NpoiWordParagraphTextStyleHelper._.SetTableParagraphInstanceSetting(document, firstXwpfTable, "姓 名", ParagraphAlignment.CENTER, 30, false));fourthXwpfTable.GetRow(row).GetCell(3).SetParagraph(NpoiWordParagraphTextStyleHelper._.SetTableParagraphInstanceSetting(document, firstXwpfTable, "年龄", ParagraphAlignment.CENTER, 30, false));fourthXwpfTable.GetRow(row).GetCell(4).SetParagraph(NpoiWordParagraphTextStyleHelper._.SetTableParagraphInstanceSetting(document, firstXwpfTable, "政治面貌", ParagraphAlignment.CENTER, 30, false));fourthXwpfTable.GetRow(row).GetCell(5).SetParagraph(NpoiWordParagraphTextStyleHelper._.SetTableParagraphInstanceSetting(document, firstXwpfTable, "工 作 单 位 及 职 务", ParagraphAlignment.CENTER, 30, false));fourthXwpfTable.GetRow(row).GetCell(0).SetVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);fourthXwpfTable.GetRow(row).GetCell(1).SetVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);fourthXwpfTable.GetRow(row).GetCell(2).SetVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);fourthXwpfTable.GetRow(row).GetCell(3).SetVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);fourthXwpfTable.GetRow(row).GetCell(4).SetVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);fourthXwpfTable.GetRow(row).GetCell(5).SetVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);var list_Political = _systemTypeService.GetSystemDataByGuid("c2cfd640-03e8-4498-906e-87e3a40d5ed5");//政治面貌string plll = "";// 家庭主要成员及重要社会关系foreach (var item in model.PersonalFamilyMembers){row++;fourthXwpfTable.GetRow(row).Height = 30 * 20;plll = list_Political.FirstOrDefault(p => item.Political == p.value)?.label;if (plll == null){plll = "";}fourthXwpfTable.GetRow(row).GetCell(1).SetParagraph(NpoiWordParagraphTextStyleHelper._.SetTableParagraphInstanceSetting(document, firstXwpfTable, item.Appellation, ParagraphAlignment.CENTER, 24, false));fourthXwpfTable.GetRow(row).GetCell(2).SetParagraph(NpoiWordParagraphTextStyleHelper._.SetTableParagraphInstanceSetting(document, firstXwpfTable, item.Name, ParagraphAlignment.CENTER, 24, false));fourthXwpfTable.GetRow(row).GetCell(3).SetParagraph(NpoiWordParagraphTextStyleHelper._.SetTableParagraphInstanceSetting(document, firstXwpfTable, "" + GetAgeByBirthdate(item.Birthday), ParagraphAlignment.CENTER, 24, false));fourthXwpfTable.GetRow(row).GetCell(4).SetParagraph(NpoiWordParagraphTextStyleHelper._.SetTableParagraphInstanceSetting(document, firstXwpfTable, plll, ParagraphAlignment.CENTER, 24, false));fourthXwpfTable.GetRow(row).GetCell(5).SetParagraph(NpoiWordParagraphTextStyleHelper._.SetTableParagraphInstanceSetting(document, firstXwpfTable, item.Unit + "/" + item.Duty, ParagraphAlignment.CENTER, 24, false));fourthXwpfTable.GetRow(row).GetCell(1).SetVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);fourthXwpfTable.GetRow(row).GetCell(2).SetVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);fourthXwpfTable.GetRow(row).GetCell(3).SetVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);fourthXwpfTable.GetRow(row).GetCell(4).SetVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);fourthXwpfTable.GetRow(row).GetCell(5).SetVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);}for (int i = row; i < fourth_rows; i++){fourthXwpfTable.GetRow(i).Height = 30 * 20;fourthXwpfTable.GetRow(i).GetCell(1).SetVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);fourthXwpfTable.GetRow(i).GetCell(2).SetVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);fourthXwpfTable.GetRow(i).GetCell(3).SetVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);fourthXwpfTable.GetRow(i).GetCell(4).SetVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);fourthXwpfTable.GetRow(i).GetCell(5).SetVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);}NpoiWordParagraphTextStyleHelper._.MergeVertically(fourthXwpfTable, 0, 0, fourth_rows - 1);//合并列#endregionstring checkTime = DateTime.Now.ToString("yyyy年MM月dd日");//检查时间// TODO: 这里一行需要显示文本document.SetParagraph(NpoiWordParagraphTextStyleHelper._.ParagraphInstanceSetting(document, $"时间: {checkTime}", false, 14, "宋体", ParagraphAlignment.RIGHT, true, ""), 1);//向文档流中写入内容,生成worddocument.Write(stream);savePath = uploadPath + fileName;}//SaveWordFile(out savePath);return Success(200, "导出成功", savePath);}catch (Exception e){return Fail(201, e.Message);}}

前端js

 // 导出调用的方法exportbtn() {// var id = this.form.idvar id = this.$route.query.id// 请求后端接口PersonalInfoExport({ ID: id }).then(response => {if (response.code === 200) {// 导出成功var pathurl = process.env.VUE_APP_BASE_API + '/' + response.dataconsole.log(pathurl)var link = document.createElement('a')link.style.display = 'none'link.href = pathurllink.setAttribute('download', '干部信息表.docx')document.body.appendChild(link)link.click()}})},

导出后的效果预览


一个实用的帮助类(NPOI的简单封装)

using NPOI.OpenXmlFormats.Wordprocessing;
using NPOI.XWPF.UserModel;
using System;
using System.Collections.Generic;
using System.Text;namespace Infrastructure.Util
{public class NpoiWordParagraphTextStyleHelper{private static NpoiWordParagraphTextStyleHelper _exportHelper;public static NpoiWordParagraphTextStyleHelper _{get => _exportHelper ?? (_exportHelper = new NpoiWordParagraphTextStyleHelper());set => _exportHelper = value;}/// <summary>/// 创建word文档中的段落对象和设置段落文本的基本样式(字体大小,字体,字体颜色,字体对齐位置)/// </summary>/// <param name="document">document文档对象</param>/// <param name="fillContent">段落第一个文本对象填充的内容</param>/// <param name="isBold">是否加粗</param>/// <param name="fontSize">字体大小</param>/// <param name="fontFamily">字体</param>/// <param name="paragraphAlign">段落排列(左对齐,居中,右对齐)</param>/// <param name="isStatement">是否在同一段落创建第二个文本对象(解决同一段落里面需要填充两个或者多个文本值的情况,多个文本需要自己拓展,现在最多支持两个)</param>/// <param name="secondFillContent">第二次声明的文本对象填充的内容,样式与第一次的一致</param>/// <param name="fontColor">字体颜色--十六进制</param>/// <param name="isItalic">是否设置斜体(字体倾斜)</param>/// <returns></returns>public XWPFParagraph ParagraphInstanceSetting(XWPFDocument document, string fillContent, bool isBold, int fontSize, string fontFamily, ParagraphAlignment paragraphAlign, bool isStatement = false, string secondFillContent = "", string fontColor = "000000", bool isItalic = false){XWPFParagraph paragraph = document.CreateParagraph();//创建段落对象paragraph.Alignment = paragraphAlign;//文字显示位置,段落排列(左对齐,居中,右对齐)paragraph.VerticalAlignment = TextAlignment.CENTER;XWPFRun xwpfRun = paragraph.CreateRun();//创建段落文本对象xwpfRun.IsBold = isBold;//文字加粗xwpfRun.SetText(fillContent);//填充内容xwpfRun.FontSize = fontSize;//设置文字大小xwpfRun.IsItalic = isItalic;//是否设置斜体(字体倾斜)xwpfRun.SetColor(fontColor);//设置字体颜色--十六进制xwpfRun.SetFontFamily(fontFamily, FontCharRange.None); //设置标题样式如:(微软雅黑,隶书,楷体)根据自己的需求而定if (!isStatement) return paragraph;XWPFRun secondXwpfRun = paragraph.CreateRun();//创建段落文本对象secondXwpfRun.IsBold = isBold;//文字加粗secondXwpfRun.SetText(secondFillContent);//填充内容secondXwpfRun.FontSize = fontSize;//设置文字大小secondXwpfRun.IsItalic = isItalic;//是否设置斜体(字体倾斜)secondXwpfRun.SetColor(fontColor);//设置字体颜色--十六进制secondXwpfRun.SetFontFamily(fontFamily, FontCharRange.None); //设置标题样式如:(微软雅黑,隶书,楷体)根据自己的需求而定return paragraph;}/// <summary> /// 创建Word文档中表格段落实例和设置表格段落文本的基本样式(字体大小,字体,字体颜色,字体对齐位置)/// </summary> /// <param name="document">document文档对象</param> /// <param name="table">表格对象</param> /// <param name="fillContent">要填充的文字</param> /// <param name="paragraphAlign">段落排列(左对齐,居中,右对齐)</param>/// <param name="textPosition">设置文本位置(设置两行之间的行间,从而实现表格文字垂直居中的效果),从而实现table的高度设置效果 </param>/// <param name="isBold">是否加粗(true加粗,false不加粗)</param>/// <param name="fontSize">字体大小</param>/// <param name="fontColor">字体颜色--十六进制</param>/// <param name="isItalic">是否设置斜体(字体倾斜)</param>/// <returns></returns> public XWPFParagraph SetTableParagraphInstanceSetting(XWPFDocument document, XWPFTable table, string fillContent, ParagraphAlignment paragraphAlign, int textPosition = 24, bool isBold = false, int fontSize = 12, string fontColor = "000000", bool isItalic = false){var para = new CT_P();//设置单元格文本对齐para.AddNewPPr().AddNewTextAlignment();XWPFParagraph paragraph = new XWPFParagraph(para, table.Body);//创建表格中的段落对象paragraph.Alignment = paragraphAlign;//文字显示位置,段落排列(左对齐,居中,右对齐)//paragraph.VerticalAlignment = TextAlignment.CENTER;//paragraph.FontAlignment =Convert.ToInt32(ParagraphAlignment.CENTER);//字体在单元格内显示位置与 paragraph.Alignment效果相似XWPFRun xwpfRun = paragraph.CreateRun();//创建段落文本对象xwpfRun.SetText(fillContent);xwpfRun.FontSize = fontSize;//字体大小xwpfRun.SetColor(fontColor);//设置字体颜色--十六进制xwpfRun.IsItalic = isItalic;//是否设置斜体(字体倾斜)xwpfRun.IsBold = isBold;//是否加粗xwpfRun.SetFontFamily("宋体", FontCharRange.None);//设置字体(如:微软雅黑,华文楷体,宋体)//xwpfRun.SetTextPosition(textPosition);//设置文本位置(设置两行之间的行间),从而实现table的高度设置效果 return paragraph;}/// <summary>/// 创建Word文档中表格段落实例和设置表格段落文本的基本样式(字体大小,字体,字体颜色,字体对齐位置)/// document文档对象/// 表格对象/// 要填充的文字/// 段落排列(左对齐,居中,右对齐)/// 设置文本位置(设置两行之间的行间),从而实现table的高度设置效果 /// 是否加粗(true加粗,false不加粗)/// 字体大小/// </summary>/// <param name="table"></param>/// <param name="fillContent"></param>/// <param name="paragraphAlign"></param>/// <param name="rowsHeight"></param>/// <param name="isBold"></param>/// <param name="fontSize"></param>/// <returns></returns>public XWPFParagraph SetTableParagraphInstanceSetting(XWPFDocument document, XWPFTable table, List<string> fillContent, ParagraphAlignment paragraphAlign, int rowsHeight = 24, bool isBold = false, int fontSize = 12, string fontColor = "000000", bool isItalic = false){var para = new CT_P();XWPFParagraph paragraph = new XWPFParagraph(para, table.Body);//创建表格中的段落对象paragraph.Alignment = paragraphAlign;//文字显示位置,段落排列(左对齐,居中,右对齐)paragraph.VerticalAlignment = TextAlignment.CENTER;XWPFRun xwpfRun = paragraph.CreateRun();//创建段落文本对象int index = 0;foreach (var item in fillContent){if (index > 0){xwpfRun.AddBreak(BreakType.TEXTWRAPPING);//换行TEXTWRAPPING//xwpfRun.AddTab();}xwpfRun.SetText(item,index);index++;}xwpfRun.FontSize = fontSize;//字体大小xwpfRun.SetColor(fontColor);//设置字体颜色--十六进制xwpfRun.IsItalic = isItalic;//是否设置斜体(字体倾斜)xwpfRun.IsBold = isBold;//是否加粗xwpfRun.SetFontFamily("宋体", FontCharRange.None);//设置字体(如:微软雅黑,华文楷体,宋体)//xwpfRun.SetTextPosition(rowsHeight);//设置文本位置(设置两行之间的行间),从而实现table的高度设置效果return paragraph;}/// <summary>/// 合并列/// </summary>/// <param name="table"></param>/// <param name="col"></param>/// <param name="fromRow"></param>/// <param name="toRow"></param>public void MergeVertically(XWPFTable table, int col, int fromRow, int toRow){for (int rowIndex = fromRow; rowIndex <= toRow; rowIndex++){XWPFTableCell cell = table.GetRow(rowIndex).GetCell(col);if (rowIndex == fromRow){cell.GetCTTc().AddNewTcPr().AddNewVMerge().val = ST_Merge.restart;}else{cell.GetCTTc().AddNewTcPr().AddNewVMerge().val = ST_Merge.@continue;}}//合并后垂直居中table.GetRow(fromRow).GetCell(col).SetVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);}/// <summary>/// 合并行/// </summary>/// <param name="table"></param>/// <param name="row"></param>/// <param name="fromCell"></param>/// <param name="toCell"></param>public void MergeHorizontal(XWPFTable table, int row, int fromCell, int toCell){for (int cellIndex = fromCell; cellIndex <= toCell; cellIndex++){XWPFTableCell cell = table.GetRow(row).GetCell(cellIndex);if (cellIndex == fromCell){cell.GetCTTc().AddNewTcPr().AddNewHMerge().val = ST_Merge.restart;}else{cell.GetCTTc().AddNewTcPr().AddNewHMerge().val = ST_Merge.@continue;}}//合并后垂直居中table.GetRow(row).GetCell(fromCell).SetVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);}}
}

NPOI 生成word文档相关推荐

  1. npoi word生成HTML,C# 使用NPOI生成Word文档(按照模板)

    项目需要集成word导出,做的时候网上文档资源不是很多,也比较杂乱,所以查了查,整理了整理,做个记录,也顺便把NPOI操作Word文档的一些基本操作分享给有需要的朋友. 本篇包括生成Word对word ...

  2. C#、NPOI生成Word文档(模板)

    项目需要集成word导出,做的时候网上文档资源不是很多,也比较杂乱,所以查了查,整理了整理,做个记录,也顺便把NPOI操作Word文档的一些基本操作分享给有需要的朋友. 本篇包括生成Word对word ...

  3. Sql Server 生成 Word 文档 表结构

    打开数据库编辑器,输入以下代码并执行(F5) SELECT--表名 = case when a.colorder=1 then d.name else '' end,--表说明 = case when ...

  4. php导出doc文件_PHP生成Word文档的方法

    PHP生成Word文档的方法 首先,请确保在你的Windows系统中已经安装并配置好了一个典型的WAMP环境.由于Interop纯粹是一个Windows的特性,我们将在Windows平台下搭建Apac ...

  5. php 内容自动生成word文档,php生成word文档的例子

    /** * 生成word文档 * * @param string $html 内容部分 * @param string $file 文件名称 * @param string $code 当前文件编码, ...

  6. 将HTML导出生成word文档

    前言: 项目开发中遇到了需要将HTML页面的内容导出为一个word文档,所以有了这边随笔. 当然,项目开发又时间有点紧迫,第一时间想到的是用插件,所以百度了下.下面就介绍两个导出word文档的方法. ...

  7. 用Aspose.Words for .NET动态生成word文档中的图片或水印

    1.概述 在项目中生成word文档,这个功能很普遍的,一般生成都是纯文字或是列表的比较多,便于客户打印,而要把图片也生成到word文档中的需求有些客户也是需要的,例如产品图片.这次我们介绍的是如何利用 ...

  8. python读取word指定内容_python解析html提取数据,并生成word文档实例解析

    简介 今天试着用ptyhon做了一个抓取网页内容,并生成word文档的功能,功能很简单,做一下记录以备以后用到. 生成word用到了第三方组件python-docx,所以先进行第三方组件的安装.由于w ...

  9. java 导出word换行_Java 导出数据库表信息生成Word文档

    一.前言 最近看见朋友写了一个导出数据库生成word文档的业务,感觉很有意思,研究了一下,这里也拿出来与大家分享一波~ 先来看看生成的word文档效果吧 下面我们也来一起简单的实现吧 二.Java 导 ...

最新文章

  1. 重磅直播 | 多传感器标定原理及方案介绍(阿里云AI Lab)
  2. 这代码她不美吗?——试题 基础练习 十六进制转八进制
  3. 手机是怎么确定位置信息的?
  4. 【Pytorch神经网络实战案例】26 MaskR-CNN内置模型实现目标检测
  5. Winform窗体中发送HTTP请求 手工发送HTTP请求主要是调用 System.Net的HttpWebResponse方法
  6. python逻辑运算的一些流程图_Python大牛历时一个月打造的Python系统学习流程图,超详细!...
  7. 电子信息工程专业概论_本科专业介绍 | 电子信息工程
  8. 阿里内部信公开,月饼事件“神秘第五人”被开除,他是谁?
  9. 网站服务器域名费用入什么科目,企业域名服务费记什么科目
  10. 优秀的程序员真的不写注释吗?
  11. 极验验证——滑块拼图验证码
  12. Ramnit感染型病毒分析与处置
  13. html字大小自适应,html字体大小自适应 怎样让HTML字体自适应到移动端?
  14. 最适合0基础入门的5种编程语言
  15. 读 S. Meyers 之《Effective C++:改善程序与设计的55个具体做法:第3版》
  16. 电动汽车电气及动力系统全解析
  17. create connection SQLException, url: jdbc:mysqlAccess denied for user ‘CC‘@‘localhost‘ (using passwo
  18. 【思维与逻辑】有1000瓶药水,但其中有一瓶毒药水,需要多少只小白鼠?
  19. JDK密钥证书管理工具keystore
  20. 复旦大学新冠肺炎防控第一课——尔雅答案

热门文章

  1. 机器人餐厅开始遍地开花!这才是你要的浪漫晚餐 | 聚焦
  2. 云原生到底是什么?它会是未来发展的趋势吗?
  3. 利用chromeDevTools的Performance面板进行性能分析调优
  4. 浅谈“语音交友”软件的发展
  5. 关于安装谷歌浏览器的插件的说明
  6. 逆水寒大型MMO项目UI管理的价值与责任
  7. GrapeCity Documents for Excel:GcExcel 5.1.0
  8. 摩托me525 root并精简系统后出现问题
  9. 摘要/哈希/散列算法MD5 SHA1 SHA256 SHA512的区别和MAC算法
  10. 【译】.NET 7 中的性能改进(一)