zoukankan      html  css  js  c++  java
  • 利用NPOI生成DOCX文档

    首先安装NPOI控件:

    Install-Package NPOI

    代码:

    using NPOI.OpenXmlFormats.Wordprocessing;
    using NPOI.XWPF.UserModel;
    using System.IO;
    using System.Windows;
    
    namespace NPOIDemo
    {
        /// <summary>
        /// MainWindow.xaml 的交互逻辑
        /// </summary>
        public partial class MainWindow : Window
        {
            public MainWindow()
            {
                InitializeComponent();
            }
    
            private void Button_Click(object sender, RoutedEventArgs e)
            {
                MemoryStream ms = new MemoryStream();
                XWPFDocument m_Docx = new XWPFDocument();
                m_Docx = CreatDocxTable();
                m_Docx.Write(ms);
                ms.Flush();
                SaveToFile(ms, "d:\test.docx");
            }
    
            private XWPFDocument CreatDocxTable()
            {
                XWPFDocument m_Docx = new XWPFDocument();
                XWPFParagraph p0 = m_Docx.CreateParagraph();
                XWPFRun r0 = p0.CreateRun();
                r0.SetText("DOCX表");
    
                XWPFTable table = m_Docx.CreateTable(1, 3);//创建一行3列表  
                table.GetRow(0).GetCell(0).SetText("111");
                table.GetRow(0).GetCell(1).SetText("222");
                table.GetRow(0).GetCell(2).SetText("333");
    
                XWPFTableRow m_Row = table.CreateRow();//创建一行  
                m_Row = table.CreateRow();//创建一行  
                m_Row.GetCell(0).SetText("211");
    
                //合并单元格  
                m_Row = table.InsertNewTableRow(0);//表头插入一行  
                XWPFTableCell cell = m_Row.CreateCell();//创建一个单元格,创建单元格时就创建了一个CT_P  
                CT_Tc cttc = cell.GetCTTc();
                CT_TcPr ctPr = cttc.AddNewTcPr();
                ctPr.AddNewGridspan();
                ctPr.gridSpan.val = "3";//合并3列  
                cttc.GetPList()[0].AddNewPPr().AddNewJc().val = ST_Jc.center;
                cttc.GetPList()[0].AddNewR().AddNewT().Value = "abc";
    
                XWPFTableRow td3 = table.InsertNewTableRow(table.Rows.Count - 1);//插入行  
                cell = td3.CreateCell();
                cttc = cell.GetCTTc();
                ctPr = cttc.AddNewTcPr();
                ctPr.AddNewGridspan();
                ctPr.gridSpan.val = "3";//合并3列  
                cttc.GetPList()[0].AddNewPPr().AddNewJc().val = ST_Jc.center;
                cttc.GetPList()[0].AddNewR().AddNewT().Value = "qqq";
    
                //表增加行,合并列  
                CT_Row m_NewRow = new CT_Row();
                m_Row = new XWPFTableRow(m_NewRow, table);
                table.AddRow(m_Row); //必须要!!!  
                cell = m_Row.CreateCell();
                cttc = cell.GetCTTc();
                ctPr = cttc.AddNewTcPr();
                ctPr.AddNewGridspan();
                ctPr.gridSpan.val = "3";//合并3列  
                cttc.GetPList()[0].AddNewPPr().AddNewJc().val = ST_Jc.center;
                cttc.GetPList()[0].AddNewR().AddNewT().Value = "sss";
    
                //表未增加行,合并2列,合并2行  
                //1行  
                m_NewRow = new CT_Row();
                m_Row = new XWPFTableRow(m_NewRow, table);
                table.AddRow(m_Row);
                cell = m_Row.CreateCell();
                cttc = cell.GetCTTc();
                ctPr = cttc.AddNewTcPr();
                ctPr.AddNewGridspan();
                ctPr.gridSpan.val = "2";//合并3列  
                ctPr.AddNewVMerge().val = ST_Merge.restart;//合并行  
                ctPr.AddNewVAlign().val = ST_VerticalJc.center;//垂直居中  
                cttc.GetPList()[0].AddNewPPr().AddNewJc().val = ST_Jc.center;
                cttc.GetPList()[0].AddNewR().AddNewT().Value = "xxx";
                cell = m_Row.CreateCell();
                cell.SetText("ddd");
                //2行,多行合并类似  
                m_NewRow = new CT_Row();
                m_Row = new XWPFTableRow(m_NewRow, table);
                table.AddRow(m_Row);
                cell = m_Row.CreateCell();
                cttc = cell.GetCTTc();
                ctPr = cttc.AddNewTcPr();
                ctPr.AddNewGridspan();
                ctPr.gridSpan.val = "2";//合并3列  
                ctPr.AddNewVMerge().val = ST_Merge.@continue;//合并行  
                cell = m_Row.CreateCell();
                cell.SetText("kkk");
                ////3行  
                //m_NewRow = new CT_Row();  
                //m_Row = new XWPFTableRow(m_NewRow, table);  
                //table.AddRow(m_Row);  
                //cell = m_Row.CreateCell();  
                //cttc = cell.GetCTTc();  
                //ctPr = cttc.AddNewTcPr();  
                //ctPr.gridSpan.val = "2";  
                //ctPr.AddNewVMerge().val = ST_Merge.@continue;  
                //cell = m_Row.CreateCell();  
                //cell.SetText("hhh");  
    
                return m_Docx;
            }
    
            private void SaveToFile(MemoryStream ms, string fileName)
            {
                using (FileStream fs = new FileStream(fileName, FileMode.Create, FileAccess.Write))
                {
                    byte[] data = ms.ToArray();
    
                    fs.Write(data, 0, data.Length);
                    fs.Flush();
                    data = null;
                }
            }
        }
    }
  • 相关阅读:
    vue+antDesign 多个select下拉组件实现已选择项不可用(置灰)
    antd + vue 点击编辑文本切换成可编辑状态(附下拉框)
    antDesign的table组件设置行列样式
    jQuery 效果之显示隐藏
    jQuery 样式操作
    jQuery对象筛选选择器
    jQuery 和DOM对象互相转化方法
    JQuery-01-1
    常见网页特效
    WebApl-javescript-动画函数
  • 原文地址:https://www.cnblogs.com/wzwyc/p/9110441.html
Copyright © 2011-2022 走看看