java后台利用Apache poi 生成excel文档提供前台下载示例

下面是Java后台利用Apache POI生成Excel文档并提供前台下载的完整攻略:

1. 准备工作

在开始前,需要确保以下几点:

  • 确保已经安装好了Java开发环境以及Apache POI库。
  • 了解Java的文件输入输出操作。

2. 创建Excel文档

首先,我们需要使用Apache POI库创建一个空的Excel文档,并在其中创建一个工作表以及表头,代码如下:

// 创建Excel工作簿对象
Workbook workbook = new HSSFWorkbook();

// 创建Excel工作表对象
Sheet sheet = workbook.createSheet("Sheet1");

// 创建表格标题行并设置单元格格式
Row row = sheet.createRow(0);
row.setHeightInPoints(30);
CellStyle style = workbook.createCellStyle();
style.setAlignment(HorizontalAlignment.CENTER); // 设置单元格水平居中
style.setVerticalAlignment(VerticalAlignment.CENTER); // 设置单元格垂直居中
Font font = workbook.createFont(); // 创建字体对象
font.setFontName("宋体"); // 设置字体名称
font.setFontHeightInPoints((short) 16); // 设置字体大小
font.setBold(true); // 粗体字
style.setFont(font);
Cell cell = row.createCell(0);
cell.setCellValue("姓名");
cell.setCellStyle(style);
cell = row.createCell(1);
cell.setCellValue("年龄");
cell.setCellStyle(style);
cell = row.createCell(2);
cell.setCellValue("性别");
cell.setCellStyle(style);

以上代码会创建一个名为“Sheet1”的工作表,并设置了表头。

3. 填充Excel数据

接下来,我们需要将数据填充到Excel文档中。以下是两个填充数据的示例:

示例1:从数据库中获取数据

// 获取数据库连接
Connection conn = DriverManager.getConnection(url, user, password);
PreparedStatement pstmt = conn.prepareStatement("SELECT * FROM student");
ResultSet rs = pstmt.executeQuery();

// 填充数据到Excel单元格中
int rowIndex = 1; // 从第二行开始填充数据
while (rs.next()) {
    row = sheet.createRow(rowIndex++);
    cell = row.createCell(0);
    cell.setCellValue(rs.getString("name"));
    cell.setCellStyle(style);
    cell = row.createCell(1);
    cell.setCellValue(rs.getInt("age"));
    cell.setCellStyle(style);
    cell = row.createCell(2);
    cell.setCellValue(rs.getString("gender"));
    cell.setCellStyle(style);
}

// 关闭数据库连接
rs.close();
pstmt.close();
conn.close();

以上代码会从数据库中获取学生数据,并将数据填充到Excel中。

示例2:从集合中获取数据

List<Student> studentList = new ArrayList<>();
studentList.add(new Student("张三", 20, "男"));
studentList.add(new Student("李四", 21, "女"));
studentList.add(new Student("王五", 22, "男"));

// 填充数据到Excel单元格中
int rowIndex = 1; // 从第二行开始填充数据
for (Student student : studentList) {
    row = sheet.createRow(rowIndex++);
    cell = row.createCell(0);
    cell.setCellValue(student.getName());
    cell.setCellStyle(style);
    cell = row.createCell(1);
    cell.setCellValue(student.getAge());
    cell.setCellStyle(style);
    cell = row.createCell(2);
    cell.setCellValue(student.getGender());
    cell.setCellStyle(style);
}

以上代码会从一个包含学生对象的List集合中获取数据,并将数据填充到Excel中。

4. 写入Excel文件并提供下载

将填充完数据的Excel文件写入到服务器或本地的磁盘中,并提供下载链接。以下是一段完整的代码:

// 将Excel文件写入到服务器或本地磁盘中
FileOutputStream fos = new FileOutputStream("/path/to/output.xls");
workbook.write(fos);
fos.close();
// 生成下载链接
response.setCharacterEncoding("utf-8");
response.setContentType("multipart/form-data");
response.setHeader("Content-Disposition", "attachment;fileName=" + URLEncoder.encode("output.xls", "utf-8"));
FileInputStream fis = new FileInputStream("/path/to/output.xls");
OutputStream os = response.getOutputStream();
byte[] buffer = new byte[1024];
int len;
while ((len = fis.read(buffer)) > 0) {
    os.write(buffer, 0, len);
}
os.flush();
fis.close();
os.close();

以上代码会将Excel文件写入到服务器或本地磁盘中,并生成一个名为“output.xls”的下载链接。

5. 总结

在以上攻略中,我们使用了Apache POI库来创建和填充Excel文件,并使用Java的文件输入输出操作将文件写入到服务器或本地磁盘中,并生成一个下载链接。通过以上步骤,我们就可以在Java后台中生成Excel文档并提供下载链接了。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java后台利用Apache poi 生成excel文档提供前台下载示例 - Python技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • Java 实战范例之员工管理系统的实现

    Java 实战范例之员工管理系统的实现攻略 1. 系统需求分析 1.1. 员工信息管理模块 根据需求分析,该员工管理系统需要提供对员工信息的增、删、改、查、排序等操作,并能够将员工信息保存在文件中。 1.2. 打印报表模块 该系统还需要提供打印报表的功能,可以根据不同的条件查询员工信息并打印报表。 2. 系统设计 2.1. 类的设计 需要设计Employee…

    Java 2023年5月19日
    00
  • 搭建maven私有仓库的方法实现

    安装Maven私有仓库的原因是我们需要存储自己开发的代码和第三方依赖,以便于项目中可以统一管理和使用,同时也可以防止一些第三方依赖在我们的开发环境中被其他人修改或删除。以下是搭建maven私有仓库的方法实现的攻略: 前置条件 服务器操作系统已安装Java和Maven 了解如何使用Maven构建Java项目 已取得服务器的管理员权限 步骤 1. 安装Nexus…

    Java 2023年6月2日
    00
  • 一篇文章带你入门Java接口

    一篇文章带你入门Java接口 接口是Java中非常重要的概念之一。这篇文章将向您介绍如何使用Java接口,并提供一些示例来阐明这个概念。 什么是Java接口 在Java中,接口是定义一组方法签名的抽象类型。它们通常用于定义协议,以便可以在类之间进行通信。 接口只是功能的合同,而没有像类一样的实现。它们允许我们定义一组规则,每个实现这些接口的类都必须遵循这些规…

    Java 2023年5月23日
    00
  • Java postgresql数组字段类型处理方法详解

    标题 Java postgresql数组字段类型处理方法详解 简介 本攻略将为您介绍在Java中如何处理postgresql数据库中的数组字段类型,包括常用的数组字段类型、处理方法及其示例说明。 数组字段类型 postgresql数据库中有两种常见的数组字段类型: character varying[]:字符串数组 integer[]:整数数组 处理方法 4…

    Java 2023年5月26日
    00
  • Java分层概念详解

    Java分层概念详解 什么是分层概念? 分层概念是软件架构中一种重要的设计思想,它将整个系统按照功能划分为多个不同的层次,每一层都有不同的工作职责和业务逻辑。每一层都可以独立进行开发和测试,而不会影响其他层的功能。同时,各个层之间通过接口交互数据,从而使得整个系统更加稳定、可靠、易于维护和升级。 一个标准的分层体系应该包含以下几个层次: 表现层(Presen…

    Java 2023年5月20日
    00
  • java的arraylist排序示例(arraylist用法)

    下面是关于Java的ArrayList排序示例及用法的攻略。 ArrayList是什么 ArrayList是Java提供的集合框架中的一种,它继承了List接口并实现了可变数组。它的特点是可以添加、删除、排序和搜索其中的元素,同时可以动态地更改其大小。因其灵活性和高效性,它被广泛应用于Java程序开发中。 ArrayList的排序 使用自然排序(默认) Ar…

    Java 2023年5月26日
    00
  • Java中对象的销毁方法分析

    Java是一种基于对象的编程语言,Java中的对象都是在堆内存中被创建。同时,Java提供垃圾回收器来回收不再使用的对象,从而避免内存泄漏问题。本篇攻略将深入讲解Java中对象的销毁方法,包括显示销毁和隐式销毁两种方式。 显示销毁 1.手动将对象设为null Java中的对象都是在堆内存中被创建,由垃圾回收器自动回收。但是,Java也提供了手动销毁对象的方式…

    Java 2023年5月26日
    00
  • Mybatis批量修改的操作代码

    下面我将详细讲解Mybatis批量修改的操作代码的完整攻略。 什么是Mybatis批量修改操作 Mybatis批量修改操作是指在一次数据库连接的情况下,通过一条SQL语句同时修改多条数据的操作,相对于单条SQL语句修改单个数据,批量修改操作在实际应用中更加高效。 Mybatis批量修改操作的实现方式 Mybatis批量修改操作的实现方式有两种:第一种是基于f…

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