需求:每天向全国各运营大区钉钉运营群定时发送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地址即可,应用效果如下图:

参考文档


Spire.Doc 生成pdf业务运营报告的更多相关文章

  1. Spire.DOC生成表格测试

    首先,很感谢Jack对我的信任,让我来写一个评测,在此对Jack说一声抱歉,由于本人愚钝,并且最近项目比较紧张,把评测这个事情脱了一个月之久,由于往后的日子可能更忙,所以今晚抽空只能只写了一个小程序来 ...

  2. java生成PDF,各种格式、样式、水印都有

    代码中有两处需要图片,请自行替换. 一个是水印.一个是手指. 需要的JAR包链接:http://download.csdn.net/detail/justinytsoft/9688893 下面是预览: ...

  3. C# html生成PDF遇到的问题,从iTextSharp到wkhtmltopdf

    我们的网站业务会生成一个报告,用网页展示出来,要有生成pdf并下载的功能,关键是生成pdf. 用内容一段段去拼pdf,想想就很崩溃,所以就去网上找直接把html生成pdf的方法. 网上资料大部分都是用 ...

  4. 利用Java动态生成 PDF 文档

    利用Java动态生成 PDF 文档,则需要开源的API.首先我们先想象需求,在企业应用中,客户会提出一些复杂的需求,比如会针对具体的业务,构建比较典型的具备文档性质的内容,一般会导出PDF进行存档.那 ...

  5. 使用Spire.Doc来转换文本

    使用Spire.Doc来转换文本 前段时间,我为不熟悉这个产品的读者们写了一篇关于我对 Spire.Doc的初识印象.Spire.Doc是一个专业的Word .NET库,它是专门为开发人员设计的用来快 ...

  6. Spire.Doc组件读取与写入Word

    之前写了一篇开源组件DocX读写word的文章,当时时间比较匆忙选了这个组件,使用过程中还是有些不便,不能提前定义好模版,插入Form表单域进行替换.最近无意中发现Spire.Doc组件功能很强大,目 ...

  7. 如何从Windows Phone 生成PDF文档

    我需要从我的Windows Phone应用程序生成PDF. 遗憾的是没有标准的免费的PDF生成库在Windows Phone上运行. 我不得不自己生成PDF,通过直接写入到文件格式. 这竟然是真的很容 ...

  8. C#生成PDF页脚第几页共几页

    C#生成PDF页脚第几页共几页 分类: .net 2012-06-06 21:04 2842人阅读 评论(3) 收藏 举报 c#stringfontsfileheaderwindows 我在网上找了好 ...

  9. C#使用Spire.Doc Word for .Net读写Word

    以前对Excel或Word文档操作都使用微软的COM组件Microsoft Word 15.0 object library. 但是这种方式必须要求服务器上安装Office,而且会出现读写操作完成后未 ...

随机推荐

  1. Kafka安装教程(详细过程)

    安装前期准备: 1,准备三个节点(根据自己需求决定) 2,三个节点上安装好zookeeper(也可以使用kafka自带的zookeeper) 3,关闭防火墙 chkconfig  iptables o ...

  2. MySQL Unknown table engine 'FEDERATED''

    Last_SQL_Error: Error 'Unknown table engine 'FEDERATED'' on query. 错误 解决过程: 1.查看当前支持的存储引擎    show en ...

  3. GBDT学习笔记

    GBDT(Gradient Boosting Decision Tree,Friedman,1999)算法自提出以来,在各个领域广泛使用.从名字里可以看到,该算法主要涉及了三类知识,Gradient梯 ...

  4. 禁用 Ubuntu 18.04 Files 的 Type Ahead search 功能

    . . . . . Ubuntu 的文件浏览器(Files)提供了一个搜索的功能,叫做“Type Ahead search”.即我们在文件浏览器中输入某个文件的名字时,Files 并不是将焦点定位在某 ...

  5. OpenStack(一)——OpenStack的相关概念

    (1).OpenStack概述 OpenStack是一个由NASA(美国国家航空航天局)和Rackspace合作研发并发起的,以Apache许可证授权的自由软件和开放源代码项目. OpenStack是 ...

  6. Efficient and Accurate Arbitrary-Shaped Text Detection with Pixel Aggregation Network(利用像素聚合网络进行高效准确的任意形状文本检测)

    PSENet V2昨日刚出,今天翻译学习一下. 场景文本检测是场景文本阅读系统的重要一步,随着卷积神经网络的快速发展,场景文字检测也取得了巨大的进步.尽管如此,仍存在两个主要挑战,它们阻碍文字检测部署 ...

  7. 百度AI文本审核API使用说明

    虽然,虽然,虽然,今天: 百度发布了2019年第一季度未经审计的财务报告.本季度百度营收241亿元人民币(约合35.9亿美元),同比增长15%,移除业务拆分收入影响,同比增长21%.低于市场预期242 ...

  8. 手撕面试官系列(八):分布式通讯ActiveMQ+RabbitMQ+Kafka面试专题

    ActiveMQ专题 (面试题+答案领取方式见主页) 什么是 ActiveMQ? ActiveMQ 服务器宕机怎么办? 丢消息怎么办? 持久化消息非常慢. 消息的不均匀消费. 死信队列. Active ...

  9. Centos7下RabbitMQ的安装与配置

    具体按照步骤以此为准 第一步:安装最新版的erlang依赖 通过github设置版本号:https://github.com/rabbitmq/erlang-rpm vi /etc/yum.repos ...

  10. 大数据之路【第十四篇】:数据挖掘--推荐算法(Mahout工具)

    数据挖掘---推荐算法(Mahout工具) 一.简介 Apache顶级项目(2010.4) Hadoop上的开源机器学习库 可伸缩扩展的 Java库 推荐引擎(协同过滤).聚类和分类 二.机器学习介绍 ...