当前位置: 首页 > article >正文

Javaweb项目实现文件导出功能

在我的项目中,我将模糊查询与文件导出结合使用,实现下载前端列表展示的数据到本地

导入maven坐标

<!--导出为表需要-->
<dependency>
  <groupId>org.apache.poi</groupId>
  <artifactId>poi</artifactId>
  <version>3.16</version>
</dependency>
<dependency>
  <groupId>org.apache.poi</groupId>
  <artifactId>poi-ooxml</artifactId>
  <version>3.16</version>
</dependency>

前端部分代码及展示

<button  class="btn btn-default" onclick="exportExcel()">导出表格</button>
<input type="text" id="se1"
         placeholder="搜索" >
<input type="submit" onclick="jax(1)" value="查询" class="btn btn-default">



function jax(pagesize){
    var search = $("#se1").val();
    console.log(search);
    $.ajax({
        url:"/getLand",
        dataType:"JSON",
        data:{
            pagesize:pagesize,
            search:search
        },
        type:"POST",
        success:function (data) {
            $("#d1").children().remove();
            $("#tb").children().remove();
            $("#l1").children().remove();
            $("#l2").children().remove();
            $("#l3").children().remove();
            for (var i=0;i<data.content.length;i++){
                $("#tb").append(
                    "<tr>" +
                    "<td hidden='hidden'>"+data.content[i].lid+"</td>"+
                    "<td>"+data.content[i].purpose+"</td>"+
                    "<td>"+data.content[i].location+"</td>"+
                    "<td>"+data.content[i].mode+"</td>"+
                    "<td>"+data.content[i].area+"</td>"+
                    "<td>"+data.content[i].price+"</td>"+
                    "<td>"+data.content[i].actualarea+"</td>"+
                    "<td>"+data.content[i].issuedate+"</td>"+
                    "<td>" +
                    "<button onclick='updateLand("+data.content[i].lid+")'>修改</button>"+
                    "<button onclick='delLand("+data.content[i].lid+")'>删除</button>"+
                    "</td>"+
                    "</tr>");
            }
            $("#d1").append(
                "<span>"+"总共"+data.pageTotal+"页,共"+data.recordTotal+"条数据"+"</span>"
            )
            $("#l1").append(
                "<a onclick='left("+data.currentPage+")'>上一页</a>"

            )
            $("#l2").append(
                "<a onclick='right("+data.currentPage+","+data.pageTotal+")'>下一页</a>"
            )
            $("#l3").append(
                "<a onclick='sw("+data.pageTotal+")'>尾页</a>"
            )
        }
    })

}
function exportExcel() {
    var search = $("#se1").val();
    location.href = "/landExportExcel?search="+search;
}

 控制层代码

@RequestMapping("/landExportExcel")
public void landExportExcel(String search,HttpServletResponse response){
    search=search==null?"":search;
    landService.landExportExcel(search,response);
}

实现层代码

在这里可以自定义下载后excel的行标题以及文件名称等

@Override
public void landExportExcel(String search,HttpServletResponse response)  {
    LandMapper landMapper=sqlSessionTemplate.getMapper(LandMapper.class);
    // 创建Excel工作簿
    Workbook workbook = new XSSFWorkbook();
    // 创建工作表
    Sheet sheet = workbook.createSheet("Data");

    // 创建标题行
    Row headerRow = sheet.createRow(0);
    headerRow.createCell(0).setCellValue("ID");
    headerRow.createCell(1).setCellValue("土地证载明的土地用途");
    headerRow.createCell(2).setCellValue("具体位置");
    headerRow.createCell(3).setCellValue("供地方式及批复");
    headerRow.createCell(4).setCellValue("供地面积");
    headerRow.createCell(5).setCellValue("账面价值");
    headerRow.createCell(6).setCellValue("实际占地面积");
    headerRow.createCell(7).setCellValue("土地证发证时间");
    // 从数据库获取数据
    List<Land> resultSet = landMapper.landExportExcel(search);

    // 写入数据到Excel
    int rownum = 1;
    for (Land land : resultSet){
        Row row = sheet.createRow(rownum++);
        row.createCell(0).setCellValue(land.getLid());
        row.createCell(1).setCellValue(land.getPurpose());
        row.createCell(2).setCellValue(land.getLocation());
        row.createCell(3).setCellValue(land.getMode());
        row.createCell(4).setCellValue(land.getArea());
        row.createCell(5).setCellValue(land.getPrice());
        row.createCell(6).setCellValue(land.getActualarea());
        row.createCell(7).setCellValue(land.getIssuedate());
    }

    // 设置响应头信息
    response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
    //设置下载文件名称
     response.setHeader("Content-Disposition", "attachment; filename=\"data.xlsx\"");

    // 写入响应输出流
    try (OutputStream os = response.getOutputStream()) {
        workbook.write(os);
        workbook.close();
    } catch (IOException e) {
        throw new RuntimeException(e);
    }
}

控制层和service层需要根据自己的项目自行补充,至此即可实现在前端页面点击导出按钮下载excel文件


http://www.kler.cn/a/302151.html

相关文章:

  • sentinel笔记9- 限流规则持久化(上)
  • CSS中的calc函数使用
  • 【文档搜索引擎】搜索模块的完整实现
  • 【FAQ】HarmonyOS SDK 闭源开放能力 — Vision Kit(2)
  • 设置中 wifi密码框被输入键盘遮挡的处理
  • GMSSL的不同python版本
  • 服务器数据恢复—Linux操作系统环境下网站数据的恢复案例
  • Java、python、php、node.js版 铁路售票自动选座系统 高铁购票系统 火车订票平台(源码、调试、LW、开题、PPT)
  • Android Graphics 显示系统 - VirtualDisplay的初印象 - 简单示例
  • .Net 中各种线程同步锁
  • Gitea Action 简单配置(CI/CD)
  • java 学习从零到精通之历程
  • C4D2025来了!亮眼的新功能一览
  • 高亚科技与广东海悟携手,打造全流程电子竞标管理平台!
  • 《程序猿之设计模式实战 · 策略模式》
  • 深度解读MySQL意向锁的工作原理机制与应用场景
  • 使用Selenium与WebDriver实现跨浏览器自动化数据抓取
  • 信息安全工程师(1)计算机网络分类
  • Linux Makefile文本处理函数知识详解
  • 【Http 每天一小问 ,Post上传文件时, 文件和 -d(--data)和 -F(--form) 不能同时存在 ,怎么办】
  • Linux系统安装CUDA
  • JSON对象
  • JSDelivr NPM CDN 国内加速节点
  • java设计模式(持续更新中)
  • 英伟达与甲骨文携手加速企业级AI和数据处理
  • 搭建一个本地 SMTP 服务器