java POI实现Excel文件批量导入导出(兼容xls,xlsx)

1、POI使用详解

1.1、什么是Apache POI?

POI是Apache软件基金会用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程序对Microsoft Office格式档案读和写的功能。POI为“Poor Obfuscation Implementation”的首字母缩写,意为“简洁版的模糊实现”。

1.2、POI的jar包导入

使用poi需要用到poi-3.14.jar和poi-ooxml-3.14.jar两个jar包,maven包依赖

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

1.3、POI的API讲解

1.3.1结构

HSSF - 提供读写Microsoft Excel格式档案的功能。
XSSF - 提供读写Microsoft Excel OOXML格式档案的功能。
HWPF - 提供读写Microsoft Word格式档案的功能。
HSLF - 提供读写Microsoft PowerPoint格式档案的功能。
HDGF - 提供读写Microsoft Visio格式档案的功能。

1.3.2 对象

本文主要介绍HSSF和XSSF两种组件,简单的讲HSSF用来操作Office 2007版本前excel.xls文件,XSSF用来操作Office 2007版本后的excel.xlsx文件,
注意二者的后缀是不一样的。

HSSF在org.apache.poi.hssf.usermodel包中。它实现了Workbook 接口,用于Excel文件中的.xls格式
常用组件(HSSF):
HSSFWorkbook : excel的文档对象
HSSFSheet : excel的表单
HSSFRow : excel的行
HSSFCell : excel的格子单元
HSSFFont : excel字体
HSSFDataFormat: 日期格式
HSSFHeader : sheet头
HSSFFooter : sheet尾(只有打印的时候才能看到效果)
样式:
HSSFCellStyle : cell样式
辅助操作包括:
HSSFDateUtil : 日期
HSSFPrintSetup : 打印
HSSFErrorConstants : 错误信息表
XSSF在org.apache.xssf.usemodel包,并实现Workbook接口,用于Excel文件中的.xlsx格式
常用组件(XSSF):
XSSFWorkbook : excel的文档对象
XSSFSheet: excel的表单
XSSFRow: excel的行
XSSFCell: excel的格子单元
XSSFFont: excel字体
XSSFDataFormat : 日期格式
和HSSF类似;

1.3.3 两个组件共同的字段类型描述

其实两个组件就是针对excel的两种格式,大部分的操作都是相同的。

单元格类型                        描述
CELL_TYPE_BLANK          代表空白单元格
CELL_TYPE_BOOLEAN        代表布尔单元(truefalse)
CELL_TYPE_ERROR          表示在单元的误差值
CELL_TYPE_FORMULA        表示一个单元格公式的结果
CELL_TYPE_NUMERIC        表示对一个单元的数字数据
CELL_TYPE_STRING         表示对一个单元串(文本)

1.3.4 操作步骤

以HSSF为例,XSSF操作相同。
首先,理解一下一个Excel的文件的组织形式,一个Excel文件对应于一个workbook(HSSFWorkbook),一个workbook可以有多个sheet(HSSFSheet)组成,一个sheet是由多个row(HSSFRow)组成,一个row是由多个cell(HSSFCell)组成。

1、用HSSFWorkbook打开或者创建“Excel文件对象”
2、用HSSFWorkbook对象返回或者创建Sheet对象
3、用Sheet对象返回行对象,用行对象得到Cell对象
4、对Cell对象读写。

2、代码操作

2.1、效果图

在这里插入图片描述
在这里插入图片描述
代码结构:
在这里插入图片描述
导入后效果:
在这里插入图片描述
导出后效果:
在这里插入图片描述

2.2、代码详解

这里我以Spring+SpringMVC+Mybatis为基础
Controller:

package com.allan.controller;

import java.util.List;

import javax.servlet.http.HttpServletResponse;

import org.apache.poi.ss.formula.functions.Mode;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.ModelAndView;

import com.allan.pojo.Student;
import com.allan.service.StudentService;
/**
 * 
 * @author 黄小星
 *
 */
@Controller
public class StudentController {
   
    @Autowired
    private StudentService studentService;
    
    /**
     * 批量导入表单数据
     * @param request
     * @param myfile
     * @return
     */
    @RequestMapping(value="/importExcel",method=RequestMethod.POST)
    public String importExcel(@RequestParam("myfile") MultipartFile myFile) {
   
        ModelAndView modelAndView = new ModelAndView();
        try {
   
            Integer num = studentService.importExcel(myFile);
        } catch (Exception e) {
   
            modelAndView.addObject("msg", e.getMessage());
            return "index";
        }
        modelAndView.addObject("msg", "数据导入成功");

        return "index";
    }

	/**
     * 导出数据
     */
    @RequestMapping(value="/exportExcel",metho
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值