用springboot+mybatisplus+bootstrap实现excel的导出

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

提示:

用idea开发软件,写导出代码。 其他开发软件可供参考!


提示:以下是本篇文章正文内容,下面案例可供参考

一、pom文件导入对应的jar包

<!-- poi -->
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>3.10-FINAL</version>
        </dependency>
        
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>3.10-FINAL</version>
        </dependency>

说明:这段代码粘贴到pom文件里 刷新文件可自动下载


二、前台HTML页面

1.引入bootstrap文件

代码如下(示例):引入对应的js和css

<!-- file 文件 -->
<script src="../js/bootstrap/bootstrap-fileinput/js/fileinput.js"></script>
<script src="../js/bootstrap/bootstrap-fileinput/js/locales/zh.js"></script>
<link rel="stylesheet" href="../js/bootstrap/bootstrap-fileinput/css/fileinput.css">

2.javascript里定义函数映射到后台路径

代码如下(示例):

//导出
exportUser = function(){

    location.href="/user/exportUser";
}

location.href="/user/exportUser";  后台映射路径名  自定义


三、后台

// 导出
@Override
public void exportUser(HttpServletResponse response) {
    // 先查询 把要导出的数据查询出来
     List<UserBean> list = userDao.selectList(null);
     //需要转码的字段 先定义业务字段 用于存数据 然后下面把对应map存的字段替换掉
    for (UserBean String : list) {
        if (String.getSeniority() == 1){
            String.setNewSeniority("无工作年限");
        }else if (String.getSeniority() == 2){
            String.setNewSeniority("1-2年");
        }else if (String.getSeniority() == 3){
            String.setNewSeniority("2-3年");
        }else if (String.getSeniority() == 4){
            String.setNewSeniority("3-5年");
        }else if (String.getSeniority() == 5){
            String.setNewSeniority("5年以上");
        }
        if (String.getEducation() == 1){
            String.setNewEducation("大专");
        }else if (String.getEducation() == 2){
            String.setNewEducation("本科");
        }else if (String.getEducation() == 3){
            String.setNewEducation("硕士");
        }
    }
     // new 有顺序的map 泛型 String
    Map<String, String> map = new LinkedHashMap<>();
    map.put("id","id");
    map.put("companyName","公司名称");
    map.put("demand","招聘需求");
    map.put("address","地址");
    map.put("newSeniority","工作年限");
    map.put("salaryLow","最低薪资");
    map.put("salaryHight","最高薪资");
    map.put("newEducation","学历");

    String jsonString = JSONArray.toJSONString(list);//---把  list 转成  string
    JSONArray array = JSONArray.parseArray(jsonString);//---string   转成 json数组

    PoiUtils.exportExcel(response,array,map,"招聘需求","招聘需求表.xlsx");
}

说明: PoiUtils.exportExcel  调用的是 PoiUtils工具类里的 exportExcel导出方法   

 对应的工具类  仅供引用!!!

 /** 
 * <pre>项目名称:
 * 文件名称:PoiUtils.java 
 */  
package com.jk.zy.utils;

import java.io.IOException;
import java.io.InputStream;
import java.net.URLEncoder;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.DateUtil;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.web.multipart.MultipartFile;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;


public class PoiUtils {
	
	/**
	 * <pre>importExcel(poi导入excel)   
	 
	 */
	public static List importExcel(MultipartFile filename,String[] fieldarr,Class cc){
		//1、创建导入的文件
		InputStream input;
		List list = null;
		try {
			input = filename.getInputStream();
			//2、创建excel的工作表
			//获取上传的文件名称
			String oldname = filename.getOriginalFilename();
			//判断是03还是07
			Workbook book = null;
			if(oldname.endsWith(".xls")){//03   以...结尾
				book = new HSSFWorkbook(input);
			}else{//07
				book = new XSSFWorkbook(input);
			}	
			//3、获取sheet页
			Sheet sheet = book.getSheetAt(0);
			//4、获取表格的值
			//获取行数
			int rownum = sheet.getLastRowNum();//2
			
			JSONArray jsonArray = new JSONArray();
			for (int i = 0; i < rownum ; i++) {
				Row row = sheet.getRow(i+1);
				
				JSONObject jsonObject = new JSONObject();
				//{"id","name".....}
				for (int j = 0; j < fieldarr.length; j++) {
					//String value = row.getCell(j).getStringCellValue();
					Cell cell = row.getCell(j);
					if(cell!=null){
						//调用方法获取单元格的值
						String value = getMyCellType(cell);
						//把值存放josn对象
						jsonObject.put(fieldarr[j], value);
					}
				}
				jsonArray.add(jsonObject);
			}		
			
			//把json数组转换成list集合
			list = JSONArray.parseArray(jsonArray.toJSONString(), cc);
		} catch (IOException e) {
			e.printStackTrace();
		}
		
		return list;
	}

	/**
	 * <pre>exportExcel(poi导出excel)  
	 * 1、sheet名称  2、表头   3、list:导出的数据  4、文件名称  5、json的参数 
	 * @param response 响应对象
	 * @param dataArray list集合转换成json数组
	 * @param map   key:json的参数      value :标题
	 * @param sheetName  sheet页的名称
	 * @param excelname 导出的文件名称  后缀 excel </pre>
	 */
    public static void exportExcel(HttpServletResponse response, JSONArray dataArray, Map<String,String> map, String sheetName,String excelname) {
        //创建表格
    	XSSFWorkbook book=new XSSFWorkbook();
    	//创建sheet页
        XSSFSheet sheet=book.createSheet(sheetName);
        
        //创建表头
        Iterator<String> iterator = map.keySet().iterator();
        Row row = sheet.createRow(0);
        int i = 0;
        List<String> list = new ArrayList<String>();	
        //{"id","name","other","sexname","cityname"}
        while (iterator.hasNext()){//判断是否有下一个值
            String key = iterator.next();//获取下一个值
            Cell cell = row.createCell(i);
            //给表头的单元格赋值
            cell.setCellValue(map.get(key));
            list.add(key);
            i++;
        }
        
        
        //写入数据
        for(int j = 0; j < dataArray.size(); j++){
        	//把用户对象转换成json对象
            JSONObject jsonObject = dataArray.getJSONObject(j);
            Row dataRow = sheet.createRow(j+1);//创建行
            // //{"id","name","other","sexname","cityname"}
            for(int k = 0; k < list.size(); k++){
            	String field = list.get(k);//id、name
            	String value = jsonObject.getString(field);//1、张三
                dataRow.createCell(k).setCellValue(value);
            }
        }
        
        
        try {
        	//生成excel文件
        	//OutputStream out = new FileOutputStream("F:/2003.xlsx");
        	//设置响应为文件下载:header设置
			response.setHeader("content-disposition", "attchment;filename="+URLEncoder.encode(excelname,"utf-8"));
			
			ServletOutputStream out = response.getOutputStream();
			book.write(out);
			
			//7、关闭流
			out.close();	
		} catch (IOException e) {
			e.printStackTrace();
		}
    }	
    
    //获得cell的值
    private static String getMyCellType(Cell cell){
        String value = "";
        switch (cell.getCellType()) {//获取单元格的类型
            case Cell.CELL_TYPE_NUMERIC: // 数字或日期 0
                //如果为时间格式的内容
                if (DateUtil.isCellDateFormatted(cell)) {//日期
                    //注:format格式 yyyy-MM-dd hh:mm:ss 中小时为12小时制,若要24小时制,则把小h变为H即可,yyyy-MM-dd HH:mm:ss
                    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
                    value=sdf.format(cell.getDateCellValue()).toString();
                    break;
                } else {//数值
                	
                    value = new DecimalFormat("0").format(cell.getNumericCellValue());
                }
                break;
            case Cell.CELL_TYPE_STRING: // 字符串 1
                value = cell.getStringCellValue();
                break;
            case Cell.CELL_TYPE_BOOLEAN: // Boolean 4
                value = cell.getBooleanCellValue() + "";
                break;
            case Cell.CELL_TYPE_FORMULA: // 公式 2
                value = cell.getCellFormula() + "";
                break;
            case Cell.CELL_TYPE_BLANK: // 空值 3
                value = "";
                break;
            case Cell.CELL_TYPE_ERROR: // 故障 5
                value = "非法字符";
                break;
            default:
                value = "未知类型";
                break;
        }
        return value;
    }   
}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
好的,下面是使用SpringBoot+MybatisPlus生成一个税务管理系统的步骤。 1. 项目初始化 创建一个新的SpringBoot项目,选择Web、MybatisPlus和MySQL等相关依赖。 2. 数据库设计 设计税务管理系统的数据库结构,包括税务人员、纳税人、税务机关、税种、税务申报等相关数据表。在MySQL中创建对应的数据库和数据表。 3. 实体类生成 使用MybatisPlus提供的代码生成器插件,自动生成对应的实体类、Mapper接口和XML文件。在pom.xml文件中加入以下插件依赖: ```xml <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-generator</artifactId> <version>3.4.0</version> </dependency> ``` 在src/main/resources目录下新建generator文件夹,创建generatorConfig.xml文件,配置数据库连接、表名、实体类包名等相关信息。然后右键运行MybatisPlusGenerator类,即可自动生成相关代码。 4. Service和Controller层编写 通过SpringBoot的注解方式编写Service和Controller层代码,实现对数据库的CRUD操作和业务逻辑处理。在Service层中,需要调用对应的Mapper接口,实现对数据库的操作。 5. 前端页面编写 使用HTML、CSS、JavaScript等前端技术,编写税务管理系统的前端页面。可以选择使用Bootstrap等前端框架,加快开发效率。 6. 测试 使用Postman等接口测试工具,测试税务管理系统的接口是否正常。 以上就是使用SpringBoot+MybatisPlus生成一个税务管理系统的步骤。当然,在实际开发中,还需要考虑系统的安全性、可扩展性、性能等方面的问题。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值