java web将数据导出为Excel格式文件代码片段

下面是“Java web将数据导出为Excel格式文件代码片段”的完整攻略:

1.准备工作

在进行Java web数据导出Excel操作前,首先需要依赖以下jar包:

  • poi-ooxml.jar
  • poi.jar
  • xmlbeans.jar
  • poi-ooxml-schemas.jar
  • commons-collections4-4.4.jar

以上jar包可在以下maven仓库中获取:

<dependencies>
  <dependency>
      <groupId>org.apache.poi</groupId>
      <artifactId>poi-ooxml</artifactId>
      <version>4.1.2</version>
  </dependency>
  <dependency>
      <groupId>org.apache.poi</groupId>
      <artifactId>poi-ooxml-schemas</artifactId>
      <version>4.1.2</version>
  </dependency>
  <dependency>
      <groupId>org.apache.poi</groupId>
      <artifactId>poi</artifactId>
      <version>4.1.2</version>
  </dependency>
  <dependency>
      <groupId>org.apache.xmlbeans</groupId>
      <artifactId>xmlbeans</artifactId>
      <version>3.1.0</version>
  </dependency>
  <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-collections4</artifactId>
      <version>4.4</version>
  </dependency>
</dependencies>

2.核心代码示例

实现Java web中将数据导出为Excel格式文件的代码如下:

@Controller
public class ExportExcelController {

    @GetMapping("/export")
    public void export(HttpServletResponse response) throws IOException {

        // 1.定义表头
        String[] titles = {"姓名", "性别", "年龄"};

        // 2.获取数据
        List<User> users = new ArrayList<>();
        users.add(new User("张三", "男", 20));
        users.add(new User("李四", "女", 22));
        users.add(new User("王五", "男", 25));

        // 3.定义文件名
        String fileName = "用户信息表" + System.currentTimeMillis() + ".xlsx";

        // 4.创建工作簿对象
        XSSFWorkbook workbook = new XSSFWorkbook();

        // 5.创建工作表对象
        XSSFSheet sheet = workbook.createSheet("用户信息表");

        // 6.创建行
        XSSFRow row = sheet.createRow(0);

        // 7.创建单元格,并填充表头数据
        for (int i = 0; i < titles.length; i++) {
            XSSFCell cell = row.createCell(i);
            cell.setCellValue(titles[i]);
        }

        // 8.循环写入数据
        for (int i = 0; i < users.size(); i++) {
            User user = users.get(i);
            XSSFRow rowData = sheet.createRow(i + 1);
            rowData.createCell(0).setCellValue(user.getName());
            rowData.createCell(1).setCellValue(user.getSex());
            rowData.createCell(2).setCellValue(user.getAge());
        }

        // 9.设置文件头
        response.addHeader("Content-Disposition", "attachment;filename=" + fileName);

        // 10.设置响应ContentType和字符编码
        response.setContentType("application/octet-stream;charset=utf-8");

        // 11.获取输出流
        OutputStream os = response.getOutputStream();

        // 12.输出文件
        workbook.write(os);
        os.flush();
        os.close();
    }
}

上述代码实现了将一个用户列表导出为Excel文件的功能。其中,变量名和函数名均添加了注释,方便阅读和理解。同时也支持局部语言化处理。

3.示例说明

下面将分别介绍两个导出不同数据的示例:

简单字符串数据

@RestController
@RequestMapping("/excel")
public class ExportExcelController {

    @GetMapping("/simple")
    public void exportSimple(HttpServletResponse response) throws IOException {
        List<String> dataList = Arrays.asList("Java", "Python", "Go", "C++", "Scala", "Swift");

        // 2.定义文件名
        String fileName = "simpleExcel" + System.currentTimeMillis() + ".xlsx";

        // 3.创建工作簿对象
        XSSFWorkbook workbook = new XSSFWorkbook();

        // 4.创建工作表对象
        XSSFSheet sheet = workbook.createSheet("simpleExcel");

        // 5.创建行
        XSSFRow row = sheet.createRow(0);

        // 6.创建单元格,并填充表头数据
        XSSFCell cell = row.createCell(0);
        cell.setCellValue("编程语言");

        // 7.循环写入数据
        for (int i = 0; i < dataList.size(); i++) {
            XSSFRow rowData = sheet.createRow(i + 1);
            rowData.createCell(0).setCellValue(dataList.get(i));
        }

        // 8.设置文件头
        response.addHeader("Content-Disposition", "attachment;filename=" + fileName);

        // 9.设置响应ContentType和字符编码
        response.setContentType("application/octet-stream;charset=utf-8");

        // 10.获取输出流
        OutputStream os = response.getOutputStream();

        // 11.输出文件
        workbook.write(os);
        os.flush();
        os.close();
    }
}

上述代码中数据为简单的字符串数据,直接循环暴力输出即可。

复杂对象数据

@RestController
@RequestMapping("/excel")
public class ExportExcelController {

    @GetMapping("/complex")
    public void exportComplex(HttpServletResponse response) throws IOException {
        // 定义表头
        String[] headers = {"序号", "姓名", "年龄", "性别", "教育背景"};

        // 获取数据
        List<Person> list = new ArrayList<>();
        list.add(new Person(1, "张三", 23, "男", "硕士"));
        list.add(new Person(2, "李四", 25, "女", "博士"));
        list.add(new Person(3, "王五", 27, "男", "本科"));
        list.add(new Person(4, "赵六", 20, "女", "专科"));
        list.add(new Person(5, "钱七", 31, "男", "其他"));

        // 定义文件名
        String fileName = "personInfo" + System.currentTimeMillis() + ".xlsx";

        // 创建工作簿对象
        XSSFWorkbook workbook = new XSSFWorkbook();

        // 创建工作表对象
        XSSFSheet sheet = workbook.createSheet("personInfo");

        // 创建表头行
        XSSFRow headerRow = sheet.createRow(0);

        // 循环创建表头列
        for (int i = 0; i < headers.length; i++) {
            XSSFCell headerCell = headerRow.createCell(i);
            headerCell.setCellValue(headers[i]);
        }

        // 循环写入数据
        for (int i = 0; i < list.size(); i++) {
            XSSFRow row = sheet.createRow(i + 1);
            Person person = list.get(i);
            row.createCell(0).setCellValue(person.getId());
            row.createCell(1).setCellValue(person.getName());
            row.createCell(2).setCellValue(person.getAge());
            row.createCell(3).setCellValue(person.getGender());
            row.createCell(4).setCellValue(person.getEducation());
        }

        // 设置文件头
        response.addHeader("Content-Disposition", "attachment;filename=" + fileName);

        // 设置响应ContentType和字符编码
        response.setContentType("application/octet-stream;charset=utf-8");

        // 获取输出流
        OutputStream os = response.getOutputStream();

        // 输出文件
        workbook.write(os);
        os.flush();
        os.close();
    }
}

上述代码中数据为复杂类型的对象数据,需要根据对象中的属性进行单元格赋值。此时我们需要循环外层对象和内层对象来完成Excel的表格填写。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java web将数据导出为Excel格式文件代码片段 - Python技术站

(0)
上一篇 2023年6月15日
下一篇 2023年6月15日

相关文章

  • 解决java转义json出现\u0000 等乱码的问题

    解决Java转义JSON出现乱码的问题,在于正确地处理JSON字符串的Unicode字符编码方式和转义符。 问题分析 当我们使用Java将一个对象转化为JSON字符串时,如果对象中包含了Unicode字符,经过转义后在JSON字符串中就会出现”\uXXXX”的形式,其中XXXX是Unicode字符的十六进制编码。 然而,在有些情况下,这种转义是会导致乱码的。…

    Java 2023年5月20日
    00
  • java批量导入导出文件的实例分享(兼容xls,xlsx)

    Java批量导入导出文件的实例分享 本文将介绍如何在Java中批量导入和导出文件,支持xls和xlsx格式的文件。采用了Apache的POI库。 需求分析 我们需要完成的功能是实现Java程序批量导入和导出xls/xlsx文件。 导入功能要求: 支持xls和xlsx格式的文件; 将文件中的数据读取到Java程序中,进行处理。 导出功能要求: 支持xls和xl…

    Java 2023年5月19日
    00
  • java的Hibernate框架报错“LockAcquisitionException”的原因和解决方法

    当使用Java的Spring Boot框架时,可能会遇到“CannotAcquireLockException”错误。这个错误通常是由于以下原因之一引起的: 数据库并发问题:如果多个用户同时访问同一条记录并尝试更新,则可能会出此错误。在这种情况下,需要使用乐观锁或悲观锁来解决并发问题。 数据库锁定问题:如果数据库锁定了某些记录,则可能会出现此错误。在这种情况…

    Java 2023年5月4日
    00
  • IDEA 中 30 秒创建一个 Spring Cloud Alibaba 工程

    下面详细讲解如何在 IDEA 中快速创建一个 Spring Cloud Alibaba 工程的攻略: 准备工作 在开始创建项目前,我们需要为 IDEA 安装 Alibaba Cloud 插件。具体步骤如下: 打开 IDEA IDE 点击菜单栏的 “Plugins” 在搜索框中输入 “Alibaba Cloud Toolkit” 点击 “Install” 安装…

    Java 2023年5月23日
    00
  • Java项目开启远程调试的方法步骤(tomcat、springboot)

    当我们遇到 Java 项目中出现奇怪的问题时,远程调试是一种非常有用的方法,它可以帮助我们定位问题并解决它。在这里,我们将讨论如何在 Tomcat 和 Spring Boot 中开启 Java 项目的远程调试。 开启 Tomcat 远程调试 步骤 1:修改 Tomcat 启动脚本 找到你的 Tomcat 安装路径下的 bin 目录,打开 catalina.s…

    Java 2023年5月19日
    00
  • 解读动态数据源dynamic-datasource-spring-boot-starter使用问题

    我来为您详细讲解“解读动态数据源dynamic-datasource-spring-boot-starter使用问题”的完整攻略。 一、什么是dynamic-datasource-spring-boot-starter dynamic-datasource-spring-boot-starter是一款基于SpringBoot的动态多数据源框架,能够帮助您快速…

    Java 2023年5月19日
    00
  • JavaWeb Struts文件上传功能实现详解

    JavaWeb Struts文件上传功能实现详解 简介 本文将详细讲解如何在 JavaWeb Struts 框架中实现文件上传功能,其中包括前端页面的设计和后端逻辑的实现。 设计前端页面 前端页面是实现文件上传功能的基础。在这里,我们将使用HTML和JavaScript来设计一个简单的上传页面。 示例一:HTML 代码 <!DOCTYPE html&g…

    Java 2023年5月20日
    00
  • Java 数组内置函数toArray详解

    Java 数组内置函数 toArray 详解 toArray() 是 Java 数组的内置函数之一。它可以将一个数组转换成一个目标类型的数组。在这篇文章中,我们将探讨 toArray() 函数的使用以及一些示例。 toArray() 函数的使用 toArray() 函数的基本形式如下: public <T> T[] toArray(T[] a) …

    Java 2023年5月26日
    00
合作推广
合作推广
分享本页
返回顶部