springboot实现导出数据库表到Excle

1.xml文件


2.Mapper

List exportBfhtreswExcel();

3.实现类接口

List exportBfhtreswExcel();

4.实现类

	/**
     * 导出数据表
     * @return
     */
    @Override
    public List exportBfhtreswExcel() {
        return iBfhtreswDao.exportBfhtreswExcel();
    }

5.controller

public void exportBfhtresw(HttpServletRequest request, HttpServletResponse response, String fileName) throws Exception {

        List bfhtreswList = iBfhtreswService.exportBfhtreswExcel();
        // 创建工作簿
        HSSFWorkbook workbook = new HSSFWorkbook();
        // 创建表
        HSSFSheet sheet = workbook.createSheet("特约单位e生活商户集团交易明细文件");
        //文件名称
        fileName = "特约单位e生活商户集团交易明细文件";
        // 创建行
        HSSFRow row = sheet.createRow(0);
        // 创建单元格样式
        HSSFCellStyle cellStyle = workbook.createCellStyle();
        // 表头
        String[] headTitle = {
                "地区号", "网点号", "交易日期", "商户编号", "商户清算账号", "订单编号", "交易类型", "交易时间", "交易卡号","};
        HSSFCell cell;
        // 设置表头
        for(int iHead=0; iHead

6.ExportUtils

public class ExportUtils {

    private static final Logger logger = LoggerFactory.getLogger(ExportUtils.class);

    public static void createFile(HttpServletResponse response, HSSFWorkbook workbook ,String fileName) {
        try {
            // 捕获内存缓冲区的数据,转换成字节数组
            ByteArrayOutputStream out = new ByteArrayOutputStream();
            workbook.write(out);
            // 获取内存缓冲中的数据
            byte[] content = out.toByteArray();
            // 将字节数组转化为输入流
            InputStream in = new ByteArrayInputStream(content);
            //通过调用reset()方法可以重新定位。
            response.reset();
            // 如果文件名是英文名不需要加编码格式,如果是中文名需要添加"iso-8859-1"防止乱码
            response.setHeader("Content-Disposition", "attachment; filename=" + new String((fileName + ".xlsx").getBytes(), "iso-8859-1"));
            response.addHeader("Content-Length", "" + content.length);
            response.setContentType("application/vnd.ms-excel;charset=UTF-8");
            ServletOutputStream outputStream = response.getOutputStream();
            BufferedInputStream bis = new BufferedInputStream(in);
            BufferedOutputStream bos = new BufferedOutputStream(outputStream);
            byte[] buff = new byte[8192];
            int bytesRead;
            while (-1 != (bytesRead = bis.read(buff, 0, buff.length))) {
                bos.write(buff, 0, bytesRead);
            }
            bis.close();
            bos.close();
            outputStream.flush();
            outputStream.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}

此项目使用swagger-ui,故在网页访问
例:http://192.168.0.0:8080/bfhtresw/exportBfhtreswExcel
会自动下载完成

慢慢的发现我们不是技术变强了,而是看问题的思路升华了。

你可能感兴趣的:(springboot实现导出数据库表到Excle)