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);
}
}
}
效果: