SSM框架使用poi导入导出Excel的详细方法

下面我将为您提供关于“SSM框架使用poi导入导出Excel的详细方法”的完整攻略:

一、依赖导入

首先,在Maven中添加对poi、poi-ooxml和poi-ooxml-schemas等依赖的导入。具体代码如下:

<dependency>
   <groupId>org.apache.poi</groupId>
   <artifactId>poi</artifactId>
   <version>4.1.0</version>
</dependency>
<dependency>
   <groupId>org.apache.poi</groupId>
   <artifactId>poi-ooxml</artifactId>
   <version>4.1.0</version>
</dependency>
<dependency>
   <groupId>org.apache.poi</groupId>
   <artifactId>poi-ooxml-schemas</artifactId>
   <version>4.1.0</version>
</dependency>

二、读取Excel内容

假设有一个学生信息Excel表,我们需要读取这个Excel表格中的内容,并将数据导入到数据库中。首先定义一个学生信息模型:

public class Student {
    private String name;
    private String sex;
    private int age;
    // 省略get和set方法
}

然后,定义一个工具类ExcelUtil,用于读取Excel文件,并将文件中的数据转换为Java对象:

public class ExcelUtil {

    public static List<Student> readExcel(String filePath) throws IOException {
        FileInputStream fis = null;
        Workbook workbook = null;
        try {
            fis = new FileInputStream(filePath);
            workbook = WorkbookFactory.create(fis);
            Sheet sheet = workbook.getSheetAt(0);
            List<Student> studentList = new ArrayList<>();
            for (Row row : sheet) {
                if (row.getRowNum() == 0) {
                    continue;
                }
                Student student = new Student();
                student.setName(row.getCell(0).getStringCellValue());
                student.setSex(row.getCell(1).getStringCellValue());
                student.setAge((int) row.getCell(2).getNumericCellValue());
                studentList.add(student);
            }
            return studentList;
        } finally {
            if (workbook != null) {
                workbook.close();
            }
            if (fis != null) {
                fis.close();
            }
        }
    }
}

调用ExcelUtil.readExcel(filePath)方法即可读取Excel文件并返回学生信息列表。

三、导出Excel

下面以学生信息为例,演示如何将学生信息导出为Excel文件。同样的,先定义一个工具类ExcelUtil用于处理Excel文件。在ExcelUtil中,我们实现了将学生信息导出为Excel表格的方法writeExcel()。

public class ExcelUtil {

    public static void writeExcel(List<Student> studentList, String filePath) throws IOException {
        Workbook workbook = new XSSFWorkbook();
        Sheet sheet = workbook.createSheet();
        Row rowHeader = sheet.createRow(0);
        rowHeader.createCell(0).setCellValue("姓名");
        rowHeader.createCell(1).setCellValue("性别");
        rowHeader.createCell(2).setCellValue("年龄");

        for (int i = 0; i < studentList.size(); i++) {
            Student student = studentList.get(i);
            Row row = sheet.createRow(i + 1);
            row.createCell(0).setCellValue(student.getName());
            row.createCell(1).setCellValue(student.getSex());
            row.createCell(2).setCellValue(student.getAge());
        }

        FileOutputStream fos = null;
        try {
            fos = new FileOutputStream(filePath);
            workbook.write(fos);
        } finally {
            if (workbook != null) {
                workbook.close();
            }
            if (fos != null) {
                fos.close();
            }
        }
    }
}

调用ExcelUtil.writeExcel(studentList, filePath)方法即可将studentList中的信息导出为Excel文件,并保存到filePath中。

四、示例

示例1:将Excel表格中的学生信息导入到数据库中

假设我们已经通过ExcelUtil.readExcel(filePath)方法读取了学生信息Excel表格,并将其保存为List studentList。我们可以通过如下代码将studentList中的学生信息批量插入到数据库中:

@Service
public class StudentServiceImpl implements StudentService {

    @Autowired
    private StudentMapper studentMapper;

    @Override
    public void importStudent(List<Student> studentList) {
        studentMapper.batchInsert(studentList);
    }
}

示例2:将学生信息导出为Excel文件

@Controller
public class ExportController {

    @Autowired
    private StudentService studentService;

    @RequestMapping("/export")
    public void export(HttpServletResponse response) throws IOException {
        List<Student> studentList = studentService.getStudentList();
        ExcelUtil.writeExcel(studentList, "student.xlsx");
        File file = new File("student.xlsx");
        response.setHeader("Content-Disposition", "attachment;filename=" + file.getName());
        response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
        FileInputStream fis = null;
        OutputStream os = null;
        try {
            fis = new FileInputStream(file);
            os = response.getOutputStream();
            byte[] buffer = new byte[1024];
            int len;
            while ((len = fis.read(buffer)) != -1) {
                os.write(buffer, 0, len);
            }
        } finally {
            if (fis != null) {
                fis.close();
            }
            if (os != null) {
                os.close();
            }
        }
    }
}

在这个示例中,我们首先通过studentService.getStudentList()方法获取学生信息列表,然后调用ExcelUtil.writeExcel(studentList, "student.xlsx")方法将列表导出为Excel文件,并将文件输出到response的输出流中,这样就实现了导出Excel文件的功能。

希望以上内容能对您有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SSM框架使用poi导入导出Excel的详细方法 - Python技术站

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

相关文章

  • Spring Security基于数据库实现认证过程解析

    下面我将为您讲解Spring Security基于数据库实现认证过程的详细攻略,包含以下几个方面: 理解Spring Security的基本概念 使用Spring Security的主要步骤和流程 基于数据库实现Spring Security的认证过程 1. 理解Spring Security的基本概念 Spring Security是一个被广泛使用的Jav…

    Java 2023年5月20日
    00
  • java实现科学计算器的全过程与代码

    Java实现科学计算器的全过程与代码 本攻略将为您详细讲解Java实现科学计算器的完整过程,涵盖了设计、实现和测试。 设计 在设计科学计算器之前,我们需要先了解需求和功能。在这里,我们将实现一款基本的科学计算器,包括以下功能: 加、减、乘、除 平方、开方 对数、三角函数 常量π和e 接下来,我们将对应的功能拆分为模块,然后设计相应的类和方法。 功能模块 加减…

    Java 2023年5月18日
    00
  • Java语言的优点是什么?

    Java语言的优点 Java是一种广泛使用的高级编程语言,由于具有很多优点,因此在软件开发领域中得到了广泛的应用。Java语言的优点包括: 1. 跨平台兼容性 Java语言的最大特点是跨平台兼容性。Java程序可以在任何支持Java虚拟机(JVM)的平台上运行,而不必担心操作系统的差异。编写一次,可以在多个平台上运行,这大大提高了开发效率。例如,以下代码可以…

    Java 2023年4月27日
    00
  • 实例详解Android 获取短信会话列表

    实例详解Android 获取短信会话列表 为什么需要获取短信会话列表 在我们的日常生活中需要经常使用手机发送和接收短信,而对于一些需要短信的应用程序来说,获取短信会话列表是很有必要的,比如备份短信、导出短信等等。因此,本文将介绍获取Android短信会话列表的方法。 实现步骤 1. 添加权限 首先,在AndroidManifest.xml文件中添加权限: &…

    Java 2023年5月23日
    00
  • 你知道将Bean交给Spring容器管理有几种方式(推荐)

    将Bean交给Spring容器管理的方式 在Spring中,我们可以将Bean交给Spring容器管理,从而实现依赖注入和控制反转。下面是将Bean交给Spring容器管理的几种方式。 1. 使用@Component注解 @Component是Spring中最常用的注解之一,用于将一个类声明为Bean,并交给Spring容器管理。下面是一个简单的示例: @C…

    Java 2023年5月18日
    00
  • 最新IntelliJ IDEA 2022配置 Tomcat 8.5 的详细步骤演示

    让我为你介绍如何在最新的 IntelliJ IDEA 2022 中配置 Tomcat 8.5 的详细步骤演示。 第一步:下载并安装 Tomcat 8.5 首先,我们需要从官方网站下载 Tomcat 8.5 的安装文件,并按照指导完成安装。Tomcat 的安装过程相对简单,请仔细查看安装说明。 第二步:以 Tomcat 服务器方式配置项目 打开 Intelli…

    Java 2023年6月2日
    00
  • Springboot mybatis plus druid多数据源解决方案 dynamic-datasource的使用详解

    关于“Springboot mybatis plus druid多数据源解决方案 dynamic-datasource的使用详解”的攻略,我会从以下几个方面进行讲解: 什么是多数据源 动态数据源的原理 Springboot mybatis plus druid多数据源解决方案 示例1:在一个Spring Boot项目中使用多数据源 示例2:在一个基于Spri…

    Java 2023年5月20日
    00
  • java实现用户自动登录

    下面是详细讲解Java实现用户自动登录的完整攻略: 1. 概述 实现用户自动登录,是在用户登陆后,在保持用户会话的情况下进行下一次访问时无须再进行认证,而直接访问。通常采用的方法是将认证通过后的用户信息存储到用户的浏览器中,下一次访问时直接从浏览器中读取用户信息判断是否已经认证通过。 2. 实现步骤 2.1 登录成功信息存储 在用户登录认证成功后,将用户信息…

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