NPOI导出word
using System; using System.Text; using System.Collections.Generic; using Microsoft.VisualStudio.TestTools.UnitTesting; using System.IO; namespace UnitTestProject1 { /// <summary> /// UnitTest3 的摘要说明 /// </summary> [TestClass] public class UnitTest3 { public UnitTest3() { // //TODO: 在此处添加构造函数逻辑 // } private TestContext testContextInstance; /// <summary> ///获取或设置测试上下文,该上下文提供 ///有关当前测试运行及其功能的信息。 ///</summary> public TestContext TestContext { get { return testContextInstance; } set { testContextInstance = value; } } [TestMethod] public void TestMethod1() { string title = "安全环保与技术监督研究院请示单";//行首标题 string t_applyDpartmentTitle = "申请人部门:";//申请人部门 string v_applyDpartment = "党群工作科"; string t_applyPerson = "申请人:";//申请人标题 string v_applyPerson = "李世民";//申请人,值 string t_articleTitle = "标题:";//文章标题 string v_articleTitle = "香港国安法实施,是否会将犯罪嫌疑人送内地审判?港澳办回应";//文章标题,值 string t_money = "预算金额:";//预算金额-标题 string v_money = "35000元";//预算金额-值 string content = @"近日,新宝骏首款新能源纯电动汽车E300、E300Plus通过线上直播的方式上市,厂家售价区间为6.48万元~8.48万元,此次新车共推出6款车型。并提供三座以及四座两种不同座椅布局,来满足对空间有多样化需求的消费者。 诞生于2019年4月11日的新宝骏,是上汽通用五菱实现历史累计产销突破2000万辆以后,继续往上突破发展,推出的一个全新自主品牌。 新宝骏旨在为当代生而互联的年轻人,提供更多元化的生活方式和低售价的交通出行工具。 外观方面,E300采用了辨识度很高的设计样式,运用了TWO - TONE双色设计的手法,视觉上将整车分为上下两个部分,营造出一种移动悬浮太空座舱效果。全系标配带高度可调及延时关闭功能的前大灯,同时独特的立式转向灯除为整车前脸带来科技的代入感外,还具有降低风阻作用,值得注意的是一般车辆风阻系数每降低0.01,NEDC综合续航里程将增加约8km,越低的风阻系数对续航里程越有帮助。 内饰部分,据新宝骏官方透露,整个内饰采用了大面积天然植物纤维材料,有效降低了类似传统汽车内饰材料所产生的甲醛等有害气体,材料运用方面很好契合了当下消费者对车内环保理念的需求。此外植物纤维材料还具有出色的抗划伤性、吸音隔音及保温性,对比传统搪塑材料或皮革内饰,还可让内饰至少减重10 %,重量的减轻对车辆巡航里程也会带来提升。近日,新宝骏首款新能源纯电动汽车E300、E300Plus通过线上直播的方式上市,厂家售价区间为6.48万元~8.48万元,此次新车共推出6款车型。并提供三座以及四座两种不同座椅布局,来满足对空间有多样化需求的消费者。 诞生于2019年4月11日的新宝骏,是上汽通用五菱实现历史累计产销突破2000万辆以后,继续往上突破发展,推出的一个全新自主品牌。 新宝骏旨在为当代生而互联的年轻人,提供更多元化的生活方式和低售价的交通出行工具。 外观方面,E300采用了辨识度很高的设计样式,运用了TWO - TONE双色设计的手法,视觉上将整车分为上下两个部分,营造出一种移动悬浮太空座舱效果。全系标配带高度可调及延时关闭功能的前大灯,同时独特的立式转向灯除为整车前脸带来科技的代入感外,还具有降低风阻作用,值得注意的是一般车辆风阻系数每降低0.01,NEDC综合续航里程将增加约8km,越低的风阻系数对续航里程越有帮助。 内饰部分,据新宝骏官方透露,整个内饰采用了大面积天然植物纤维材料,有效降低了类似传统汽车内饰材料所产生的甲醛等有害气体,材料运用方面很好契合了当下消费者对车内环保理念的需求。此外植物纤维材料还具有出色的抗划伤性、吸音隔音及保温性,对比传统搪塑材料或皮革内饰,还可让内饰至少减重10 %,重量的减轻对车辆巡航里程也会带来提升。"; //----NPOI导出word测试 //行首标题 NPOI.XWPF.UserModel.XWPFDocument doc = new NPOI.XWPF.UserModel.XWPFDocument(); NPOI.XWPF.UserModel.XWPFParagraph p0 = doc.CreateParagraph();//创建段落 p0.Alignment = NPOI.XWPF.UserModel.ParagraphAlignment.CENTER;//居中 NPOI.XWPF.UserModel.XWPFRun r0 = p0.CreateRun(); r0.IsCapitalized = true; r0.FontFamily = "宋体"; r0.FontSize = 11; r0.IsBold = true; r0.SetText(title); CreateRowTxt(doc, t_applyDpartmentTitle, v_applyDpartment); //申请人部门 CreateRowTxt(doc, t_applyPerson, v_applyPerson); //申请人 CreateRowTxt(doc, t_articleTitle, v_articleTitle); //文章标题 CreateRowTxt(doc, t_money, v_money); //预算金额 //空行 doc.CreateParagraph(); //文章正文内容 CreateRowTxt(doc, content); //空行 doc.CreateParagraph(); //审核意见 CreateRowTxt(doc, "审核意见", 10, true); //创建表格 List<string> titleRow = new List<string>(); titleRow.Add("流程"); titleRow.Add("审批人"); titleRow.Add("审批意见"); titleRow.Add("审批时间"); List<List<string>> dataRows = new List<List<string>>(); List<string> row2 = new List<string>(); row2.Add("基层审核"); row2.Add("李世民"); row2.Add("同意"); row2.Add("2020-7-1 15:20:26"); dataRows.Add(row2); List<string> row3 = new List<string>(); row3.Add("初审"); row3.Add("石达开"); row3.Add("同意"); row3.Add("2020-7-1 15:35:41"); dataRows.Add(row3); List<string> row4 = new List<string>(); row4.Add("终审"); row4.Add("欧阳艳"); row4.Add("同意"); row4.Add("2020-7-1 15:45:56"); dataRows.Add(row4); int rowCount = 4; int colCount = 4; NPOI.XWPF.UserModel.XWPFTable dt = doc.CreateTable(rowCount, colCount); //标题 for (int i = 0; i < colCount; i++) { var item = titleRow[i]; var graph = dt.GetRow(0).GetCell(i).AddParagraph(); //graph.SpacingAfter = 5; graph.setSpacingBetween(1, NPOI.XWPF.UserModel.LineSpacingRule.AUTO); NPOI.XWPF.UserModel.XWPFRun r_cell2 = graph.CreateRun(); r_cell2.IsBold = true; r_cell2.FontSize = 10; r_cell2.SetText(item); } //数据 for (int i = 0; i < dataRows.Count; i++) { var row = dataRows[i]; for (int k = 0; k < row.Count; k++) { var cellValue = row[k]; //dt.GetRow(i+1).GetCell(k).SetText(cellValue); var graph = dt.GetRow(i + 1).GetCell(k).AddParagraph(); graph.setSpacingBetween(1, NPOI.XWPF.UserModel.LineSpacingRule.AUTO);//上下边距 graph.IndentationLeft = 1; graph.IndentationRight = 1; graph.IndentFromLeft = 1; graph.IndentFromRight = 1; NPOI.XWPF.UserModel.XWPFRun r_cell2 = graph.CreateRun(); r_cell2.FontSize = 10; r_cell2.SetText(cellValue); System.Diagnostics.Debug.Write(cellValue + ","); } System.Diagnostics.Debug.WriteLine(" "); } //保存文件 System.IO.MemoryStream ms = new System.IO.MemoryStream(); doc.Write(ms); FileStream fileStream = new FileStream("d:/ayy_artilce.docx", FileMode.Create); byte[] bytes = ms.ToArray(); fileStream.Write(bytes, 0, bytes.Length); fileStream.Flush(); fileStream.Close(); fileStream.Dispose(); ms.Close(); ms.Dispose(); } public void CreateRowTxt(NPOI.XWPF.UserModel.XWPFDocument doc, string title, string value, int fontSize = 10) { NPOI.XWPF.UserModel.XWPFParagraph p1 = doc.CreateParagraph();//创建段落 p1.Alignment = NPOI.XWPF.UserModel.ParagraphAlignment.LEFT;//居中 //标题 ,文章头部基础信息 NPOI.XWPF.UserModel.XWPFRun r1 = p1.CreateRun(); r1.IsCapitalized = true;//大写 r1.FontFamily = "宋体"; r1.FontSize = fontSize; r1.IsBold = true; r1.SetText(title); //值 ,文章头部基础信息,不加粗 NPOI.XWPF.UserModel.XWPFRun v = p1.CreateRun(); v.FontFamily = "宋体"; v.FontSize = fontSize; v.AppendText(value); } public void CreateRowTxt(NPOI.XWPF.UserModel.XWPFDocument doc, string content, int fontSize = 10, bool isBold = false) { NPOI.XWPF.UserModel.XWPFParagraph p1 = doc.CreateParagraph();//创建段落 p1.Alignment = NPOI.XWPF.UserModel.ParagraphAlignment.LEFT;//居中 NPOI.XWPF.UserModel.XWPFRun r1 = p1.CreateRun(); r1.IsCapitalized = true;//大写 r1.FontFamily = "宋体"; r1.FontSize = fontSize; if (isBold) { r1.IsBold = isBold; } r1.SetText(content); } } }效果: