点击table导出excel(后端实现)

依赖:

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
</dependency>

工具类添加静态方法(每行代码作用都已注明)

复制代码
public static XSSFWorkbook writeXSSFWorkbook(String sheetName, String []titles, String [][]values, XSSFWorkbook wb) {
        // 第一步,创建一个HSSFWorkbook,对应一个Excel文件
        if (wb == null) {
            wb = new XSSFWorkbook();
        }
        // 第二步,在workbook中添加一个sheet,对应Excel文件中的sheet
        XSSFSheet sheet = wb.createSheet(sheetName);
        // 第三步,在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制
        XSSFRow row = sheet.createRow(0);
        // 第四步,创建单元格,并设置值表头 设置表头居中
        XSSFCellStyle style = wb.createCellStyle();
        //声明列对象
        XSSFCell cell = null;
        // 创建标题
        for(int i = 0; i < titles.length; i++){
            cell = row.createCell(i);
            cell.setCellValue(titles[i]);
            cell.setCellStyle(style);
        }
        // 创建内容
        for (int i = 0; i < values.length; i++) {
            row = sheet.createRow(i + 1);
            for (int j = 0; j < values[i].length; j++) {
                //将内容按顺序赋给对应的列对象
                row.createCell(j).setCellValue(values[i][j]);
            }
        }
        // 设置列宽
        for (int col = 0; col < values[0].length; col++) {
            if (col == 0) {
                sheet.setColumnWidth(col,40 * 256);
            } else if (col == 1) {
                sheet.setColumnWidth(col,40 * 256);
            } else if (col == 2) {
                sheet.setColumnWidth(col,15 * 256);
            } else if (col == 3) {
                sheet.setColumnWidth(col,15 * 256);
            } else {
                sheet.setColumnWidth(col,20 * 256);
            }
        }
        return wb;
    }
复制代码

controller实现点击下载,需要生成一个二维数组作为excel数据:

复制代码
   @GetMapping("/exportDsExcelFile)
   public void exportDsExcelFile(HttpServletResponse response){  
     // 查询需要导出的数据 List
<DigitalResourceStatistical> lists = digitalResourcesService.getDigitalResourceStatistical(); String[][] content = new String[lists.size()][];
     // excel表的表头 String[] titles
=new String[]{"文献类型", "数量(GB)"}; DateFormat dateFormat = new SimpleDateFormat("_yyyyMMdd");
     String date
= dateFormat.format(new Date()); //sheet名 String sheetName = "不同文献数量统计表"; //文件内容 for(int i = 0;i < lists.size(); i++){ content[i] = new String[titles.length]; content[i][0] = lists.get(i).getTypeName(); content[i][1] = lists.get(i).getFileSize(); } } //excel文件名 String fileName = sheetName + date +".xlsx"; XSSFWorkbook wb = ExcelUtil.writeXSSFWorkbook(sheetName, titles, content,null); //响应到客户端 response.setContentType("application/vnd.ms-excel;charset=utf-8");
     response.setHeader("Content-Disposition", "attachment;filename="+fileName); OutputStream os
= null; try { os = response.getOutputStream(); wb.write(os); os.close(); wb.close(); } catch (IOException e) { e.printStackTrace(); } }
复制代码

以上是最基本的代码结构,还需要根据自己的业务需求添加功能。

 

 

效果展示:

 

 

点击导出后的效果:

 

posted @   曹伟666  阅读(130)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· winform 绘制太阳,地球,月球 运作规律
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示