springboot+mybatisplus+thymeleaf导入导出excel表格和制作饼状图,柱状图

SpringBoot+MybatisPlus+Thymeleaf:Excel导入导出及图表绘制
本文介绍了如何在SpringBoot项目中结合MybatisPlus和Thymeleaf实现Excel的导入导出功能,并展示了如何制作饼状图和柱状图。文章详细讲解了项目结构、依赖配置、前端JavaScript代码以及后端的控制器、Service和DAO层的实现。此外,还提供了数据查询方法和前端图表绘制的示例代码。

这是我们的项目结构。

我们导入的依赖。

 application.yml配置文件。

goods实体类

type实体类

 

1.导出

前端代码:

JavaScript代码:

通过这里跳转到后端

 导出的工具类

新建一个ObjectExcelView类,放入我们设置导出控制类

下面是我们的controller类

dao层的方法,复制到service 层,lmpl实现一下就行了,其实查询所有可以直接用mybatisplus自带的方法,我这里是和其他方法冲突了,所以新建了一个方法 

 这里主要就是通过for循环将我们的数据循环到excel表格,注意这里put进去的key值,

到这里我们的导出就做好了。

2.导入

前端代码:

 我这里使用的是form表单的方式进行的上传文件,导入的。

导入的工具类。

 导入的控制类ObjectExcelRead

package com.wxy.mapper;

import com.wxy.controller.util.PageData;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

import java.io.File;
import java.io.FileInputStream;
import java.util.ArrayList;
import java.util.List;

public class ObjectExcelRead {
    public static List<Object> readExcel(String filepath, String filename, int startrow, int startcol, int sheetnum) {
        List<Object> varList = new ArrayList<Object>();

        try {
            File target = new File(filepath, filename);
            FileInputStream fi = new FileInputStream(target);
            HSSFWorkbook wb = new HSSFWorkbook(fi);
            HSSFSheet sheet = wb.getSheetAt(sheetnum);                    //sheet 从0开始
            int rowNum = sheet.getLastRowNum() + 1;                    //取得最后一行的行号

            for (int i = startrow; i < rowNum; i++) {                    //行循环开始

                PageData varpd = new PageData();
                HSSFRow row = sheet.getRow(i);                            //行
                int cellNum = row.getLastCellNum();                    //每行的最后一个单元格位置

                for (int j = startcol; j < cellNum; j++) {                //列循环开始

                    HSSFCell cell = row.getCell(Short.parseShort(j + ""));
                    Object cellValue = null;
                    if (null != cell) {
                        switch (cell.getCellType()) {                    // 判断excel单元格内容的格式,并对其进行转换,以便插入数据库
                            case _NONE:
                                cellValue = String.valueOf((int) cell.getNumericCellValue());
                                break;
                            case STRING:
                                cellValue = cell.getStringCellValue();
                                break;
                            case NUMERIC:
                                cellValue = cell.getNumericCellValue() + "";
                                // cellValue = String.valueOf(cell.getDateCellValue());
                                break;
                            case BLANK:
                                cellValue = "";
                                break;
                            case BOOLEAN:
                                cellValue = String.valueOf(cell.getBooleanCellValue());
                                break;
                            case ERROR:
                                cellValue = String.valueOf(cell.getErrorCellValue());
                                break;
                        }
                    } else {
                        cellValue = "";
                    }
                    varpd.put("var" + j, cellValue);
                }
                varList.add(varpd);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return varList;
    }
}

 controller层:

 这样我们的导入也就做好了。

 下面我们来做线形图,饼状图,柱状图

其实也就一个查询所有的方法将数据查询出来,然后通过前端的Ajax进行处理

dao层

 

service层

 

serviceImpl层

 

controller层

前端代码:

 下载JavaScript库

三个图的div

 

 

这里需要改的就是提交方法,还有点出来的属性。

需要注意的就是你要展示什么数据,就点什么属性我这里的是商品名称和商品的数量。

 

评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值