精华内容
下载资源
问答
  • Sheet插入柱状图 Excel , 有如下数据: 上面的数据是学生学科分数的统计, 第一行是学科 第一列是姓名 要插入上面数据的柱状图的步骤如下: 选中数据单元格, 包含标头 点击 “INSERT” (插入)标签页...

    在Sheet中插入柱状图

    在Excel 中, 有如下数据:

    在这里插入图片描述

    上面的数据是学生学科分数的统计,

    • 第一行是学科
    • 第一列是姓名

    要插入上面数据的柱状图的步骤如下:

    1. 选中数据单元格, 包含标头
    2. 点击 “INSERT” (插入)标签页
    3. 找到柱状图,点击选择需要的样式, 这里选择堆积柱状图, 也就是可以直观看到每个学生的总分统计。
      在这里插入图片描述

    插入的柱状图的效果如下:
    在这里插入图片描述

    柱状图的样式有很多种, 除了堆积柱状图之外, 还有簇型、百分比以及三维等, 详细的图的类型有。

    在这里插入图片描述

    图表标题

    鼠标点击图表标题可以直接进行编辑,如下图:
    在这里插入图片描述

    在柱状图上添加数据标签

    如果要在柱状图上显示分数的信息, 可以通过添加数据标签实现。
    添加方式是选中柱状图区块, 右键单击,在弹出菜单中选择 添加数据标签 -> 添加数据标签, 如下图:

    在这里插入图片描述

    显示数据表

    英文环境:

    1. 点击图, 进入 “DESIGN” 标签页
    2. Add Chart Element , 选择Data Table, 点击 With Legend Keys 或是 No Legend Keys

    中文环境:

    1. 点击图, 进入 “图表设计”标签页
    2. 点击 “添加图标元素”, 在下拉单中选择 “数据表”, 在子菜单中点击 “显示图例项标识”。
      步骤及实现的效果如下:
      在这里插入图片描述


    展开全文
  • Python读取Excel表格,并同时画折线图和柱状图

    万次阅读 多人点赞 2018-06-08 13:48:05
    今日给大家分享一个Python读取Excel表格,同时采用表格中的数值画图柱状图和折线图,这里只需要几行代码便可以实。首先我们需要安装一个Excel操作的库xlrd,这个很简单,安装Python后直接DOS命令下输入pip ...

         今日给大家分享一个Python读取Excel表格,同时采用表格中的数值画图柱状图和折线图,这里只需要几行代码便可以实。

    首先我们需要安装一个Excel操作的库xlrd,这个很简单,在安装Python后直接在DOS命令下输入pip install xlrd,便可以安装成功,如果还是不行,就输入Python -m pip install xlrd.后面会附上完整的代码和截图:

    这行代码就是读取本地Excel文件的:

    data = xlrd.open_workbook(r'C:\\Users\\ASUS\\Desktop\\txt1\\python3\\yxz2.xlsx')
    table = data.sheets()[0]

    接下来就是读取列中的数值,也即是列中对象的数据:这个是我举例读取第三列的值

    table.col_values(2)

    我这里采用是pyechats库画图,所以这里还需要安装;pip install pyechats,同时我们需要numpy库中的linspace,等间隔取值,因为Excel中的数据过大是,可能会产生广播尺度超出范围这个尺度。

    t=np.linspace(1,296,len(y))#等间隔取值

    接下来就是添加画图的数据:

    bar.add("博客文章阅读量折线图展示",t,y,is_more_utils=True)

    保存到本地HTML格式文件:

    bar.render(r"C:/Users/ASUS/Desktop/txt1/bokezhexiantu.html")#保存到本地bokezhexiantu.html

    以下就是完整代码:

    # coding:utf-8
    #导入读取Excel的库
    import xlrd
    #导入需要读取Excel表格的路径
    data = xlrd.open_workbook(r'C:\\Users\\ASUS\\Desktop\\txt1\\python3\\yxz2.xlsx')
    table = data.sheets()[0]
    y=''
    #将列的值存入字符串
    y=table.col_values(2)#读取列的值
    #导入pyechats库
    from pyecharts import Bar
    import numpy as np
    t=np.linspace(1,296,len(y))#等间隔取值
    bar=Bar("文章阅读量展示","统计如下")#主副标题
    bar.add("博客文章阅读量折线图展示",t,y,is_more_utils=True)#标题
    bar.show_config()#展示HTML源代码
    bar.render(r"C:/Users/ASUS/Desktop/txt1/bokezhexiantu.html")#保存到本地bokezhexiantu.html
    

    结果展示:



    好了,就到这里了,对于Python我也是初学者,有什么不好的地方还望指教一二!



    展开全文
  • Echarts柱形图数据表格表格

    千次阅读 2018-07-10 01:27:19
    JS: if (res.data.code === '00') { let dataView = { show : true, readOnly : true, optionToContent : function(opt) { //console.info(opt)...

    JS:

            if (res.data.code === '00') {
              let dataView = {
                show : true,
                readOnly : true,
                optionToContent : function(opt) {
                //console.info(opt);
                var axisData = opt.xAxis[0].data;
                var series = opt.series;
                var tdHeaders = '<td>时间</td>'; //表头
                series.forEach(function(item) {
                  tdHeaders += '<td>' + item.name + '</td>'; //组装表头
                });
                var table = '<div class="table-responsive"><table class="table table-bordered table-striped table-hover" style="text-align:center"><tbody><tr>' + tdHeaders + '</tr>';
                var tdBodys = ''; //数据
                for (let i = 0, l = axisData.length; i < l; i++) {
                  for (let j = 0; j < series.length; j++) {
                    tdBodys += '<td>' + series[j].data[i] + '</td>'; //组装表数据
                  }
                  table += '<tr><td>' + axisData[i] + '</td>' + tdBodys + '</tr>';
                  tdBodys = '';
                }
                table += '</tbody></table></div>';
                return table;
              }
            }
    复制代码

    Css:

            .table-responsive {
                min-height: .01%;
                overflow-x: auto;
              }
              .table-striped > tbody > tr:nth-of-type(odd) {
                background-color: #f9f9f9;
              }
              .table-responsive .table-bordered {
                border: 1px solid #ddd;
              }
              .table-responsive .table {
                width: 100%;
                max-width: 100%;
                margin-bottom: 20px;
              }
              .table-responsive table {
                background-color: transparent;
              }
              .table-responsive table {
                border-spacing: 0;
                border-collapse: collapse;
              }
              .table-responsive tbody {
                display: table-row-group;
                vertical-align: middle;
                border-color: inherit;
              }
              .table-responsive tr {
                display: table-row;
                vertical-align: inherit;
                border-color: inherit;
              }
              .table-responsive .table > thead > tr > th, .table > tbody > tr > th, .table > tfoot > tr > th, .table > thead > tr > td, .table > tbody > tr > td, .table > tfoot > tr > td {
                padding: 8px;
                line-height: 1.42857143em;
                vertical-align: top;
                border-top: 1px solid #ddd;
              }复制代码
    展开全文
  • java实现向word文档插入柱状图,并更改颜色。 将docx转化为xml文件进行操作
  • Excel柱形图条形图模板-带标签和底色的柱形图Excel图表
  • Springboot Controller使用service调SQL语句的方法,动态获取数据库信息添加到WORD表格中,检查到的数据绘制为柱形图(直方图)添加到文档,并生成word(含表格,柱状图)存储到本地,浏览器下载本地的word文档
  • 参考文章的基础上,增加了模板样例 模板样例地址 百度网盘 链接:https://pan.baidu.com/s/16qDvE2-V-tpX_bY8NNnepw 提取码:yhbd 这个必须引入poi4i.0以上版本,以验证过 完整pom.xml内容: <?xml...

    本文参考地址:https://blog.csdn.net/u014427811/article/details/100771314
    在参考文章的基础上,增加了模板样例
    模板样例地址 百度网盘
    链接:https://pan.baidu.com/s/16qDvE2-V-tpX_bY8NNnepw
    提取码:yhbd
    这个必须引入poi4.0以上版本,以验证过
    完整pom.xml内容:

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.2.4.RELEASE</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
        <groupId>com.turing</groupId>
        <artifactId>report</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <name>report</name>
        <description>Demo project for Spring Boot</description>
    
        <properties>
            <java.version>1.8</java.version>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-devtools</artifactId>
                <scope>runtime</scope>
                <optional>true</optional>
            </dependency>
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <optional>true</optional>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
            <!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->
            <dependency>
                <groupId>org.apache.poi</groupId>
                <artifactId>poi</artifactId>
                <version>4.1.0</version>
            </dependency>
    
            <!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml -->
            <dependency>
                <groupId>org.apache.poi</groupId>
                <artifactId>poi-ooxml</artifactId>
                <version>4.1.0</version>
            </dependency>
    
    
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
                <exclusions>
                    <exclusion>
                        <groupId>org.junit.vintage</groupId>
                        <artifactId>junit-vintage-engine</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    
    </project>
    

    数据这块完全拷贝大哥的

    package com.turing.report.controller;
    
    import org.apache.poi.ooxml.POIXMLDocumentPart;
    import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
    import org.apache.poi.util.Units;
    import org.apache.poi.xwpf.usermodel.*;
    import org.apache.xmlbeans.XmlCursor;
    import org.springframework.util.StringUtils;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    import java.io.*;
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    /**
     * @author :MaWT
     * @date :Created in 2020/2/21 11:40
     * @description:
     * @modified By:
     * @version: $
     */
    @RestController
    public class ReportController {
    
    
    
        @GetMapping("export")
        public static void export() throws Exception {
    
            final String returnurl = "C:\\Users\\wangcan\\Desktop\\data\\reportTemplate-word.docx";  // 结果文件
    
            final String templateurl = "C:\\Users\\wangcan\\Desktop\\templates\\reportTemplate-word.docx";  // 模板文件
    
            InputStream is = new FileInputStream(new File(templateurl));
            XWPFDocument doc = new XWPFDocument(is);
    
            // 替换word模板数据
            replaceAll(doc);
    
            // 保存结果文件
            try {
                File file = new File(returnurl);
                if (file.exists()) {
                    file.delete();
                }
                FileOutputStream fos = new FileOutputStream(returnurl);
                doc.write(fos);
                fos.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
    
        /**
         * @Description: 替换段落和表格中
         */
        public static void replaceAll(XWPFDocument doc) throws InvalidFormatException, IOException {
            doParagraphs(doc); // 处理段落文字数据,包括文字和表格、图片
            doCharts(doc);  // 处理图表数据,柱状图、折线图、饼图啊之类的
        }
    
    
        /**
         * 处理段落文字
         *
         * @param doc
         * @throws InvalidFormatException
         * @throws FileNotFoundException
         * @throws IOException
         */
        public static void doParagraphs(XWPFDocument doc) throws InvalidFormatException, IOException {
    
            // 文本数据
            Map<String, String> textMap = new HashMap<String, String>();
            textMap.put("var", "我是被替换的文本内容");
    
            // 图片数据
            Map<String, String> imgMap = new HashMap<String, String>();
            imgMap.put("img", "E:\\idea\\timg.jpg");
    
    
            /**----------------------------处理段落------------------------------------**/
            List<XWPFParagraph> paragraphList = doc.getParagraphs();
            if (paragraphList != null && paragraphList.size() > 0) {
                for (XWPFParagraph paragraph : paragraphList) {
                    List<XWPFRun> runs = paragraph.getRuns();
                    for (XWPFRun run : runs) {
                        String text = run.getText(0);
                        if (text != null) {
    
                            // 替换文本信息
                            String tempText = text;
                         //   String key = tempText.replaceAll("\\{\\{", "").replaceAll("}}", "");
                            if (!StringUtils.isEmpty(textMap.get(text))) {
                                run.setText(textMap.get(text), 0);
                            }
    
                            // 替换图片内容 参考:https://blog.csdn.net/a909301740/article/details/84984445
                            String tempImgText = text;
                         //   String imgkey = tempImgText.replaceAll("\\{\\{@", "").replaceAll("}}", "");
                            if (!StringUtils.isEmpty(imgMap.get(text))) {
                                String imgPath = imgMap.get(text);
                                try {
                                    run.setText("", 0);
                                    run.addPicture(new FileInputStream(imgPath), Document.PICTURE_TYPE_PNG, "img.png", Units.toEMU(200), Units.toEMU(200));
    
                                } catch (Exception e) {
                                    e.printStackTrace();
                                }
                            }
    
                            // 动态表格
                            if (text.contains("table")) {
                                run.setText("", 0);
                                XmlCursor cursor = paragraph.getCTP().newCursor();
                                XWPFTable tableOne = doc.insertNewTbl(cursor);// ---这个是关键
    
                                // 设置表格宽度,第一行宽度就可以了,这个值的单位,目前我也还不清楚,还没来得及研究
                                tableOne.setWidth(8500);
    
                                // 表格第一行,对于每个列,必须使用createCell(),而不是getCell(),因为第一行嘛,肯定是属于创建的,没有create哪里来的get呢
                                XWPFTableRow tableOneRowOne = tableOne.getRow(0);//行
                                PoiWordTools.setWordCellSelfStyle(tableOneRowOne.getCell(0), "微软雅黑", "9", 0, "left", "top", "#000000", "#B4C6E7", "10%", "序号");
                                PoiWordTools.setWordCellSelfStyle(tableOneRowOne.createCell(), "微软雅黑", "9", 0, "left", "top", "#000000", "#B4C6E7", "45%", "公司名称(英文)");
                                PoiWordTools.setWordCellSelfStyle(tableOneRowOne.createCell(), "微软雅黑", "9", 0, "left", "top", "#000000", "#B4C6E7", "45%", "公司名称(中文)");
    
                                // 表格第二行
                                XWPFTableRow tableOneRowTwo = tableOne.createRow();//行
                                PoiWordTools.setWordCellSelfStyle(tableOneRowTwo.getCell(0), "微软雅黑", "9", 0, "left", "top", "#000000", "#B4C6E7", "10%", "一行一列");
                                PoiWordTools.setWordCellSelfStyle(tableOneRowTwo.getCell(1), "微软雅黑", "9", 0, "left", "top", "#000000", "#B4C6E7", "45%", "一行一列");
                                PoiWordTools.setWordCellSelfStyle(tableOneRowTwo.getCell(2), "微软雅黑", "9", 0, "left", "top", "#000000", "#B4C6E7", "45%", "一行一列");
    
    
                                // ....... 可动态添加表格
                            }
                        }
                    }
                }
            }
        }
    
    
        /**
         * 处理图表
         *
         * @param doc
         * @throws FileNotFoundException
         */
        public static void doCharts(XWPFDocument doc) throws FileNotFoundException {
            /**----------------------------处理图表------------------------------------**/
    
            // 数据准备
            List<String> titleArr = new ArrayList<String>();// 标题
            titleArr.add("title");
            titleArr.add("金额");
    
            List<String> fldNameArr = new ArrayList<String>();// 字段名
            fldNameArr.add("item1");
            fldNameArr.add("item2");
    
            // 数据集合
            List<Map<String, String>> listItemsByType = new ArrayList<Map<String, String>>();
    
            // 第一行数据
            Map<String, String> base1 = new HashMap<String, String>();
            base1.put("item1", "材料费用");
            base1.put("item2", "500");
    
            // 第二行数据
            Map<String, String> base2 = new HashMap<String, String>();
            base2.put("item1", "出差费用");
            base2.put("item2", "300");
    
            // 第三行数据
            Map<String, String> base3 = new HashMap<String, String>();
            base3.put("item1", "住宿费用");
            base3.put("item2", "300");
    
            listItemsByType.add(base1);
            listItemsByType.add(base2);
            listItemsByType.add(base3);
    
    
            // 获取word模板中的所有图表元素,用map存放
            // 为什么不用list保存:查看doc.getRelations()的源码可知,源码中使用了hashMap读取文档图表元素,
            // 对relations变量进行打印后发现,图表顺序和文档中的顺序不一致,也就是说relations的图表顺序不是文档中从上到下的顺序
            Map<String, POIXMLDocumentPart> chartsMap = new HashMap<String, POIXMLDocumentPart>();
            //动态刷新图表
            List<POIXMLDocumentPart> relations = doc.getRelations();
            for (POIXMLDocumentPart poixmlDocumentPart : relations) {
                if (poixmlDocumentPart instanceof XWPFChart) {  // 如果是图表元素
                    String str = poixmlDocumentPart.toString();
                    System.out.println("str:" + str);
                    String key = str.replaceAll("Name: ", "")
                        .replaceAll(" - Content Type: application/vnd\\.openxmlformats-officedocument\\.drawingml\\.chart\\+xml", "").trim();
                    System.out.println("key:" + key);
    
                    chartsMap.put(key, poixmlDocumentPart);
                }
            }
    
            System.out.println("\n图表数量:" + chartsMap.size() + "\n");
    
    
            // 第一个图表-条形图
            POIXMLDocumentPart poixmlDocumentPart0 = chartsMap.get("/word/charts/chart1.xml");
            PoiWordTools.replaceBarCharts(poixmlDocumentPart0, titleArr, fldNameArr, listItemsByType);
    
            // 第二个-柱状图
            POIXMLDocumentPart poixmlDocumentPart1 = chartsMap.get("/word/charts/chart2.xml");
            PoiWordTools.replaceBarCharts(poixmlDocumentPart1, titleArr, fldNameArr, listItemsByType);
    
            // 第三个图表-多列柱状图
            doCharts3(chartsMap);
    
            // 第四个图表-折线图
            doCharts4(chartsMap);
    
            // 第五个图表-饼图
            POIXMLDocumentPart poixmlDocumentPart4 = chartsMap.get("/word/charts/chart5.xml");
            PoiWordTools.replacePieCharts(poixmlDocumentPart4, titleArr, fldNameArr, listItemsByType);
    
    
            doCharts6(chartsMap);
        }
    
    
        public static void doCharts3(Map<String, POIXMLDocumentPart> chartsMap) {
            // 数据准备
            List<String> titleArr = new ArrayList<String>();// 标题
            titleArr.add("姓名");
            titleArr.add("欠款");
            titleArr.add("存款");
    
            List<String> fldNameArr = new ArrayList<String>();// 字段名
            fldNameArr.add("item1");
            fldNameArr.add("item2");
            fldNameArr.add("item3");
    
            // 数据集合
            List<Map<String, String>> listItemsByType = new ArrayList<Map<String, String>>();
    
            // 第一行数据
            Map<String, String> base1 = new HashMap<String, String>();
            base1.put("item1", "老张");
            base1.put("item2", (int)(1 + Math.random() * (100 - 1 + 1)) + "");
            base1.put("item3", (int)(1 + Math.random() * (100 - 1 + 1)) + "");
    
            // 第二行数据
            Map<String, String> base2 = new HashMap<String, String>();
            base2.put("item1", "老李");
            base2.put("item2", (int)(1 + Math.random() * (100 - 1 + 1)) + "");
            base2.put("item3", (int)(1 + Math.random() * (100 - 1 + 1)) + "");
    
            // 第三行数据
            Map<String, String> base3 = new HashMap<String, String>();
            base3.put("item1", "老刘");
            base3.put("item2", (int)(1 + Math.random() * (100 - 1 + 1)) + "");
            base3.put("item3", (int)(1 + Math.random() * (100 - 1 + 1)) + "");
    
    
            listItemsByType.add(base1);
            listItemsByType.add(base2);
            listItemsByType.add(base3);
    
            POIXMLDocumentPart poixmlDocumentPart2 = chartsMap.get("/word/charts/chart3.xml");
            PoiWordTools.replaceBarCharts(poixmlDocumentPart2, titleArr, fldNameArr, listItemsByType);
        }
    
    
    
        public static void doCharts4(Map<String, POIXMLDocumentPart> chartsMap) {
            // 数据准备
            List<String> titleArr = new ArrayList<String>();// 标题
            titleArr.add("title");
            titleArr.add("占基金资产净值比例22222(%)");
            titleArr.add("额外的(%)");
            titleArr.add("额外的(%)");
    
            List<String> fldNameArr = new ArrayList<String>();// 字段名
            fldNameArr.add("item1");
            fldNameArr.add("item2");
            fldNameArr.add("item3");
            fldNameArr.add("item4");
    
            // 数据集合
            List<Map<String, String>> listItemsByType = new ArrayList<Map<String, String>>();
    
            // 第一行数据
            Map<String, String> base1 = new HashMap<String, String>();
            base1.put("item1", "材料费用");
            base1.put("item2", (int)(1 + Math.random() * (100 - 1 + 1)) + "");
            base1.put("item3", (int)(1 + Math.random() * (100 - 1 + 1)) + "");
            base1.put("item4", (int)(1 + Math.random() * (100 - 1 + 1)) + "");
    
            // 第二行数据
            Map<String, String> base2 = new HashMap<String, String>();
            base2.put("item1", "出差费用");
            base2.put("item2", (int)(1 + Math.random() * (100 - 1 + 1)) + "");
            base2.put("item3", (int)(1 + Math.random() * (100 - 1 + 1)) + "");
            base2.put("item4", (int)(1 + Math.random() * (100 - 1 + 1)) + "");
    
            // 第三行数据
            Map<String, String> base3 = new HashMap<String, String>();
            base3.put("item1", "住宿费用");
            base3.put("item2", (int)(1 + Math.random() * (100 - 1 + 1)) + "");
            base3.put("item3", (int)(1 + Math.random() * (100 - 1 + 1)) + "");
            base3.put("item4", (int)(1 + Math.random() * (100 - 1 + 1)) + "");
    
    
            listItemsByType.add(base1);
            listItemsByType.add(base2);
            listItemsByType.add(base3);
    
            POIXMLDocumentPart poixmlDocumentPart2 = chartsMap.get("/word/charts/chart4.xml");
            PoiWordTools.replaceLineCharts(poixmlDocumentPart2, titleArr, fldNameArr, listItemsByType);
        }
    
    
        /**
         * 对应文档中的第6个图表(预处理—分公司情况)
         */
        public static void doCharts6(Map<String, POIXMLDocumentPart> chartsMap) {
            // 数据准备
            List<String> titleArr = new ArrayList<String>();// 标题
            titleArr.add("title");
            titleArr.add("投诉受理量(次)");
            titleArr.add("预处理拦截工单量(次)");
            titleArr.add("拦截率");
    
            List<String> fldNameArr = new ArrayList<String>();// 字段名
            fldNameArr.add("item1");
            fldNameArr.add("item2");
            fldNameArr.add("item3");
            fldNameArr.add("item4");
    
            // 数据集合
            List<Map<String, String>> listItemsByType = new ArrayList<Map<String, String>>();
    
            // 第一行数据
            Map<String, String> base1 = new HashMap<String, String>();
            base1.put("item1", "通辽");
            base1.put("item2", (int)(1 + Math.random() * (100 - 1 + 1)) + "");
            base1.put("item3", (int)(1 + Math.random() * (100 - 1 + 1)) + "");
            base1.put("item4", (int)(1 + Math.random() * (100 - 1 + 1)) + "");
    
            // 第二行数据
            Map<String, String> base2 = new HashMap<String, String>();
            base2.put("item1", "呼和浩特");
            base2.put("item2", (int)(1 + Math.random() * (100 - 1 + 1)) + "");
            base2.put("item3", (int)(1 + Math.random() * (100 - 1 + 1)) + "");
            base2.put("item4", (int)(1 + Math.random() * (100 - 1 + 1)) + "");
    
            // 第三行数据
            Map<String, String> base3 = new HashMap<String, String>();
            base3.put("item1", "锡林郭勒");
            base3.put("item2", (int)(1 + Math.random() * (100 - 1 + 1)) + "");
            base3.put("item3", (int)(1 + Math.random() * (100 - 1 + 1)) + "");
            base3.put("item4", (int)(1 + Math.random() * (100 - 1 + 1)) + "");
    
            // 第四行数据
            Map<String, String> base4 = new HashMap<String, String>();
            base4.put("item1", "阿拉善");
            base4.put("item2", (int)(1 + Math.random() * (100 - 1 + 1)) + "");
            base4.put("item3", (int)(1 + Math.random() * (100 - 1 + 1)) + "");
            base4.put("item4", (int)(1 + Math.random() * (100 - 1 + 1)) + "");
    
            // 第五行数据
            Map<String, String> base5 = new HashMap<String, String>();
            base5.put("item1", "巴彦淖尔");
            base5.put("item2", (int)(1 + Math.random() * (100 - 1 + 1)) + "");
            base5.put("item3", (int)(1 + Math.random() * (100 - 1 + 1)) + "");
            base5.put("item4", (int)(1 + Math.random() * (100 - 1 + 1)) + "");
    
            // 第六行数据
            Map<String, String> base6 = new HashMap<String, String>();
            base6.put("item1", "兴安");
            base6.put("item2", (int)(1 + Math.random() * (100 - 1 + 1)) + "");
            base6.put("item3", (int)(1 + Math.random() * (100 - 1 + 1)) + "");
            base6.put("item4", (int)(1 + Math.random() * (100 - 1 + 1)) + "");
    
            // 第七行数据
            Map<String, String> base7 = new HashMap<String, String>();
            base7.put("item1", "乌兰察布");
            base7.put("item2", (int)(1 + Math.random() * (100 - 1 + 1)) + "");
            base7.put("item3", (int)(1 + Math.random() * (100 - 1 + 1)) + "");
            base7.put("item4", (int)(1 + Math.random() * (100 - 1 + 1)) + "");
    
            // 第八行数据
            Map<String, String> base8 = new HashMap<String, String>();
            base8.put("item1", "乌海");
            base8.put("item2", (int)(1 + Math.random() * (100 - 1 + 1)) + "");
            base8.put("item3", (int)(1 + Math.random() * (100 - 1 + 1)) + "");
            base8.put("item4", (int)(1 + Math.random() * (100 - 1 + 1)) + "");
    
            // 第九行数据
            Map<String, String> base9 = new HashMap<String, String>();
            base9.put("item1", "赤峰");
            base9.put("item2", (int)(1 + Math.random() * (100 - 1 + 1)) + "");
            base9.put("item3", (int)(1 + Math.random() * (100 - 1 + 1)) + "");
            base9.put("item4", (int)(1 + Math.random() * (100 - 1 + 1)) + "");
    
            // 第十行数据
            Map<String, String> base10 = new HashMap<String, String>();
            base10.put("item1", "包头");
            base10.put("item2", (int)(1 + Math.random() * (100 - 1 + 1)) + "");
            base10.put("item3", (int)(1 + Math.random() * (100 - 1 + 1)) + "");
            base10.put("item4", (int)(1 + Math.random() * (100 - 1 + 1)) + "");
    
            // 第十一行数据
            Map<String, String> base11 = new HashMap<String, String>();
            base11.put("item1", "呼伦贝尔");
            base11.put("item2", (int)(int)(1 + Math.random() * (100 - 1 + 1)) + "");
            base11.put("item3", (int)(1 + Math.random() * (100 - 1 + 1)) + "");
            base11.put("item4", (int)(1 + Math.random() * (100 - 1 + 1)) + "");
    
            // 第十二行数据
            Map<String, String> base12 = new HashMap<String, String>();
            base12.put("item1", "鄂尔多斯");
            base12.put("item2", (int)(1 + Math.random() * (100 - 1 + 1)) + "");
            base12.put("item3", (int)(1 + Math.random() * (100 - 1 + 1)) + "");
            base12.put("item4", (int)(1 + Math.random() * (100 - 1 + 1)) + "");
    
            listItemsByType.add(base1);
            listItemsByType.add(base2);
            listItemsByType.add(base3);
            listItemsByType.add(base4);
            listItemsByType.add(base5);
            listItemsByType.add(base6);
            listItemsByType.add(base7);
            listItemsByType.add(base8);
            listItemsByType.add(base9);
            listItemsByType.add(base10);
            listItemsByType.add(base11);
            listItemsByType.add(base12);
    
            // 下标0的图表-折线图
            POIXMLDocumentPart poixmlDocumentPart5 = chartsMap.get("/word/charts/chart6.xml");
            PoiWordTools.replaceCombinationCharts(poixmlDocumentPart5, titleArr, fldNameArr, listItemsByType);
        }
    
    
    }
    
    

    工具类也是参考的加上游客的意见

    package com.turing.report.controller;
    
    import org.apache.poi.ooxml.POIXMLDocumentPart;
    import org.apache.poi.ss.usermodel.Sheet;
    import org.apache.poi.ss.usermodel.Workbook;
    import org.apache.poi.ss.util.CellRangeAddress;
    import org.apache.poi.xssf.usermodel.XSSFWorkbook;
    import org.apache.poi.xwpf.usermodel.XWPFChart;
    import org.apache.poi.xwpf.usermodel.XWPFTableCell;
    import org.openxmlformats.schemas.drawingml.x2006.chart.*;
    import org.openxmlformats.schemas.wordprocessingml.x2006.main.*;
    import org.springframework.stereotype.Component;
    
    import java.io.IOException;
    import java.io.OutputStream;
    import java.math.BigDecimal;
    import java.math.BigInteger;
    import java.util.List;
    import java.util.Map;
    
    
    
    /**
     * poi生成word的工具类
     */
    @Component
    public class PoiWordTools {
     
        private static final BigDecimal bd2 = new BigDecimal("2");
     
     
        /**
         * 调用替换柱状图数据
         */
        public static void replaceBarCharts(POIXMLDocumentPart poixmlDocumentPart,
                                            List<String> titleArr, List<String> fldNameArr, List<Map<String, String>> listItemsByType) {
            XWPFChart chart = (XWPFChart) poixmlDocumentPart;
            chart.getCTChart();
     
            //根据属性第一列名称切换数据类型
            CTChart ctChart = chart.getCTChart();
            CTPlotArea plotArea = ctChart.getPlotArea();
     
            CTBarChart barChart = plotArea.getBarChartArray(0);
            List<CTBarSer> BarSerList = barChart.getSerList();  // 获取柱状图单位
     
            //刷新内置excel数据
           refreshExcel(chart, listItemsByType, fldNameArr, titleArr);
            //刷新页面显示数据
            refreshBarStrGraphContent(barChart, BarSerList, listItemsByType, fldNameArr, 1);
     
        }
     
     
        /**
         * 调用替换折线图数据
         */
        public static void replaceLineCharts(POIXMLDocumentPart poixmlDocumentPart,
                                             List<String> titleArr, List<String> fldNameArr, List<Map<String, String>> listItemsByType) {
            XWPFChart chart = (XWPFChart) poixmlDocumentPart;
            chart.getCTChart();
     
            //根据属性第一列名称切换数据类型
            CTChart ctChart = chart.getCTChart();
            CTPlotArea plotArea = ctChart.getPlotArea();
     
            CTLineChart lineChart = plotArea.getLineChartArray(0);
            List<CTLineSer> lineSerList = lineChart.getSerList();   // 获取折线图单位
     
            //刷新内置excel数据
            refreshExcel(chart, listItemsByType, fldNameArr, titleArr);
            //刷新页面显示数据
            refreshLineStrGraphContent(lineChart, lineSerList, listItemsByType, fldNameArr, 1);
     
        }
     
     
        /**
         * 调用替换饼图数据
         */
        public static void replacePieCharts(POIXMLDocumentPart poixmlDocumentPart,
                                            List<String> titleArr, List<String> fldNameArr, List<Map<String, String>> listItemsByType) {
            XWPFChart chart = (XWPFChart) poixmlDocumentPart;
            chart.getCTChart();
     
            //根据属性第一列名称切换数据类型
            CTChart ctChart = chart.getCTChart();
            CTPlotArea plotArea = ctChart.getPlotArea();
     
            CTPieChart pieChart = plotArea.getPieChartArray(0);
            List<CTPieSer> pieSerList = pieChart.getSerList();  // 获取饼图单位
     
            //刷新内置excel数据
            refreshExcel(chart, listItemsByType, fldNameArr, titleArr);
            //刷新页面显示数据
            refreshPieStrGraphContent(pieChart, pieSerList, listItemsByType, fldNameArr, 1);
     
        }
     
     
        /**
         * 调用替换柱状图、折线图组合数据
         */
        public static void replaceCombinationCharts(POIXMLDocumentPart poixmlDocumentPart,
                                                    List<String> titleArr, List<String> fldNameArr, List<Map<String, String>> listItemsByType) {
            XWPFChart chart = (XWPFChart) poixmlDocumentPart;
            chart.getCTChart();
     
            //根据属性第一列名称切换数据类型
            CTChart ctChart = chart.getCTChart();
            CTPlotArea plotArea = ctChart.getPlotArea();
     
            CTBarChart barChart = plotArea.getBarChartArray(0);
            List<CTBarSer> barSerList = barChart.getSerList();  // 获取柱状图单位
            //刷新内置excel数据
            refreshExcel(chart, listItemsByType, fldNameArr, titleArr);
            //刷新页面显示数据
            refreshBarStrGraphContent(barChart, barSerList, listItemsByType, fldNameArr, 1);
     
     
            CTBarChart barChart2 = plotArea.getBarChartArray(0);
            List<CTBarSer> barSerList2 = barChart2.getSerList();  // 获取柱状图单位
            //刷新内置excel数据
            refreshExcel(chart, listItemsByType, fldNameArr, titleArr);
            //刷新页面显示数据
            refreshBarStrGraphContent(barChart2, barSerList2, listItemsByType, fldNameArr, 1);
     
     
            CTLineChart lineChart = plotArea.getLineChartArray(0);
            List<CTLineSer> lineSerList = lineChart.getSerList();   // 获取折线图单位
            //刷新内置excel数据
            refreshExcel(chart, listItemsByType, fldNameArr, titleArr);
            //刷新页面显示数据
            refreshLineStrGraphContent(lineChart, lineSerList, listItemsByType, fldNameArr, 1);
     
        }
     
     
        /**
         * 刷新折线图数据方法
         *
         * @param typeChart
         * @param serList
         * @param dataList
         * @param fldNameArr
         * @param position
         * @return
         */
        public static boolean refreshLineStrGraphContent(Object typeChart,
                                                         List<?> serList, List<Map<String, String>> dataList, List<String> fldNameArr, int position) {
     
            boolean result = true;
            //更新数据区域
            for (int i = 0; i < serList.size(); i++) {
                //CTSerTx tx=null;
                CTAxDataSource cat = null;
                CTNumDataSource val = null;
                CTLineSer ser = ((CTLineChart) typeChart).getSerArray(i);
                //tx= ser.getTx();
                // Category Axis Data
                cat = ser.getCat();
                // 获取图表的值
                val = ser.getVal();
                // strData.set
                CTStrData strData = cat.getStrRef().getStrCache();
                CTNumData numData = val.getNumRef().getNumCache();
                strData.setPtArray((CTStrVal[]) null); // unset old axis text
                numData.setPtArray((CTNumVal[]) null); // unset old values
     
                // set model
                long idx = 0;
                for (int j = 0; j < dataList.size(); j++) {
                    //判断获取的值是否为空
                    String value = "0";
                    if (new BigDecimal(dataList.get(j).get(fldNameArr.get(i + position))) != null) {
                        value = new BigDecimal(dataList.get(j).get(fldNameArr.get(i + position))).toString();
                    }
                    if (!"0".equals(value)) {
                        CTNumVal numVal = numData.addNewPt();//序列值
                        numVal.setIdx(idx);
                        numVal.setV(value);
                    }
                    CTStrVal sVal = strData.addNewPt();//序列名称
                    sVal.setIdx(idx);
                    sVal.setV(dataList.get(j).get(fldNameArr.get(0)));
                    idx++;
                }
                numData.getPtCount().setVal(idx);
                strData.getPtCount().setVal(idx);
     
     
                //赋值横坐标数据区域
                String axisDataRange = new CellRangeAddress(1, dataList.size(), 0, 0)
                        .formatAsString("Sheet1", false);
                cat.getStrRef().setF(axisDataRange);
     
                //数据区域
                String numDataRange = new CellRangeAddress(1, dataList.size(), i + position, i + position)
                        .formatAsString("Sheet1", false);
                val.getNumRef().setF(numDataRange);
     
                // 设置系列生成方向
     
     
            }
            return result;
        }
     
     
        /**
         * 刷新柱状图数据方法
         *
         * @param typeChart
         * @param serList
         * @param dataList
         * @param fldNameArr
         * @param position
         * @return
         */
        public  static boolean refreshBarStrGraphContent(Object typeChart,
                                                        List<?> serList, List<Map<String, String>> dataList, List<String> fldNameArr, int position) {
            boolean result = true;
            //更新数据区域
            for (int i = 0; i < serList.size(); i++) {
                //CTSerTx tx=null;
                CTAxDataSource cat = null;
                CTNumDataSource val = null;
                CTBarSer ser = ((CTBarChart) typeChart).getSerArray(i);
                //tx= ser.getTx();
                // Category Axis Data
                cat = ser.getCat();
                // 获取图表的值
                val = ser.getVal();
                // strData.set
                CTStrData strData = cat.getStrRef().getStrCache();
                CTNumData numData = val.getNumRef().getNumCache();
                strData.setPtArray((CTStrVal[]) null); // unset old axis text
                numData.setPtArray((CTNumVal[]) null); // unset old values
     
                // set model
                long idx = 0;
                for (int j = 0; j < dataList.size(); j++) {
                    //判断获取的值是否为空
                    String value = "0";
    
                    if (new BigDecimal(dataList.get(j).get(fldNameArr.get(i+position))) != null) {
                        value = new BigDecimal(dataList.get(j).get(fldNameArr.get(i + position))).toString();
                    }
                    if (!"0".equals(value)) {
                        CTNumVal numVal = numData.addNewPt();//序列值
                        numVal.setIdx(idx);
                        numVal.setV(value);
                    }
                    CTStrVal sVal = strData.addNewPt();//序列名称
                    sVal.setIdx(idx);
                    sVal.setV(dataList.get(j).get(fldNameArr.get(0)));
                    idx++;
                }
                numData.getPtCount().setVal(idx);
                strData.getPtCount().setVal(idx);
     
     
                //赋值横坐标数据区域
                String axisDataRange = new CellRangeAddress(1, dataList.size(), 0, 0)
                        .formatAsString("Sheet1", true);
                cat.getStrRef().setF(axisDataRange);
     
                //数据区域
                String numDataRange = new CellRangeAddress(1, dataList.size(), i + position, i + position)
                        .formatAsString("Sheet1", true);
                val.getNumRef().setF(numDataRange);
     
            }
            return result;
        }
     
     
     
        /**
         * 刷新饼图数据方法
         *
         * @param typeChart
         * @param serList
         * @param dataList
         * @param fldNameArr
         * @param position
         * @return
         */
        public static boolean refreshPieStrGraphContent(Object typeChart,
                                                        List<?> serList, List<Map<String, String>> dataList, List<String> fldNameArr, int position) {
     
            boolean result = true;
            //更新数据区域
            for (int i = 0; i < serList.size(); i++) {
                //CTSerTx tx=null;
                CTAxDataSource cat = null;
                CTNumDataSource val = null;
                CTPieSer ser = ((CTPieChart) typeChart).getSerArray(i);
     
                //tx= ser.getTx();
                // Category Axis Data
                cat = ser.getCat();
                // 获取图表的值
                val = ser.getVal();
                // strData.set
                CTStrData strData = cat.getStrRef().getStrCache();
                CTNumData numData = val.getNumRef().getNumCache();
                strData.setPtArray((CTStrVal[]) null); // unset old axis text
                numData.setPtArray((CTNumVal[]) null); // unset old values
     
                // set model
                long idx = 0;
                for (int j = 0; j < dataList.size(); j++) {
                    //判断获取的值是否为空
                    String value = "0";
                    if (new BigDecimal(dataList.get(j).get(fldNameArr.get(i + position))) != null) {
                        value = new BigDecimal(dataList.get(j).get(fldNameArr.get(i + position))).toString();
                    }
                    if (!"0".equals(value)) {
                        CTNumVal numVal = numData.addNewPt();//序列值
                        numVal.setIdx(idx);
                        numVal.setV(value);
                    }
                    CTStrVal sVal = strData.addNewPt();//序列名称
                    sVal.setIdx(idx);
                    sVal.setV(dataList.get(j).get(fldNameArr.get(0)));
                    idx++;
                }
                numData.getPtCount().setVal(idx);
                strData.getPtCount().setVal(idx);
     
     
                //赋值横坐标数据区域
                String axisDataRange = new CellRangeAddress(1, dataList.size(), 0, 0)
                        .formatAsString("Sheet1", true);
                cat.getStrRef().setF(axisDataRange);
     
                //数据区域
                String numDataRange = new CellRangeAddress(1, dataList.size(), i + position, i + position)
                        .formatAsString("Sheet1", true);
                val.getNumRef().setF(numDataRange);
            }
            return result;
        }
     
     
        /**
         * 刷新内置excel数据
         *
         * @param chart
         * @param dataList
         * @param fldNameArr
         * @param titleArr
         * @return
         */
        public static boolean refreshExcel(XWPFChart chart,
                                           List<Map<String, String>> dataList, List<String> fldNameArr, List<String> titleArr) {
            boolean result = true;
            Workbook wb = new XSSFWorkbook();
            Sheet sheet = wb.createSheet("Sheet1");
            //根据数据创建excel第一行标题行
            for (int i = 0; i < titleArr.size(); i++) {
                if (sheet.getRow(0) == null) {
                    sheet.createRow(0).createCell(i).setCellValue(titleArr.get(i) == null ? "" : titleArr.get(i));
                } else {
                    sheet.getRow(0).createCell(i).setCellValue(titleArr.get(i) == null ? "" : titleArr.get(i));
                }
            }
     
            //遍历数据行
            for (int i = 0; i < dataList.size(); i++) {
                Map<String, String> baseFormMap = dataList.get(i);//数据行
                //fldNameArr字段属性
                for (int j = 0; j < fldNameArr.size(); j++) {
                    if (sheet.getRow(i + 1) == null) {
                        if (j == 0) {
                            try {
                                sheet.createRow(i + 1).createCell(j).setCellValue(baseFormMap.get(fldNameArr.get(j)) == null ? "" : baseFormMap.get(fldNameArr.get(j)));
                            } catch (Exception e) {
                                if (baseFormMap.get(fldNameArr.get(j)) == null) {
                                    sheet.createRow(i + 1).createCell(j).setCellValue("");
                                } else {
                                    sheet.createRow(i + 1).createCell(j).setCellValue(baseFormMap.get(fldNameArr.get(j)));
                                }
                            }
                        }
                    } else {
                        BigDecimal b = new BigDecimal(baseFormMap.get(fldNameArr.get(j)));
                        double value = 0d;
                        if (b != null) {
                            value = b.doubleValue();
                        }
                        if (value == 0) {
                            sheet.getRow(i + 1).createCell(j);
                        } else {
                            sheet.getRow(i + 1).createCell(j).setCellValue(b.doubleValue());
                        }
                    }
                }
     
            }
            // 更新嵌入的workbook
    
            List<POIXMLDocumentPart> pxdList = chart.getRelations();
            if(pxdList!=null&&pxdList.size()>0){
                for(int i = 0;i<pxdList.size();i++){
                    if(pxdList.get(i).toString().contains("sheet")){//判断为sheet再去进行更新表格数据
                        POIXMLDocumentPart xlsPart =  pxdList.get(i);
                        OutputStream xlsOut = xlsPart.getPackagePart().getOutputStream();
    
                        try {
                            wb.write(xlsOut);
                            xlsOut.close();
                        } catch (IOException e) {
                            e.printStackTrace();
                            result = false;
                        } finally {
                            if (wb != null) {
                                try {
                                    wb.close();
                                } catch (IOException e) {
                                    e.printStackTrace();
                                    result = false;
                                }
                            }
                        }
                        break;
                    }
                }
            }
            return result;
        }
     
     
        /**
         * 设置表格样式
         *
         * @param cell
         * @param fontName
         * @param fontSize
         * @param fontBlod
         * @param alignment
         * @param vertical
         * @param fontColor
         * @param bgColor
         * @param cellWidth
         * @param content
         */
        public static void setWordCellSelfStyle(XWPFTableCell cell, String fontName, String fontSize, int fontBlod,
                                                String alignment, String vertical, String fontColor,
                                                String bgColor, String cellWidth, String content) {
     
            //poi对字体大小设置特殊,不支持小数,但对原word字体大小做了乘2处理
            BigInteger bFontSize = new BigInteger("24");
            if (fontSize != null && !fontSize.equals("")) {
                //poi对字体大小设置特殊,不支持小数,但对原word字体大小做了乘2处理
                BigDecimal fontSizeBD = new BigDecimal(fontSize);
                fontSizeBD = bd2.multiply(fontSizeBD);
                fontSizeBD = fontSizeBD.setScale(0, BigDecimal.ROUND_HALF_UP);//这里取整
                bFontSize = new BigInteger(fontSizeBD.toString());// 字体大小
            }
     
            // 设置单元格宽度
            cell.setWidth(cellWidth);
     
            //=====获取单元格
            CTTc tc = cell.getCTTc();
            //====tcPr开始====》》》》
            CTTcPr tcPr = tc.getTcPr();//获取单元格里的<w:tcPr>
            if (tcPr == null) {//没有<w:tcPr>,创建
                tcPr = tc.addNewTcPr();
            }
     
            //  --vjc开始-->>
            CTVerticalJc vjc = tcPr.getVAlign();//获取<w:tcPr>  的<w:vAlign w:val="center"/>
            if (vjc == null) {//没有<w:w:vAlign/>,创建
                vjc = tcPr.addNewVAlign();
            }
            //设置单元格对齐方式
            vjc.setVal(vertical.equals("top") ? STVerticalJc.TOP : vertical.equals("bottom") ? STVerticalJc.BOTTOM : STVerticalJc.CENTER); //垂直对齐
     
            CTShd shd = tcPr.getShd();//获取<w:tcPr>里的<w:shd w:val="clear" w:color="auto" w:fill="C00000"/>
            if (shd == null) {//没有<w:shd>,创建
                shd = tcPr.addNewShd();
            }
            // 设置背景颜色
            shd.setFill(bgColor.substring(1));
            //《《《《====tcPr结束====
     
            //====p开始====》》》》
            CTP p = tc.getPList().get(0);//获取单元格里的<w:p w:rsidR="00C36068" w:rsidRPr="00B705A0" w:rsidRDefault="00C36068" w:rsidP="00C36068">
     
            //---ppr开始--->>>
            CTPPr ppr = p.getPPr();//获取<w:p>里的<w:pPr>
            if (ppr == null) {//没有<w:pPr>,创建
                ppr = p.addNewPPr();
            }
            //  --jc开始-->>
            CTJc jc = ppr.getJc();//获取<w:pPr>里的<w:jc w:val="left"/>
            if (jc == null) {//没有<w:jc/>,创建
                jc = ppr.addNewJc();
            }
            //设置单元格对齐方式
            jc.setVal(alignment.equals("left") ? STJc.LEFT : alignment.equals("right") ? STJc.RIGHT : STJc.CENTER); //水平对齐
            //  <<--jc结束--
            //  --pRpr开始-->>
            CTParaRPr pRpr = ppr.getRPr(); //获取<w:pPr>里的<w:rPr>
            if (pRpr == null) {//没有<w:rPr>,创建
                pRpr = ppr.addNewRPr();
            }
            CTFonts pfont = pRpr.getRFonts();//获取<w:rPr>里的<w:rFonts w:ascii="宋体" w:eastAsia="宋体" w:hAnsi="宋体"/>
            if (pfont == null) {//没有<w:rPr>,创建
                pfont = pRpr.addNewRFonts();
            }
            //设置字体
            pfont.setAscii(fontName);
            pfont.setEastAsia(fontName);
            pfont.setHAnsi(fontName);
     
            CTOnOff pb = pRpr.getB();//获取<w:rPr>里的<w:b/>
            if (pb == null) {//没有<w:b/>,创建
                pb = pRpr.addNewB();
            }
            //设置字体是否加粗
            pb.setVal(fontBlod == 1 ? STOnOff.ON : STOnOff.OFF);
     
            CTHpsMeasure psz = pRpr.getSz();//获取<w:rPr>里的<w:sz w:val="32"/>
            if (psz == null) {//没有<w:sz w:val="32"/>,创建
                psz = pRpr.addNewSz();
            }
            // 设置单元格字体大小
            psz.setVal(bFontSize);
            CTHpsMeasure pszCs = pRpr.getSzCs();//获取<w:rPr>里的<w:szCs w:val="32"/>
            if (pszCs == null) {//没有<w:szCs w:val="32"/>,创建
                pszCs = pRpr.addNewSzCs();
            }
            // 设置单元格字体大小
            pszCs.setVal(bFontSize);
            //  <<--pRpr结束--
            //<<<---ppr结束---
     
            //---r开始--->>>
            List<CTR> rlist = p.getRList(); //获取<w:p>里的<w:r w:rsidRPr="00B705A0">
            CTR r = null;
            if (rlist != null && rlist.size() > 0) {//获取第一个<w:r>
                r = rlist.get(0);
            } else {//没有<w:r>,创建
                r = p.addNewR();
            }
            //--rpr开始-->>
            CTRPr rpr = r.getRPr();//获取<w:r w:rsidRPr="00B705A0">里的<w:rPr>
            if (rpr == null) {//没有<w:rPr>,创建
                rpr = r.addNewRPr();
            }
            //->-
            CTFonts font = rpr.getRFonts();//获取<w:rPr>里的<w:rFonts w:ascii="宋体" w:eastAsia="宋体" w:hAnsi="宋体" w:hint="eastAsia"/>
            if (font == null) {//没有<w:rFonts>,创建
                font = rpr.addNewRFonts();
            }
            //设置字体
            font.setAscii(fontName);
            font.setEastAsia(fontName);
            font.setHAnsi(fontName);
     
            CTOnOff b = rpr.getB();//获取<w:rPr>里的<w:b/>
            if (b == null) {//没有<w:b/>,创建
                b = rpr.addNewB();
            }
            //设置字体是否加粗
            b.setVal(fontBlod == 1 ? STOnOff.ON : STOnOff.OFF);
            CTColor color = rpr.getColor();//获取<w:rPr>里的<w:color w:val="FFFFFF" w:themeColor="background1"/>
            if (color == null) {//没有<w:color>,创建
                color = rpr.addNewColor();
            }
            // 设置字体颜色
            if (content.contains("↓")) {
                color.setVal("43CD80");
            } else if (content.contains("↑")) {
                color.setVal("943634");
            } else {
                color.setVal(fontColor.substring(1));
            }
            CTHpsMeasure sz = rpr.getSz();
            if (sz == null) {
                sz = rpr.addNewSz();
            }
            sz.setVal(bFontSize);
            CTHpsMeasure szCs = rpr.getSzCs();
            if (szCs == null) {
                szCs = rpr.addNewSz();
            }
            szCs.setVal(bFontSize);
            //-<-
            //<<--rpr结束--
            List<CTText> tlist = r.getTList();
            CTText t = null;
            if (tlist != null && tlist.size() > 0) {//获取第一个<w:r>
                t = tlist.get(0);
            } else {//没有<w:r>,创建
                t = r.addNewT();
            }
            t.setStringValue(content);
            //<<<---r结束---
        }
     
    }
    
    

    模板需要按照楼主的模板来做

    展开全文
  • 把上面的柱状图改成下面这种,在表格显示条形图。 2、解决方法 首先这个图肯定要对这一列进行处理,这里的表格用的是elementUI的table,官方文档提供了自定义列样式的方法 通过这个方法动态的改变单元格的背景...
  • HTML的table,只要将需要插入echarts图表的格子设定为明确的宽高(不能为百分比),并赋予一个id,就可以插入echarts图表。 如示例所示: <!DOCTYPE html> <html> <head> <meta...
  • vue+elementui使用echarts给柱形图添加背景色 首先使用npm安装echarts npm install echarts --save //or(或者使用) cnpm install echarts --save main引入echarts import echarts from 'echarts' Vue....
  • 我们项目经常需要使用一些折线图、柱状图、饼状图等等,之前使用过heightCharts,后来觉得这货不开源,只是做展示的话又点浪费时间,于是看了下eCharts,于是vue-cli搭建的项目中添加了eCharts,下面是具体...
  • 2019年即将结束,各公司部门也开始进行年度数据回顾。比如2018和2019年各季度同期数据对比。一般情况下,做两组...所以今天我们来学习一种特殊的柱形图,如下图所示:新的柱形图中,我们可以看到各季度数据,又能...
  • Webjsp页面生成柱状图,折线图,饼状图

    万次阅读 热门讨论 2017-09-08 17:52:23
    一、前言 实际开发过程柱状图,折线图,饼状图一些OA,ERP是非常常见的功能,特别是需求需求方是业务型,数据分析型公司,下面的例子简单实现了饼状图,柱状图,折线图jsp生成。(ps:新手上路,不喜勿...
  • #提取表格数据 data=xlrd.open_workbook( 'AutoData.xlsx' ) table = data.sheets()[ 0 ] nrows = table.nrows ncols = table.ncols DrawCall=[] for i in range (nrows): DrawCall.append(table.row_values...
  • 这里放上我比较喜欢的一种条形设置,使用的是之前爬取的重庆地区链家二手房数据,数据如下: 链接:https://pan.baidu.com/s/17CMwUAdseO8tJWHEQiA8_A 提取码:dl2g import pandas as pd import matplotlib....
  • Java Poi流根据Word模板插入相应的文本、表格和图片,并生成新的Word报告。文档提供相应的jar包和Word模板文件,表格支持动态添加数据,插入图片支持多种格式!
  • Excel表格柱状图,反映增长差值

    千次阅读 2020-08-22 12:00:43
    今天尝试做了一下最近五天新冠肺炎确诊人数的增长柱状图,想要能够反映出每日增长量的。所以饶了蛮大的弯,但做出来回想其实步骤很简单,只要三...2、如图,柱状图中,单击选中昨日确诊(橙色列),右键,选择设置系列
  • 参考文章的基础上,增加了扩展。感谢被参考的老哥。 代码直接从日记复制过来的,不方便复制的可以私信发示例代码,不知道怎么上传附件了。...说明:poi3.x的版本,没有对图表的支持,至少目前为止没...
  • 用python 分析表格数据,并绘制成柱状图, 让大家感受一下用python来绘制图表是一种什么感觉。 这是我们今天要分析的表格数据:表格名称为test.xlsx,分为两列,一列是包含姓名信息,一列是包含年龄信息 1、首先...
  • 柱状图时,要想设置图形的标题,你必须先设置 chart.HasTitle = true;不然chart.ChartTitle.Text会引发异常,这儿很奇怪饼图并不需要这么设置,微软程序员也有坑人的时候。  2.多线程操作生成word报告时,...
  • 完成一个简易的可交互的柱状图 排序 添加 const WIDTH = 600;// 画布宽度 const HEIGHT = 400;// 画布高度 const PADDING = 30;// 画布四周空间 // 模拟数据 let dataList = [24, 36, 15, 8, 28, 18]; /...
  • 添加迷你图(折线、柱形图) 迷你折线图 1、选中一个可以插入迷你图的单元格 2、切换到插入菜单栏 3、选择迷你图中的折线图 4、选择所需的数据范围 5、点击确定 6、把鼠标放到迷你折线图所在单元格的右下角变成...
  • 根据用户数据表格html5绘制饼状图形代码 根据用户数据表格html5绘制饼状图形代码 根据用户数据表格html5绘制饼状图形代码
  • 具体方法如下:  1、百度搜索栏输入【patternui.zip 下载】,下载并解压; ... 2、将解压文件【PatternUI.xlam】复制【C:... 3、打开Excel2013,双击ADDINS文件夹【PatternUI.xlam】,Excel创建柱状
  • -table表格中 根据 scope.$index动态设置元素的id ,便于指定单元格的echarts初始化; -单元格触发一个方法,传入当前的scope.row数据或者指定其他数据,并且传入 scope.$index 以及一个字符串便于识别当前是...
  • 3、修改.ftl文件并生成最终的模板文件 ① 修改图片的数据内容使用表达式代替 替换之后如下: ② 数据表格中添加循环标签 二、通过模板文件生成word文档 1、添加pom.xml的依赖 <dependency> <groupId>org....
  • excel表格中,展示数据最好的方式是做成图表。但如果遇到数据比较多时,你做的图表会让领导看的头晕眼花。全年4个季度的商品销售统计表如果做成图表,绝大多数人都是直接插入柱形图。结果是这样的如果单看某个产品...
  • 今日给大家分享一个Python读取Excel表格,同时采用表格中的数值画图柱状图和折线图,这里只需要几行代码便可以实。首先我们需要安装一个Excel操作的库xlrd,这个很简单,安装Python后直接DOS命令下输入pip ...
  • 负责招聘的朋友Y,昨天发来了一个她实际...堆积柱形图,会将所有数据堆积一根柱子上,无法做到入职和离职分成两个柱子。所以,我们要先整理一下原始数据的表格结构。现在的数据表结构是列多行少,不便于阅读。我们...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,939
精华内容 3,175
关键字:

如何在表格中添加柱形图