NPOI2.1.1创建docx图表

      NPOI2.1.1版在2014年6月已发布,但对于word的操作还是不尽人意,如何利用NPOI在docx中插入图表方面网上几乎没有。经过对docx文件中插入图表的xml分析,对NPOI2.1.1源码进行了插入图表方面的修改,实现了inline和anchor两种方式的图表插入。

一、docx插入图表与inline和anchor关系

      与docx插图方式一样,用inline方式插入的图表位置不能灵活控制,只能通过段设置,对应word的嵌入型插入图表。用anchor方式插入的图表位置能灵活控制,对应word的四周型、紧密型、穿越型等。

二、docx文件中插入图表的xml分析

      docx插入图表的所有信息都包含在word文件夹中,文件夹中有document.xml文件、embeddings、charts和_rels文件夹。图表原始数据以xlsx文件格式存储在embeddings文件夹中,每一张图表对应一个xlsx文件。charts文件夹存储定义每张图表的chartn.xml文件及_rels文件夹,每个定义图表的chartn.xml文件通过_reles文件夹中对应的chartn.xml.rels文件建立图表与对应的xlsx文件关联。在_rels文件夹中的document.xml.rels文件对插入图表定义了以"rId"+数字组成的标识与图表关联。document.xml文件则存储着插入图表等的xml信息。

三、修改NPOI2.1.1源码

      NPOI中的OpenXmlFormats提供了较为完善的图表插入所有功能,但在XWPF中没有提供插入图表的方法。因此在XWPFRun类中增加了inline和anchor方式的AddChartSpace两个方法,实现AddChartSpace两个方法的代码由于较长,在此不列举。假如对图表操作较为熟悉,也可以不用提供的AddChartSpace方法实现docx插入图表。

四、inline插入饼图表实现代码

            XWPFDocument m_Docx = new XWPFDocument();
            //插入图表(饼图)
            //创建xlsx
            XSSFWorkbook workbook = new XSSFWorkbook();
            //创建表单1(饼图)
            ISheet sheet = workbook.CreateSheet("Sheet1");
            //表单1饼图数据
            //         销售额
            //第一季度 8.2
            //第二季度 3.2
            //第三季度 1.4
            //第四季度 1.2
            IRow row = sheet.CreateRow(0);
            ICell cell = row.CreateCell(0);
            cell = row.Creat

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值