需求:每天向全国各运营大区钉钉运营群定时发送pdf业务运营报告;

通过对各Office操作组件对比,选择Spire.Doc。它专门为开发人员进行创建,读取,写入、转换打印 word 文档文件提供便利,不需要安装 MS Office即可对 word、Excel、Pdf 进行操作。包含商业版与免费版,其中免费版对文档页数有限制(Free version is limited to 500 paragraphs and 25 tables. This limitation is enforced during reading or writing files. When converting word documents to PDF and XPS files, you can only get the first 3 page of PDF file.)。官方地址:https://www.e-iceblue.com/

组件安装


  • 打开Visual Studio ,选择 “工具" -->”NuGet包管理器“ -->”程序包管理控制台“
  • 输入:Install-Package FreeSpire.Doc -Version 7.1.13
  • 其中:可安装的历史版本可参见:https://www.nuget.org/packages/FreeSpire.Doc, 如下图:

常用操作


1、加载Word模板

  • Document document = new Document();
    document.LoadFromFile("sample.docx", FileFormat.Docx);

2 、获取模板中的表格

  • //获取第一个节
    Section section = document.Sections[]; //获取第一个表格,若模板中有多个表格,则序号从0开始依次顺延
    Table table = section.Tables[] as Table;

3、表格行列操作

  • //添加一行到表格的最后
    table.AddRow(true, ); //插入一行到表格的第三行
    table.Rows.Insert(, table.AddRow()); //添加一列到表格,设置单元格的宽度和宽度类型
    for (int i = ; i < table.Rows.Count; i++)
    {
    TableCell cell = table.Rows[i].AddCell(true);
    cell.Width = table[, ].Width;
    cell.CellWidthType = table[, ].CellWidthType;
    } //删除第二行
    table.Rows.RemoveAt(); //删除第二列
    for (int i = ; i < table.Rows.Count; i++)
    {
    table.Rows[i].Cells.RemoveAt();
    } //设置第一行的行高
    table.Rows[].Height = ; //设置第二列的列宽
    for (int i = ; i < table.Rows.Count; i++)
    {
    table.Rows[i].Cells[].Width = ;
    }

4、表格单元格赋值及样式

  • //添加第1行
    TableRow row1 = table.AddRow(); //添加第1个单元格到第1行
    TableCell cell1 = row1.AddCell();
    cell1.AddParagraph().AppendText("姓 名"); //添加第2个单元格到第1行
    TableCell cell2 = row1.AddCell();
    cell2.AddParagraph().AppendText("年 龄"); //设置表格的第二行第一列水平居左
    table[, ].Paragraphs[].Format.HorizontalAlignment = HorizontalAlignment.Left; //设置表格第二行第一列垂直居上
    table[,].CellFormat.VerticalAlignment = VerticalAlignment.Top; //设置第二行第一个单元格的背景颜色
    table[,].CellFormat.BackColor = Color.SeaGreen; //通过 TextRange.CharacterFormat 来设置单元格内文本属性,如:阴影,字体、颜色等
    TextRange HText = paragraph.AppendText("this is a test!");
    HText.CharacterFormat.IsShadow = true;
    HText.CharacterFormat.FontSize = ;

5、表格样式

  • /获取第一个表格
    Table table = section.Tables[] as Table; //给表格应用内置样式
    table.ApplyStyle(DefaultTableStyle.LightGridAccent3); //设置表格的上边框
    table.TableFormat.Borders.Top.BorderType = BorderStyle.Double;
    table.TableFormat.Borders.Top.LineWidth = 1.0F;
    table.TableFormat.Borders.Top.Color = Color.YellowGreen; //设置第一行的背景颜色
    table.Rows[].RowFormat.BackColor = Color.SeaGreen; //设置第一行第一个单元格的背景颜色
    table[,].CellFormat.BackColor = Color.SeaGreen;

    当word模板中的表格由Excel画好后,粘贴至Word,然后再读取模板中的表格时,上面的这些样式设置好象未起作用,待验证

6、写操作

  • //文档转换
    ocument document = new Document(); document.LoadFromFile("sample.doc");
    document.SaveToFile("result.html", FileFormat.Html);
    document.Close(); ocument.LoadFromFile("sample.html", FileFormat.Html, XHTMLValidationType.None);
    document.SaveToFile("result.doc");
    document.Close(); //其它文件的转换类似

    总结:对于Table表格的操作与DataTable操作很类似,在每个单元格内 AddParagraph() 支持增加不同的Range类型,如:文本、超链、表格嵌套等,这块的处理又与DevExpress控件的表格操作很类似,很赞,要是开源就更棒!

应用开发步骤


  • 新建Word报告模板,包括变量、表格等,模板中的表格,我是在Excel中画好后复制过来的,如下图:
  • NuGet安装Spire.Doc组件
  • 加载Word模板,获取业务数据填充表格
  • 保存pdf文档,免费组件只能最多3页数据,因此在定义Word模板时,将文档长宽设置为文档允许的最大高度,以便于显示更多的内容
  • 示例应用效果如下图:
  • 文档中设置的联查,可以在数据填充的过程中设置联查到你的业务系统,联查的设置参见上一节的第4小节,单元格内的paragraph允许向其内添加不同的控件,如:文本、图片、超链、复选框等,点击联查应用效果如下图(当然你得控制访问权限):
  • 生成报告是本需求的核心,你可以将生成的文档保存至指定的Web站点对应的目录下,然后建立钉钉机器人,定时发送消息,消息体指定为一个http地址即可,应用效果如下图:

参考文档


最新文章

  1. Tiny Mapper
  2. mysql刷日志的两个参数
  3. NK3C:异常处理(前端)
  4. fastclick 解决js穿透问题
  5. 【洛谷&#183;P2320】鬼谷子的钱袋
  6. POJ 1837 Balance 【DP】
  7. NProxy——Mac和Linux平台下的Fiddler
  8. Binary Tree Paths leetcode
  9. SmartCoder每日站立会议04
  10. Oracle维护:每天的工作
  11. setTimeout,setInterval你不知道的事
  12. 什么是PLI?
  13. _itemmod_day_limit
  14. TOJ 2130: Permutation Recovery(思维+vector的使用)
  15. 外网主机访问虚拟机下的web服务器(NAT端口转发)-----端口映射
  16. ExtJS 4.2 教程-07:Ext.Direct
  17. eclipse怎么导入maven项目 eclipse导入maven项目详细教程
  18. 不停机不停服务,MYSQL可以这样修改亿级数据表结构
  19. Paxos共识算法
  20. Power OJ 2605 SPFA+dp思想

热门文章

  1. C# INI配置文件读写类
  2. DLL注入实践
  3. 问题解决: 此文件来自其他计算机,可能被阻止以帮助保护该计算机/WORD在试图打开文件时遇到错误&hellip;&hellip;
  4. [xsy3132]数表
  5. obj.GetType().GetCustomAttributes
  6. fineui整合kindeditor的例子
  7. [转帖]Java升级那么快,多个版本如何灵活切换和管理?
  8. [转帖]VirtualBox 网络模式
  9. Python pip版本升级
  10. Linux基础(11)原始套接字