一、创建表格操作

private void btnExport_Click(object sender, EventArgs e)
{
var dbcontext = new BlogModel();
var list = dbcontext.ArticleInfos.ToList();
//创建document对象
XWPFDocument doc = new XWPFDocument();
//创建段落对象
XWPFParagraph p1 = doc.CreateParagraph();
//创建run对象
//本节提到的所有样式都是基于XWPFRun的,
//你可以把XWPFRun理解成一小段文字的描述对象,
//这也是Word文档的特征,即文本描述性文档。
//来自Tony Qu http://tonyqus.sinaapp.com/archives/609
XWPFRun r1 = p1.CreateRun();
r1.SetBold(true);
r1.SetText("数据导出demo");
r1.SetBold(true);
r1.SetFontFamily("Arial");//设置雅黑字体
//创建表格对象列数写死了,可根据自己需要改进或者自己想想解决方案
XWPFTable table = doc.CreateTable(list.Count(), );
for (int i = ; i < list.Count(); i++)
{
table.GetRow(i).GetCell().SetText(list[i].Id.ToString());
table.GetRow(i).GetCell().SetText(list[i].Title);
table.GetRow(i).GetCell().SetText(list[i].Content);
table.GetRow(i).GetCell().SetText(list[i].AddTime);
}
//保存文件到磁盘
FileStream out1 = new FileStream("simpleTable.docx", FileMode.Create);
doc.Write(out1);
out1.Close();
}

二、设定单元格宽度

   table.GetRow().GetCell().GetCTTc().AddNewTcPr().tcW.w = "";//单元格宽
table.GetRow().GetCell().GetCTTc().AddNewTcPr().tcW.type = ST_TblWidth.dxa; CT_TcPr ctPr = cttc.AddNewTcPr(); //添加TcPr
ctPr.tcW = new CT_TblWidth();
ctPr.tcW.w = "";//单元格宽
ctPr.tcW.type = ST_TblWidth.dxa;

三、复制单元格样式,复制行样式,创建新行

注:表格的行没有设置样式的地方,样式设置具体到了单元格

特别说明: 在表格SetText() 的时候不能传入null 值,尤其是字符串需要处理成“”

XWPFTableRow row4 = table.GetRow();
row4.GetCell().SetText(stu.JapanHistory??"");
static void TestWord2()
{
//1.读取word 文档
string tempPath = @"D:\QLWork\QL.Ohter\LiuXue.Web.CRM\数据库\pinggu.docx";
string targetPath = "D:\\test_pg.docx"; using (FileStream fs = new FileStream(tempPath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
{
XWPFDocument doc = new XWPFDocument(fs); //2.修改内容
//获取表格
CT_Tbl tbl = doc.Document.body.getTblArray().FirstOrDefault();
XWPFTable table = doc.GetTable(tbl);
//第一行
XWPFTableRow row0 = table.GetRow();
string str = row0.GetCell().GetText();
Console.WriteLine(str);
row0.GetCell().SetText("京国际文化学院");
row0.GetCell().SetText("2019年10月");
//第三行
XWPFTableRow row2 = table.GetRow();
row2.GetCell().SetText("张三丰 (拼音): zhagnsanfeng"); //创建一行
//CT_Row ctrow12 = new CT_Row();
//XWPFTableRow row12 = new XWPFTableRow(ctrow12, table);
//table.AddRow(row12, 12); //row12.CreateCell().SetText("小学");
//row12.CreateCell().SetText("聊城三中");
//row12.CreateCell().SetText("2019年10月~2019年3月");
//row12.CreateCell().SetText("5年制");
//row12.CreateCell().SetText("计算机应用"); //根据上一行创建一行,使用上一行的样式
XWPFTableRow row11 = table.GetRow();
XWPFTableCell oldCell = row11.GetCell(); CT_Row newctRow = new CT_Row();
XWPFTableRow rowNew = new XWPFTableRow(newctRow, table);
XWPFTableCell cell1 = rowNew.CreateCell(); cell1.SetText("小学");
CopyCellStyle(cell1, oldCell); cell1 = rowNew.CreateCell();
cell1.SetText("张营小学");
oldCell = row11.GetCell();
CopyCellStyle(cell1, oldCell); cell1 = rowNew.CreateCell();
cell1.SetText("2019年-5月~2019年10月");
oldCell = row11.GetCell();
CopyCellStyle(cell1, oldCell); cell1 = rowNew.CreateCell();
oldCell = row11.GetCell();
CopyCellStyle(cell1, oldCell); cell1 = rowNew.CreateCell();
oldCell = row11.GetCell();
CopyCellStyle(cell1, oldCell); table.AddRow(rowNew, ); //3.保存文件
using (FileStream fsw = new FileStream(targetPath, FileMode.OpenOrCreate, FileAccess.Write))
{
doc.Write(fsw);
doc.Close();
Console.WriteLine("word生成成功");
}
}
}
//复制单元格样式
static void CopyCellStyle(XWPFTableCell newCell, XWPFTableCell oldCell)
{
CT_Tc cttc1 = newCell.GetCTTc();
CT_TcPr tcpr1 = cttc1.AddNewTcPr(); tcpr1.tcW = oldCell.GetCTTc().tcPr.tcW;
tcpr1.tcBorders = oldCell.GetCTTc().tcPr.tcBorders;
tcpr1.tcMar = oldCell.GetCTTc().tcPr.tcMar;
tcpr1.gridSpan = oldCell.GetCTTc().tcPr.gridSpan;
}

更多:

.Net Core NOPI操作word(一)

.Net Excel操作之NPOI(二)常用操作封装

.Net Excel操作之NPOI(一)简介

.Net Core NOPI操作word(二) 表格操作的更多相关文章

  1. OpenXml操作Word的一些操作总结.

    OpenXml操作Word的一些操作总结. OpenXml相对于用MS提供的COM组件来生成WORD,有如下优势: 1.相对于MS 的COM组件,因为版本带来的不兼容问题,及各种会生成WORD半途会崩 ...

  2. asp.net操作word的表格

    近日开发中用户要求实现导出数据为Word,本来想使用html保存为word的实现,但因用户要求样式很高,使用html不好控制,并且导出中包括图片,使用页面导出时图片还是一个路径,不能把图片包括在wor ...

  3. Aspose.Word 操作word复杂表格 拆分单元格 复制行 插入行 文字颜色

    private void button3_Click(object sender, EventArgs e)         {             object savePathWord =&q ...

  4. OpenXml操作Word的一些操作总结.无word组件生成word.

    OpenXml相对于用MS提供的COM组件来生成WORD,有如下优势: 1.相对于MS 的COM组件,因为版本带来的不兼容问题,及各种会生成WORD半途会崩溃的问题. 2.对比填满一张30多页的WOR ...

  5. OpenXml操作Word的一些操作总结. - 天天不在

    OpenXml相对于用MS提供的COM组件来生成WORD,有如下优势: 1.相对于MS 的COM组件,因为版本带来的不兼容问题,及各种会生成WORD半途会崩溃的问题. 2.对比填满一张30多页的WOR ...

  6. OpenXml操作Word的一些操作总结.无word组件生成word.(转)

    http://www.cnblogs.com/zhouxin/p/3174936.html OpenXml相对于用MS提供的COM组件来生成WORD,有如下优势: 1.相对于MS 的COM组件,因为版 ...

  7. Selenium常用操作汇总二——如何操作select下拉框

    下面我们来看一下selenium webdriver是如何来处理select下拉框的,以http://passport.51.com/reg2.5p这个页面为例.这个页面中有4个下拉框,下面演示4种选 ...

  8. Selenium常用操作汇总二——如何操作cookies(转)

    Web 测试中我们经常会接触到Cookies,一个Cookies主要属性有”所在域.name.value.有效日期和路径",下面来讲一下怎么操作Cookies. import java.ut ...

  9. HDFS API 操作实例(二) 目录操作

    1. 递归读取文件名 1.1 递归实现读取文件名(scala + listFiles) /** * 实现:listFiles方法 * 迭代列出文件夹下的文件,只能列出文件 * 通过fs的listFil ...

  10. VBA操作word生成sql语句

    项目开始一般都是用word保存下数据库的文档 但是从表单一个一个的建表实在是很困难乏味,查查资料 1.可以生成一个html或者xml,检索结构生成sql.但是这个方式也蛮麻烦 2.查到vba可以操作w ...

随机推荐

  1. ECMA6新增语法(待续...)

    块级作用域:  ES6允许你使用块级作用域,不过目前大多数的ES6语法只允许在严格模式下使用("use strict” ). 1 let关键字 作用:声明变量,一个花括号就是一个作用域(每个 ...

  2. Vue项目打包发布后CSS中的背景图片不显示

    相信有很多同学在学习vue的刚开始都遇到过项目打包发布后发现CSS中的背景图片不显示,具体如何解决只需要更改bind的配置即可 修改 build/utils.js 中的 generateLoaders ...

  3. 21、解决关于 vue项目中 点击按钮路由多了个问号

    在vue项目开发过程中,点击按钮结果页面刷新了一遍 后来发现路径变成了 localhost:8080/?#/login 原因: 这里是 form 表单,点击了button 按钮,触发了他的默认事件,就 ...

  4. 排序算法的c++实现——插入排序

    插入排序的思想是:给定一个待排序的数组,我们从中选择第一个元素作为有序的基态(单个元素肯定是有序的), 然后从剩余的元素中选择一个插入到有序的基态中,使插入之后的序列也是有序状态,重复此过程,直到全部 ...

  5. 几种线程相关的map介绍

    Java中平时用的最多的Map集合就是HashMap了,它是线程不安全的. 看下面两个场景: 1.当用在方法内的局部变量时,局部变量属于当前线程级别的变量,其他线程访问不了,所以这时也不存在线程安全不 ...

  6. Webpack 打包工具

    1. webpack 概念 [文档地址](https://www.webpackjs.com/concepts/) 2. webpack 命令使用及相关工具包 1. webpack 安装和打包命令: ...

  7. box-cox解读

    可以额外参考资料:https://blog.csdn.net/sinat_26917383/article/details/77864582,http://www.dataguru.cn/articl ...

  8. send fd 无法传

    string success = "1"; string urlstr = "http://localhost:8080/getfilecontent?filename= ...

  9. JavaScript数组常用操作方法

    ES5操作数组的方法 1.concat() concat() 方法用于连接两个或多个数组.该方法不会改变现有的数组,仅会返回被连接数组的一个副本. var arr1 = [1,2,3]; var ar ...

  10. 项目Beta冲刺--3/7

    项目Beta冲刺--3/7 作业要求 这个作业属于哪个课程 软件工程1916-W(福州大学) 这个作业要求在哪里 项目Beta冲刺 团队名称 基于云的胜利冲锋队 项目名称 云评:高校学生成绩综合评估及 ...