首先安装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(, );//创建一行3列表
table.GetRow().GetCell().SetText("");
table.GetRow().GetCell().SetText("");
table.GetRow().GetCell().SetText(""); XWPFTableRow m_Row = table.CreateRow();//创建一行
m_Row = table.CreateRow();//创建一行
m_Row.GetCell().SetText(""); //合并单元格
m_Row = table.InsertNewTableRow();//表头插入一行
XWPFTableCell cell = m_Row.CreateCell();//创建一个单元格,创建单元格时就创建了一个CT_P
CT_Tc cttc = cell.GetCTTc();
CT_TcPr ctPr = cttc.AddNewTcPr();
ctPr.AddNewGridspan();
ctPr.gridSpan.val = "";//合并3列
cttc.GetPList()[].AddNewPPr().AddNewJc().val = ST_Jc.center;
cttc.GetPList()[].AddNewR().AddNewT().Value = "abc"; XWPFTableRow td3 = table.InsertNewTableRow(table.Rows.Count - );//插入行
cell = td3.CreateCell();
cttc = cell.GetCTTc();
ctPr = cttc.AddNewTcPr();
ctPr.AddNewGridspan();
ctPr.gridSpan.val = "";//合并3列
cttc.GetPList()[].AddNewPPr().AddNewJc().val = ST_Jc.center;
cttc.GetPList()[].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列
cttc.GetPList()[].AddNewPPr().AddNewJc().val = ST_Jc.center;
cttc.GetPList()[].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 = "";//合并3列
ctPr.AddNewVMerge().val = ST_Merge.restart;//合并行
ctPr.AddNewVAlign().val = ST_VerticalJc.center;//垂直居中
cttc.GetPList()[].AddNewPPr().AddNewJc().val = ST_Jc.center;
cttc.GetPList()[].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 = "";//合并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, , data.Length);
fs.Flush();
data = null;
}
}
}
}

利用NPOI生成DOCX文档的更多相关文章

  1. 利用NPOI生成word文档(c#)

    WordTest.aspx.cs using System; using System.IO; using System.Text; using System.Web; using System.We ...

  2. 黄聪:利用OpenXml生成Word2007文档(转)

    原文:http://blog.csdn.net/francislaw/article/details/7568317 版权声明:本文为博主原创文章,未经博主允许不得转载.   目录(?)[-] 一Op ...

  3. 利用OpenXml生成Word2007文档

    一.OpenXml简介 利用C#生成Word文档并非一定要利用OpenXml技术,至少可以使用微软提供的Office相关组件来编程,不过对于Office2007(确切的说是Word.Excel和Pow ...

  4. 利用java从docx文档中提取文本内容

    利用java从docx文档中提取文本内容 使用Apache的第三方jar包,地址为https://poi.apache.org/ docx文档内容如图: 目录结构: 每个文件夹的名称为日期加上来源,例 ...

  5. qt 利用 HTML 生成PDF文档,不能显示jpg图片

    利用 QPrinter 和html 生成 pdf文档 其中用html语句有显示图片的语句 但只能显示png格式的图片,不能显示jpg格式图片. 经过排查:语法,文件路径等都正确,最终在stack ov ...

  6. python 解析docx文档的方法,以及利用Python从docx文档提取插入的文本对象和图片

    首先安装docx模块,通过pip install docx或者在docx官方链接上下载安装都可以 下面来看下如何解析docx文档:文档格式如下 有3个部分组成 1 正文:text文档 2 一个表格. ...

  7. MVC架构下,使用NPOI读取.DOCX文档中表格的内容

    1.使用NPOI,可以在没有安装office的设备上读wiod.office.2.本文只能读取.docx后缀的文档.3.MVC架构中,上传文件只能使用form表单提交,转到控制器后要依次实现文件上传. ...

  8. 利用typescript生成Swagger文档

    项目地址:https://github.com/wz2cool/swagger-ts-doc demo代码地址:https://github.com/wz2cool/swagger-ts-doc-de ...

  9. 利用NPOI导出Word文档帮助类

    /// <summary> /// NPOI操作Word /// </summary> public class NpoiWordHelper { /// <summar ...

随机推荐

  1. Git之同一台电脑如何连接多个远程仓库

    Git之同一台电脑如何连接多个远程仓库 一.总结 一句话总结: 1.git使用.git目录里面的内容(ssh或用户名密码)来自动和远程仓库通信 2.在不同的仓库中配置不同的.git目录,可以连接不同的 ...

  2. require.js的用法详解

    require.js的诞生是为了解决两大问题,第一实现js文件的异步加载,避免网页失去响应,第二管理模块之间的依赖性,便于代码的编写和维护. 一.为什么要用require.js? 最早的时候,所有Ja ...

  3. 记排查octopress生成时的编码错误

    前些日子经若亮童鞋提醒,我在其他推荐的页面中增加了对 Dropbox 和 Linode 等工具的推荐,一来分享这些好用的产品,二来期望刚接触这些工具的好心的朋友可以不吝啬时间用我的推荐码注册,让我获得 ...

  4. Hibernate综合问题

    n + 1问题 query.iterate()信息返回迭代查询将开始发表声明:录ID语句 Hibernate: select student0_.id ascol_0_0_from t_student ...

  5. svg查看预览 , 鼠标控制放大缩小 , 托拉拽等

    自己写是不可能了 , 所以要借用插件 svg-panzoom.js 地址 : https://github.com/ariutta/svg-pan-zoom#demos 及常见问题https://ww ...

  6. 10g RAC 采用service达到taf

    service由于oracle数据库中的一个关键概念,利用得当,可以轻松地管理数据库,提高数据库的工作效率. 经service.oracle可以实现server side  taf,简单化client ...

  7. http_load测试初阶

    http_load的标准的两个例子是: 1.         http_load -parallel 5 -fetches 1000 urls.txt 2.         http_load -ra ...

  8. Android中使用sqlite3操作SQLite

    SQLite库包含一个名字叫做sqlite3的命令行,它可以让用户手工输入并执行面向SQLite数据库的SQL命令.本文档提供一个样使用sqlite3的简要说明. 一.创建数据库:  1.将sqlit ...

  9. PHP正则表达式入门教程[转]

      思维导图 点击下图,可以看具体内容!     介绍          正则表达式,大家在开发中应该是经常用到,现在很多开发语言都有正则表达式的应用,比如javascript,java,.net,p ...

  10. 国家模式c++

    状态模式(State Pattern)是设计模式的一种,属于行为模式. 定义(源于Design Pattern):当一个对象的内在状态改变时同意改变其行为,这个对象看起来像是改变了其类. 状态模式主要 ...