Java导出Excel模板

项目里尝试了利用Apache的POI工具生成Excel表格

然后发现操作起来还是很简单的

贴一下代码,里面都有注释

常用组件:

HSSFWorkbook     		excel的文档对象

HSSFSheet           	excel的表单

HSSFRow               excel的行

HSSFCell                excel的格子单元

HSSFFont               excel字体

样式:

HSSFCellStyle         cell样式

然后具体的方法需要使用的话可以自己查文档,上网搜索,很简单很方便的

  1. 第一步,导入依赖

    		<!-- poi,导出Excel -->
            <dependency>
                <groupId>org.apache.poi</groupId>
                <artifactId>poi</artifactId>
                <version>4.0.1</version>
            </dependency>
    
  2. 操作Excel代码

    /**
         * @function: 下载导出Excel
         * @param sheetName 表格Sheet名
         * @param titles 表格第一行(标题行)
         * @param datas 表格数据,String类型的二维数组
         */
        public static HSSFWorkbook downloadExcel(String sheetName, String[] titles, String[][] datas) {
            // 1. 创建一个Excel文件对象
            HSSFWorkbook workbook = new HSSFWorkbook();
    
            // 2. 创建样式,设置样式居中
            HSSFCellStyle style = workbook.createCellStyle();
            style.setAlignment(HorizontalAlignment.CENTER);
    
            // 3. 在workbook中添加一个sheet,对应Excel文件中的sheet
            HSSFSheet sheet = workbook.createSheet(sheetName);
    
            // 4. 在sheet中添加表头第0行,就是标题行
            HSSFRow row = sheet.createRow(0);
    
            // 5. 声明列对象,并创建标题
            HSSFCell cell = null;
    
            for (int i = 0, length = titles.length; i < length; i++) {
                cell = row.createCell(i);
                cell.setCellValue(titles[i]);
                //设置样式
                cell.setCellStyle(style);
            }
    
            // 6.  创建内容
            for (int i = 0, size = datas.length; i < size; i++) {
                row = sheet.createRow(i + 1);
                for (int j = 0, length = datas[i].length; j < length; j++) {
                    //将内容按顺序赋给对应的列对象
                    cell=row.createCell(j);
                    cell.setCellValue(datas[i][j]);
                    //居中显示
                    cell.setCellStyle(style);
                }
            }
    
            return workbook;
        }
    
  3. Controller接受前端请求,返回下载文档

    @GetMapping("/download")
        public void download(HttpServletResponse response) {
            //查询所有员工
            BasePage basePage = new BasePage();
            basePage.setPageNum(1);
            basePage.setPageSize(10);
            PageInfo<CustomerModel> allCustomer = customerServices.getAllCustomer(basePage);
            List<CustomerModel> list = allCustomer.getList();
    
            //表格标题,就是模型的属性名
            String[] titles = {"顾客ID", "顾客姓名", "顾客职业", "顾客电话", "顾客邮箱"};
    
            //将list集合数据变成String类型二维的数组,行数+列数
            String[][] datas = new String[list.size()][titles.length];
            for (int i = 0, size = list.size(); i < size; i++) {
                //赋值
                datas[i][0] = String.valueOf(list.get(i).getCustId());
                datas[i][1] = list.get(i).getCustName();
                datas[i][2] = list.get(i).getCustProfession();
                datas[i][3] = list.get(i).getCustPhone();
                datas[i][4] = list.get(i).getCustEmail();
            }
    
            //表格sheet名
            String sheetName = "员工信息表";
    
            //调用common下的Excel导出方法,导出Excel
            HSSFWorkbook workbook = DownloadExcel.downloadExcel(sheetName, titles, datas);
    
            try {
                //文件名,需要编码成ISO8859-1
                String fileName = new String("员工信息表.xls".getBytes("UTF-8"), "ISO8859-1");
                //设置响应头,返回前端下载文件
                response.setHeader("content-Disposition", "attachment;filename=" + fileName);
                workbook.write(response.getOutputStream());
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
  4. 最后前端请求,成功

上一篇:php中文编码


下一篇:IDEA maven项目中引入ojdbc依赖报红色波浪线问题的解决办法