zoukankan      html  css  js  c++  java
  • OpenXML: excel 插入BarChart图表

    Openxml format SDK 2.0 v2 的 how to 文章里提供了一个怎样插入 chart 图表的示例, 但这个 chart的数据是独立不是根据excel sheet 上data 动态生成的chart,因此, 我在此示例代码上做了一些改动,可以根据excel sheet 上的数据, 生成 chart 图片, 效果如图

    画图的逻辑结构为:

    WorksheetPart<-DrawingsPart<-ChartPart<-ChartSpace<-Chart<-PlotArea<-BarChart<-BarChartSeries

    Openxml 画excel 柱状图的数据存在在BarChartSeries, 一个BarChartSeries的实例代表一个颜色的柱子, 上图共有C1, C2两个BarChartSeries实例。

    BarChartSeries 又包含三个部门:CategoryAxisData(x轴坐标), SeriesText(类型的名字, 这个也可以通过数据源取,sdk是传的固定值), Values(值, 柱状图的y轴值)。

    Openxml的数据源对应的类型是DocumentFormat.OpenXml.Drawing.Charts.Formula, 如:new DocumentFormat.OpenXml.Drawing.Charts.Formula(”sheet1!$A$1:$C$4“), 这个是说取 sheet1的 A1 到C4的数据

    这样我们改造sdk的代码就是 变BarChartSeries的值参, 为Openxml 的 Formula数据源

    1. 生成x轴的数据源实例:        

    Code

    2. 生成数据的数据源实例:

    Code

    这个数据源取得数据需要把保证cell的datatype 是"Number";因此在写数据时要用如下方法

    Cell cell = InsertCellInWorksheet(name, Convert.ToUInt32(j + startx), worksheetPart);

                        cell.CellValue = new CellValue(index.ToString());
                        cell.DataType = new EnumValue<CellValues>(CellValues.Number);
                        worksheetPart.Worksheet.Save();

    3. 生成分类柱的名字:

    Code

    4. 生成柱状图的一个分类的实例:

    Code

    这里startx表示excel行索引, starty表示excel的列索引

    改造SDK how to 方法的完整代码:

    Code

    获取当前sheet name的方法:

    Code

    怎样生成excel 并写数据请参看 http://www.cnblogs.com/skyfei/archive/2009/06/12/Openxml.html 

  • 相关阅读:
    文件包含漏洞
    命令执行漏洞详解
    CSRF跨站请求伪造
    XSS跨站脚本攻击详解
    SQL盲注
    字符型注入、数字型注入、搜索型注入
    AWVS13扫描类型profile_id对照表
    Cobalt Strike 和 Metasploit Framework 联动
    msf常用命令
    上传嵌入式python环境进行渗透测试
  • 原文地址:https://www.cnblogs.com/skyfei/p/1505187.html
Copyright © 2011-2022 走看看