Java:apache.poi读写Excel文件
依赖
<dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>3.16</version>
</dependency>
备注:poi-ooxml
已经包含了poi
、poi-ooxml-schemas
、curvesapi
,不需要单独引入
文件格式对应处理类
.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文件相关推荐
- Java 使用 POI 对 Excel文件 进行读写操作
Java 使用 POI 对 Excel文件 进行读写操作 一.背景 目前正在做一个问卷功能模块,收集完问卷信息后,需要将数据库中的数据导出到Excel数据表中进行留存,因此就学习了在Java中如何对E ...
- 使用poi读写excel文件
使用poi读写excel文件 Posted on 2011 年 03 月 16 日 by 苍之涛 今天一个同学需要处理一个excel文件,于是我便在网上搜了一下方法,顺便自己研究一下.刚刚参考网上资料 ...
- Aspose-Cells结合Apache POI生成excel文件以及转换为pdf
最近有个需求是需要将数据库中的符合条件的交易流水导出生成为excel,并转换为pdf,提供给客户下载,客户下载核对并签章. 需要用到的jar包依赖: <dependency><gro ...
- java使用poi生成Excel文件并合并单元格
java使用poi生成Excel文件并合并单元格 业务需要根据 分管部门 字段进行合并,现在提供一种思路. controller层 @Inject(target = "/inf ...
- java读写excel文件poi_Java利用POI读写Excel文件工具类
本文实例为大家分享了Java读写Excel文件工具类的具体代码,供大家参考,具体内容如下 package com.test.app.utils; import java.io.File; import ...
- java使用poi操作excel文件_使用 java apache poi 操作 excel xlsx 文件
工作中临时需要对各种订单量进行简单的统计分析,为了方便简单学习了apache poi 对 xlsx 文件的基本操作,简单记录 1. 引包 org.apache.poi poi-ooxml 4.1.2 ...
- Apache POI操作Excel文件
Apache POI是用Java编写的免费开源的跨平台的Java API,Apache POI提供API给Java程序对Microsoft Office格式档案读和写的功能,其中使用最多的就是使用PO ...
- java使用POI实现excel文件的读取,兼容后缀名xls和xlsx
首先,引入所需的jar包: 如果是maven管理项目的jar包,只需在pom.xml中加上: [html] view plaincopy <!-- https://mvnrepository.c ...
- java 读取excel 图片_利用Java+POI 读写Excel文档向Excel中插入图片
一.POI简介 Jakarta POI 是apache的子项目,目标是处理ole2对象.它提供了一组操纵Windows文档的Java API 目前比较成熟的是HSSF接口,处理MS Excel(97- ...
最新文章
- 通信原理之IP协议,ARP协议 (三)
- [Gdal-dev] GCP's, Warping and Source Data Projections
- ASP.NET Core 新核心对象WebHost(一)
- 5天玩转C#并行和多线程编程 —— 第四天 Task进阶
- 开源配置管理平台-Apollo
- 【Transformer】AdaViT: Adaptive Tokens for Efficient Vision Transformer
- Flutter嵌套深?扩展函数了解一下
- 电脑设置访问苹果服务器未响应,苹果连接电脑没反应,教您苹果连接电脑没反应怎么解决...
- Centos 安装 JDK8
- C语言输入函数换行符赋给变量B,C语言程序设计第3章顺序结构程序设计.pptx-资源下载在线文库www.lddoc.cn...
- Python数据可视化案例二:动态更新数据
- 老外编辑带你迈出自己容器化的第一步
- 实验:进程调度算法(C语言)
- 图解机器学习算法 | 从入门到精通系列教程(机器学习通关指南·完结)
- Office:手动卸载 Office 系统
- 新浪UC 单文件精简版
- 牛客练习赛53 (E 老瞎眼 pk 小鲜肉) 线段树+离线
- 基于ng-alain做国际化
- JIS-CTF解题思路及关键语句
- 哺乳时宝宝一边吃奶,另一边却自动流出来,这是怎么回事?