NPOI導出word

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);
        }



    }
}

效果:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章