依赖

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

备注:poi-ooxml 已经包含了poipoi-ooxml-schemascurvesapi,不需要单独引入

文件格式对应处理类

.xls  => HSSFWorkbook
.xlsx => XSSFWorkbook

快速入门

写入文件

package com.demo.excel;import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;public class WriteExcel {public static void main(String[] args) throws IOException {// 创建工作表Workbook workbook = new XSSFWorkbook();Sheet sheet = workbook.createSheet("名称");// 行Row row = sheet.createRow(0);// 单元格Cell cell = row.createCell(0);cell.setCellValue("姓名");// 写到文件OutputStream outputStream = new FileOutputStream("demo.xlsx");workbook.write(outputStream);outputStream.close();//关闭workbook.close();}
}

读取文件

package com.demo.excel;import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;import java.io.*;public class ReadExcel {public static void main(String[] args) throws IOException {// 创建工作表InputStream inputStream = new FileInputStream("demo.xlsx");Workbook workbook = new XSSFWorkbook(inputStream);Sheet sheet = workbook.getSheet("名称");Row row = sheet.getRow(0);Cell cell = row.getCell(0);String value = cell.getStringCellValue();System.out.println(value);//关闭inputStream.close();workbook.close();}
}

Excel读写工具

package com.demo.excel;import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;import java.io.*;
import java.util.ArrayList;
import java.util.List;/*** Excel读写工具,兼容xls 和 xlsx格式*/
public class ExcelUtil {/*** 获取扩展名** @param filename 文件路径* @return*/public static String getSuffix(String filename) {return filename.substring(filename.lastIndexOf("."));}/*** 兼容xls xlsx文件格式** @param filename 文件路径* @return*/public static Workbook readWorkBook(String filename) throws IOException {// 获取文件扩展名String ext = getSuffix(filename);InputStream inputStream = new FileInputStream(filename);Workbook workbook = null;// xls格式的需要使用HSSFWorkbook类来解析// xlsx格式的需要使用XSSFWorkbook格式来解析if (".xls".equals(ext.toLowerCase())) {workbook = new HSSFWorkbook(inputStream);} else {workbook = new XSSFWorkbook(inputStream);}return workbook;}/*** 创建一个文件** @param filename* @return*/public static Workbook createWorkBook(String filename) {// 获取文件扩展名String ext = getSuffix(filename);Workbook workbook = null;// xls格式的需要使用HSSFWorkbook类来解析// xlsx格式的需要使用XSSFWorkbook格式来解析if (".xls".equals(ext.toLowerCase())) {workbook = new HSSFWorkbook();} else {workbook = new XSSFWorkbook();}return workbook;}/*** 读取Excel 文件** @param filename* @return 列表数据* @throws Exception*/public static List<List<String>> readExcel(String filename) throws Exception {// 创建工作簿的对象Workbook workBook = readWorkBook(filename);// 定义要返回的数据结构List<List<String>> list = new ArrayList<>();// 根据索引获取Sheet对象Sheet sheet = workBook.getSheetAt(0);// 定义表头List<String> rowList;// 获取所有行内容, 从第0 行开始 base 0for (int rowIndex = 0; rowIndex <= sheet.getLastRowNum(); rowIndex++) {rowList = new ArrayList<>();Row row = sheet.getRow(rowIndex);// 获取所有列值 base 1for (int columnIndex = 0; columnIndex < row.getLastCellNum(); columnIndex++) {Cell cell = row.getCell(columnIndex);//首先强制设置成string类型cell.setCellType(CellType.STRING);String value = cell.getStringCellValue();// System.out.println(value);rowList.add(value);}// System.out.println(map);list.add(rowList);}// 关闭工作簿workBook.close();return list;}/*** 写入到excel** @param filename* @param list* @throws Exception*/public static void writeExcel(String filename, List<List<Object>> list) throws Exception {Workbook workbook = createWorkBook(filename);Sheet sheet = workbook.createSheet();Row row;Cell cell;List<Object> rowList;for (int i = 0; i < list.size(); i++) {row = sheet.createRow(i);rowList = list.get(i);for (int j = 0; j < rowList.size(); j++) {cell = row.createCell(j);String value = String.valueOf(rowList.get(j));cell.setCellValue(value);}}// 写到文件OutputStream outputStream = new FileOutputStream(filename);workbook.write(outputStream);outputStream.close();workbook.close();}
}

测试

package com.demo.excel;import org.junit.Test;import java.util.ArrayList;
import java.util.List;public class ExcelUtilTest {@Testpublic void testReadExcel() throws Exception {String filename = "demo.xlsx";List<List<String>> list = ExcelUtil.readExcel(filename);System.out.println(list);// [[姓名, 年龄], [刘备, 42]]}@Testpublic void testWriteExcel() throws Exception {String filename = "demo.xlsx";List<List<Object>> list = new ArrayList<>();List<Object> list1 = new ArrayList<>();list1.add("姓名");list1.add("年龄");List<Object> list2 = new ArrayList<>();list2.add("刘备");list2.add(42);list.add(list1);list.add(list2);System.out.println(list);// [[姓名, 年龄], [刘备, 42]]ExcelUtil.writeExcel(filename, list);}
}

Java:apache.poi读写Excel文件相关推荐

  1. Java 使用 POI 对 Excel文件 进行读写操作

    Java 使用 POI 对 Excel文件 进行读写操作 一.背景 目前正在做一个问卷功能模块,收集完问卷信息后,需要将数据库中的数据导出到Excel数据表中进行留存,因此就学习了在Java中如何对E ...

  2. 使用poi读写excel文件

    使用poi读写excel文件 Posted on 2011 年 03 月 16 日 by 苍之涛 今天一个同学需要处理一个excel文件,于是我便在网上搜了一下方法,顺便自己研究一下.刚刚参考网上资料 ...

  3. Aspose-Cells结合Apache POI生成excel文件以及转换为pdf

    最近有个需求是需要将数据库中的符合条件的交易流水导出生成为excel,并转换为pdf,提供给客户下载,客户下载核对并签章. 需要用到的jar包依赖: <dependency><gro ...

  4. java使用poi生成Excel文件并合并单元格

    java使用poi生成Excel文件并合并单元格        业务需要根据 分管部门 字段进行合并,现在提供一种思路. controller层 @Inject(target = "/inf ...

  5. java读写excel文件poi_Java利用POI读写Excel文件工具类

    本文实例为大家分享了Java读写Excel文件工具类的具体代码,供大家参考,具体内容如下 package com.test.app.utils; import java.io.File; import ...

  6. java使用poi操作excel文件_使用 java apache poi 操作 excel xlsx 文件

    工作中临时需要对各种订单量进行简单的统计分析,为了方便简单学习了apache poi 对 xlsx 文件的基本操作,简单记录 1. 引包 org.apache.poi poi-ooxml 4.1.2 ...

  7. Apache POI操作Excel文件

    Apache POI是用Java编写的免费开源的跨平台的Java API,Apache POI提供API给Java程序对Microsoft Office格式档案读和写的功能,其中使用最多的就是使用PO ...

  8. java使用POI实现excel文件的读取,兼容后缀名xls和xlsx

    首先,引入所需的jar包: 如果是maven管理项目的jar包,只需在pom.xml中加上: [html] view plaincopy <!-- https://mvnrepository.c ...

  9. java 读取excel 图片_利用Java+POI 读写Excel文档向Excel中插入图片

    一.POI简介 Jakarta POI 是apache的子项目,目标是处理ole2对象.它提供了一组操纵Windows文档的Java API 目前比较成熟的是HSSF接口,处理MS Excel(97- ...

最新文章

  1. 通信原理之IP协议,ARP协议 (三)
  2. [Gdal-dev] GCP's, Warping and Source Data Projections
  3. ASP.NET Core 新核心对象WebHost(一)
  4. 5天玩转C#并行和多线程编程 —— 第四天 Task进阶
  5. 开源配置管理平台-Apollo
  6. 【Transformer】AdaViT: Adaptive Tokens for Efficient Vision Transformer
  7. Flutter嵌套深?扩展函数了解一下
  8. 电脑设置访问苹果服务器未响应,苹果连接电脑没反应,教您苹果连接电脑没反应怎么解决...
  9. Centos 安装 JDK8
  10. C语言输入函数换行符赋给变量B,C语言程序设计第3章顺序结构程序设计.pptx-资源下载在线文库www.lddoc.cn...
  11. Python数据可视化案例二:动态更新数据
  12. 老外编辑带你迈出自己容器化的第一步
  13. 实验:进程调度算法(C语言)
  14. 图解机器学习算法 | 从入门到精通系列教程(机器学习通关指南·完结)
  15. Office:手动卸载 Office 系统
  16. 新浪UC 单文件精简版
  17. 牛客练习赛53 (E 老瞎眼 pk 小鲜肉) 线段树+离线
  18. 基于ng-alain做国际化
  19. JIS-CTF解题思路及关键语句
  20. 哺乳时宝宝一边吃奶,另一边却自动流出来,这是怎么回事?

热门文章

  1. 上传图片,MultipartHttpServletRequest 2020-09-07
  2. 5G PRB和RBG关系
  3. 分享一个c++连线小游戏
  4. 有趣的搬砖工 No.2 cout格式化输出
  5. python自动操作微信_Python + Appium 自动化操作微信
  6. 计算机专业十六字口号,大学运动会十六字口号(精选50句)
  7. 浅谈游戏《Dead Cells死亡细胞》
  8. meb备份mysql,MySQL企业版备份工具MEB
  9. 卖计算机英语对话,有关买电脑英语对话
  10. 结构-行为-样式-angularJs 指令实现滚动文字