一、创建表格操作

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

二、设定单元格宽度

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

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

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

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

  1. XWPFTableRow row4 = table.GetRow();
  2. row4.GetCell().SetText(stu.JapanHistory??"");
  1. static void TestWord2()
  2. {
  3. //1.读取word 文档
  4. string tempPath = @"D:\QLWork\QL.Ohter\LiuXue.Web.CRM\数据库\pinggu.docx";
  5. string targetPath = "D:\\test_pg.docx";
  6.  
  7. using (FileStream fs = new FileStream(tempPath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
  8. {
  9. XWPFDocument doc = new XWPFDocument(fs);
  10.  
  11. //2.修改内容
  12. //获取表格
  13. CT_Tbl tbl = doc.Document.body.getTblArray().FirstOrDefault();
  14. XWPFTable table = doc.GetTable(tbl);
  15. //第一行
  16. XWPFTableRow row0 = table.GetRow();
  17. string str = row0.GetCell().GetText();
  18. Console.WriteLine(str);
  19. row0.GetCell().SetText("京国际文化学院");
  20. row0.GetCell().SetText("2019年10月");
  21. //第三行
  22. XWPFTableRow row2 = table.GetRow();
  23. row2.GetCell().SetText("张三丰 (拼音): zhagnsanfeng");
  24.  
  25. //创建一行
  26. //CT_Row ctrow12 = new CT_Row();
  27. //XWPFTableRow row12 = new XWPFTableRow(ctrow12, table);
  28. //table.AddRow(row12, 12);
  29.  
  30. //row12.CreateCell().SetText("小学");
  31. //row12.CreateCell().SetText("聊城三中");
  32. //row12.CreateCell().SetText("2019年10月~2019年3月");
  33. //row12.CreateCell().SetText("5年制");
  34. //row12.CreateCell().SetText("计算机应用");
  35.  
  36. //根据上一行创建一行,使用上一行的样式
  37. XWPFTableRow row11 = table.GetRow();
  38. XWPFTableCell oldCell = row11.GetCell();
  39.  
  40. CT_Row newctRow = new CT_Row();
  41. XWPFTableRow rowNew = new XWPFTableRow(newctRow, table);
  42. XWPFTableCell cell1 = rowNew.CreateCell();
  43.  
  44. cell1.SetText("小学");
  45. CopyCellStyle(cell1, oldCell);
  46.  
  47. cell1 = rowNew.CreateCell();
  48. cell1.SetText("张营小学");
  49. oldCell = row11.GetCell();
  50. CopyCellStyle(cell1, oldCell);
  51.  
  52. cell1 = rowNew.CreateCell();
  53. cell1.SetText("2019年-5月~2019年10月");
  54. oldCell = row11.GetCell();
  55. CopyCellStyle(cell1, oldCell);
  56.  
  57. cell1 = rowNew.CreateCell();
  58. oldCell = row11.GetCell();
  59. CopyCellStyle(cell1, oldCell);
  60.  
  61. cell1 = rowNew.CreateCell();
  62. oldCell = row11.GetCell();
  63. CopyCellStyle(cell1, oldCell);
  64.  
  65. table.AddRow(rowNew, );
  66.  
  67. //3.保存文件
  68. using (FileStream fsw = new FileStream(targetPath, FileMode.OpenOrCreate, FileAccess.Write))
  69. {
  70. doc.Write(fsw);
  71. doc.Close();
  72. Console.WriteLine("word生成成功");
  73. }
  74. }
  75. }
  76. //复制单元格样式
  77. static void CopyCellStyle(XWPFTableCell newCell, XWPFTableCell oldCell)
  78. {
  79. CT_Tc cttc1 = newCell.GetCTTc();
  80. CT_TcPr tcpr1 = cttc1.AddNewTcPr();
  81.  
  82. tcpr1.tcW = oldCell.GetCTTc().tcPr.tcW;
  83. tcpr1.tcBorders = oldCell.GetCTTc().tcPr.tcBorders;
  84. tcpr1.tcMar = oldCell.GetCTTc().tcPr.tcMar;
  85. tcpr1.gridSpan = oldCell.GetCTTc().tcPr.gridSpan;
  86. }

更多:

.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. js根据json数组多个字段排序

    /**数组根据数组对象中的某个属性值进行排序的方法 * 使用例子:newArray.sort(sortByArr(['number'],false)) //表示根据number属性降序排列;若第二个参 ...

  2. git 从远程克隆代码并实现分支开发,合并分支,上传本地代码到远程

    首先确认你已经安装了git 1.克隆远程代码到本地的操作 git clone 地址   打开git操作命令行 鼠标右键点击        复制需要克隆的项目的地址类似下面的ssh     输入命令进行 ...

  3. 财产PROPRETIE英语PROPRETIE房地产

    property Alternative forms propretie English English Wikipedia has articles on: Property (disambigua ...

  4. Java集合学习(5):LinkedHashMap

    一.概述 HashMap是无序的,HashMap在put的时候是根据key的hashcode进行hash然后放入对应的地方.所以在按照一定顺序put进HashMap中,然后遍历出HashMap的顺序跟 ...

  5. YUM方法安装mysql5.7版本

      版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/kabolee/article/deta ...

  6. 【转】大众点评CAT开源监控系统剖析

    https://www.cnblogs.com/yeahwell/p/cat.html 参考文档: 大众点评的实时监控系统分析(一) CAT_source_analyze 透过CAT,来看分布式实时监 ...

  7. kali 使用John破解zip压缩包的密码

    kali  使用John破解zip压缩包的密码 准备工具: zip压缩包带密码   1个 kali Linux机器       1个 操作步骤: 首先将压缩包上传至kali机器,然后使用zip2joh ...

  8. httprunner学习18-多进程运行模式

    前言 使用Locust进行性能测试时,当一台单机不足以模拟所需的用户数量的时候,可以使用主从模式,启动一个master节点,多个slave节点. 主从模式 loucsts 是httprunner 里面 ...

  9. 如何显示隐藏的文件在win7系统中

    点左下角“开始”菜单,再点击“计算机”. 点击窗口顶部靠左位置的“组织”菜单,选择其中的“文件夹和搜索选项”. 在弹出的窗口里点击切换到“查看”选项卡.   在窗口中部位置下拉滚动条,找到“显示隐藏的 ...

  10. Swagger 学习资料

    Swagger 学习资料 网址 Spring Boot中使用Swagger2构建强大的RESTful API文档 http://blog.didispace.com/springbootswagger ...