iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > JAVA >Java原生POI实现的Excel导入导出(简单易懂)
  • 511
分享到

Java原生POI实现的Excel导入导出(简单易懂)

javaexcel开发语言 2023-09-01 12:09:08 511人浏览 薄情痞子
摘要

1.首先需要引入jar包 org.apache.poi poi 3.15 or

1.首先需要引入jar

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

2.导入接口

首先是Controller入口方法

import org.springframework.WEB.multipart.MultipartFile;@RequestMapping(value = "importexcel", method = RequestMethod.POST)@ResponseBodypublic Map importExcel(@ModelAttribute MultipartFile file) throws Exception {return schoolService.importExcel(file);}

这个接口在postman上传参是下面这样的:
注意里面的参数名称要和接口上的一致,不然会拿不到值
还有file那里key的类型要选file类型的,这样就可以在后面value里面选择文件
在这里插入图片描述
然后是Service方法

import org.apache.poi.hssf.usermodel.HSSFFont;import org.apache.poi.hssf.usermodel.HSSFWorkbook;import org.apache.poi.poifs.filesystem.POIFSFileSystem;import org.apache.poi.xssf.streaming.SXSSFWorkbook;import org.apache.poi.xssf.usermodel.XSSFWorkbook;import org.springframework.web.multipart.MultipartFile;import java.io.IOException;@Overridepublic void importExcel(MultipartFile file) throws Exception {Workbook wb = null;try {if (file != null) {// 兼容Excel新版本和老版本,xlsx和xls不兼容wb = getWorkbook(file);// 获取第一页数据Sheet sheet = wb.getSheetAt(0);// 获取第一页总行数int rowCount = sheet.getPhysicalNumberOfRows();// 开始循环取出每一行的数据,-1是因为取值时要去掉抬头for (int i = 0; i < rowCount - 1; i++) {// 从第0行开始,因为第0行一般是抬头所以直接从下面一行开始Row row = sheet.getRow(i + 1);// 行数计数器int tempNum = i + 2;// 取出每一列的值,从第0列开始Cell cellname = row.getCell(0);Cell cellmobile = row.getCell(1);String name = "";// 姓名String mobile = "";// 手机号if (cellname != null) {cellname.setCellType(CellType.STRING);name = cellname.getStrinGCellValue().trim();if (StringUtil.isEmpty(name)) {throw new BizException(500, "第" + tempNum + "行姓名不能为空");}}if (cellmobile != null) {cellmobile.setCellType(CellType.STRING);mobile = cellmobile.getStringCellValue().trim();if (StringUtil.isEmpty(mobile)) {throw new BizException(500, "第" + tempNum + "行手机号不能为空");}}}} else {log.info("++++++++++++传入文件为空+++++++++++++");throw new BizException(500, "传入文件为空");}} catch (BizException e) {throw new BizException(500, e.getMsg());} catch (Exception e) {e.printStackTrace();throw new BizException(500, "文件信息异常");} finally {if (wb != null) {try {wb.close();} catch (IOException e) {e.printStackTrace();}}}}// 兼容Excel新版本和老版本,xlsx和xls不兼容public static Workbook getWorkbook(MultipartFile file) throws IOException {Workbook workbook = null;String fileName = file.getOriginalFilename();if (fileName.endsWith("xls")) {POIFSFileSystem pois = new POIFSFileSystem(file.getInputStream());workbook = new HSSFWorkbook(pois);} else if (fileName.endsWith("xlsx")) {workbook = new XSSFWorkbook(file.getInputStream());}return workbook;}

3.导出接口

首先是Controller入口
strJSON是用来接受其它参数的,一般导出的时候会带着一些查询条件

@RequestMapping(value = "exportExcel", method = RequestMethod.POST)@ResponseBodypublic void exportExcel(httpservletRequest request, HttpServletResponse response, @RequestBody String strjson) throws Exception {schoolService.exportExcel(request, response, strJson);}

然后是Service方法

@Overridepublic void exportExcel(HttpServletRequest request, HttpServletResponse response, String strJson) throws Exception {try (Workbook wb = new SXSSFWorkbook(1000)) {// 构建一个导出页Sheet sheet = wb.createSheet("用户信息表");Row row = sheet.createRow((int) 0);row.setHeight((short) 1000);CellStyle style = wb.createCellStyle();style.setAlignment(HorizontalAlignment.CENTER);style.setVerticalAlignment(VerticalAlignment.CENTER);style.setBorderBottom(BorderStyle.THIN);style.setBorderLeft(BorderStyle.THIN);style.setBorderTop(BorderStyle.THIN);style.setBorderRight(BorderStyle.THIN);style.setWrapText(true);// 自动换行Font font = wb.createFont();font.setFontName("宋体");font.setFontHeightInPoints((short) 11);font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);style.setFont(font);// 构建excel抬头String[] excelHeader = new String[10];excelHeader[0] = "姓名";excelHeader[1] = "电话";for (int i = 0; i < excelHeader.length; i++) {Cell cell = row.createCell(i);cell.setCellValue(excelHeader[i]);cell.setCellStyle(style);sheet.setColumnWidth(i, 20 * 256);// 列宽}// 调用导出数据获取接口,拿到要导出的数据List<Map<String, Object>> exportDatas = findExportDatas (strJson);for (int i = 0; i < exportDatas .size(); i++) {row = sheet.createRow(i + 1);row.setHeight((short) 700);// 创建列对象Cell cell0 = row.createCell(0);Cell cell1 = row.createCell(1);// 将值放入列中// 姓名if (exportDatas.get(i).get("name") != null) {cell0.setCellValue(exportDatas.get(i).get("name").toString());} else {cell0.setCellValue("");}// 电话if (exportDatas.get(i).get("mobile") != null) {cell1.setCellValue(exportDatas.get(i).get("mobile").toString());} else {cell1.setCellValue("");}cell0.setCellStyle(style);cell1.setCellStyle(style);String fileName = "用户信息表.xlsx";if (request.getHeader("User-Agent").toLowerCase().indexOf("firefox") > 0) {fileName = new String(fileName.getBytes("UTF-8"), "ISO8859-1"); // firefox浏览器} else if (request.getHeader("User-Agent").toUpperCase().indexOf("MSIE") > 0) {fileName = URLEncoder.encode(fileName, "UTF-8");// IE浏览器} else if (request.getHeader("User-Agent").toUpperCase().indexOf("CHROME") > 0) {fileName = new String(fileName.getBytes("UTF-8"), "ISO8859-1");// 谷歌}response.reset();response.setContentType("application/octet-stream; charset=utf-8");response.setHeader("Access-Control-Allow-Origin", "*");response.setHeader("Content-Disposition", "attachment; filename=" + fileName);wb.write(response.getOutputStream());response.getOutputStream().close();}}

最后是用postman导出测试
点击Send旁边的箭头,然后点下面的Send and Download就可以导出了
在这里插入图片描述

来源地址:https://blog.csdn.net/cl617287/article/details/131739434

--结束END--

本文标题: Java原生POI实现的Excel导入导出(简单易懂)

本文链接: https://www.lsjlt.com/news/388350.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java原生POI实现的Excel导入导出(简单易懂)
    1.首先需要引入jar包 org.apache.poi poi 3.15 or...
    99+
    2023-09-01
    java excel 开发语言
  • Java利用POI实现导入导出Excel表格
    本文实例为大家分享了Java利用POI实现导入导出Excel表格的具体代码,供大家参考,具体内容如下 一、Java利用POI实现导入导出Excel表格demo 1.引入依赖 <...
    99+
    2024-04-02
  • Java用POI导入导出Excel实例分析
    1、异常java.lang.NoClassDefFoundError: org/apache/poi/UnsupportedFileFormatException 解决方法: 使用的...
    99+
    2024-04-02
  • Java如何利用POI实现导入导出Excel表格
    这篇文章主要介绍“Java如何利用POI实现导入导出Excel表格”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Java如何利用POI实现导入导出Excel表格”文章能帮助大家解决问题。一、Java...
    99+
    2023-07-06
  • SpringBoot集成POI实现Excel导入导出的示例详解
    目录知识准备什么是POIPOI中基础概念实现案例Pom依赖导出Excel导入Excel示例源码知识准备 需要了解POI工具,以及POI对Excel中的对象的封装对应关系。 什么是PO...
    99+
    2024-04-02
  • Java+element实现excel的导入和导出
    目录一、上传excel前端代码二、上传excel后端代码三、下载excel前端代码四、下载excel后端代码本项目是前端vue3,后端springboot开发 需求为:前端导入表格,...
    99+
    2023-05-16
    Java element excel导入和导出 Java excel导入 Java excel导出
  • Java中用POI实现将数据导出到Excel
    一、前言 数据导出为Excel在我们写项目的过程中经常用到 需要用到的jar包 poi-3.17.jar 二、具体实现步骤 //第一步创建一个webbook,对应一个Excel...
    99+
    2024-04-02
  • Java使用POI实现导出Excel的方法详解
    目录一、前景二、概念2.1. 简介2.2.Excel版本和相关对象2.3.WorkBook2.4.POI依赖三、POI - 写3.1.代码示例3.2. 性能对比3.3. 测试rowA...
    99+
    2022-11-13
    Java POI导出Excel Java POI Excel Java 导出Excel Java POI
  • java如何实现Excel的导入、导出操作
    这篇文章主要为大家展示了java如何实现Excel的导入、导出操作,内容简而易懂,希望大家可以学习一下,学习完之后肯定会有收获的,下面让小编带大家一起来看看吧。一、Excel的导入导入可采用两种方式,一种是JXL,另一种是POI,但前者不能...
    99+
    2023-05-31
    java excel
  • Java怎么实现Excel导入导出操作
    今天小编给大家分享一下Java怎么实现Excel导入导出操作的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1. 功能测试1....
    99+
    2023-06-29
  • Java实现Excel导入导出操作详解
    目录前言1. 功能测试1.1 测试准备1.2 数据导入1.2.1 导入解析为JSON1.2.2 导入解析为对象(基础)1.2.3 导入解析为对象(字段自动映射)1.2.4 ...
    99+
    2024-04-02
  • 使用EasyExcel实现Excel的导入导出
    文章目录 前言一、EasyExcel是什么?二、使用步骤1.导入依赖2.编写文件上传配置3.配置表头对应实体类4.监听器编写5.控制层6.前端代码 总结 前言 在真实的开发者场景中,经常会使用excel作为数据的载体,进行...
    99+
    2023-08-17
    java
  • Springboot实现导入导出Excel的方法
    目录一、添加poi的maven依赖二、自定义注解(Excel属性标题、位置等)三、CustomExcelUtils编写四、定义导出实体类五、Controller层代码编写一、添加po...
    99+
    2024-04-02
  • Java中用POI实现将数据导出到Excel的方法
    这篇文章将为大家详细讲解有关Java中用POI实现将数据导出到Excel的方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。常用的java框架有哪些1.SpringMVC,Spring Web MVC是一...
    99+
    2023-06-14
  • POI导出之Excel实现单元格的背景色填充问题
    目录POI导出之Excel实现单元格的背景色填充POI导出Excel设置单元格背景色POI设置Excel单元格背景色(setFillForegroundColor与setFillPa...
    99+
    2023-03-07
    POI导出 Excel单元格背景 Excel单元格背景填充
  • POI导出之Excel如何实现单元格的背景色填充
    本篇内容介绍了“POI导出之Excel如何实现单元格的背景色填充”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!POI导出Excel设置单元格...
    99+
    2023-07-05
  • 怎么使用Java+element实现excel导入和导出
    本篇内容介绍了“怎么使用Java+element实现excel导入和导出”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!本项目是前端vue3,...
    99+
    2023-07-06
  • Java实现导出合并Excel单元格
    目录一、准备工作二、实现步骤三、完整代码四、总结随着数据的不断增长,很多时候需要将数据导出到Excel中进行分析、处理和展示。而Java作为一种流行的编程语言,自然也提供了很多实现E...
    99+
    2023-05-17
    Java导出合并Excel单元格 Java导出Excel Java合并Excel Java Excel
  • 在Java Web中Excel文件如何使用POI实现导出
    在Java Web中Excel文件如何使用POI实现导出?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。采用Spring mvc架构:Controller层代码如下@Cont...
    99+
    2023-05-31
    java web poi
  • vue怎么实现excel表格的导入导出
    这篇文章主要介绍“vue怎么实现excel表格的导入导出”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“vue怎么实现excel表格的导入导出”文章能帮助大家解决问题。一、下载xlsx插件npm&nb...
    99+
    2023-07-06
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作