java基于poi操作Excel 学习日记

这篇博客介绍了如何使用Java的poi库操作Excel,详细讲解了XSSFWorkbook、XSSFSheet、XSSFRow和XSSFCell四个源码类,并通过三次封装过程,从获取Workbook、Sheet到读取单元格值,直至将Excel数据存入二维数组,提供了完整的代码实现。
摘要由CSDN通过智能技术生成

一、环境配置

我们通过学习知道,java操作Excel时需要在maven工程中的pom.xml文件添加poi-ooxml的依赖包,眼下我们选择的版本是3.17,因为相对稳定且使用率较高。配置路径以及结果如下:
在这里插入图片描述

二、poi-ooxml源码类学习

我们安装好依赖后按照业务需要,即操作Excel表格(当前不涉及Excel的写入,只有读取操作),会学习到四个源码类,分别是XSSFWorkbook源码类、XSSFSheet源码类、XSSFRow源码类和XSSFCell源码类。学习源码的一个大体节奏是通过源码类先学习类的构造方法,然后是普通方法最后汇总源码方法,进行流水线开发。现在我先把四个源码类的常用方法总结下来,具体如下。

2.1 XSSFWorkbook源码类

[ public class XSSFWorkbook extends POIXMLDocument implements Workbook ]。(路径:poi-ooxml-3.17.jar–>org.apache.poi.xssf.usermodel–>XSSFWorkbook.clss):

//构造方法
public XSSFWorkbook(); 
public XSSFWorkbook(XSSFWorkbookType workbookType)// public XSSFWorkbook(OPCPackage pkg) throws IOException;
// public XSSFWorkbook(InputStream is) throws IOException;
public XSSFWorkbook(File file) throws IOException, InvalidFormatException;
//---上面构造方法引出File源码类,通过实例话File类拿到File类的对象,传参,获取XSSFWorkbook的对象。
public XSSFWorkbook(String path) throws IOException;
//普通方法
public XSSFSheet cloneSheet(int sheetNum)public XSSFSheet cloneSheet(int sheetNum, String newName)public XSSFSheet createSheet()public XSSFSheet createSheet(String sheetname)public XSSFSheet getSheet(String name)public XSSFSheet getSheetAt(int index)public int getSheetIndex(String name)public int getSheetIndex(Sheet sheet)public String getSheetName(int sheetIx)public void removeSheetAt(int index)public void setSheetName(int sheetIndex, String sheetname)
2.2 XSSFSheet源码类

[ public class XSSFSheet extends POIXMLDocumentPart implements Sheet ]。上面我们观察到普通方法内创建Sheet、获取Sheet等方法最终都会得到一个sheet对象,那么XSSFSheet源码类又有哪些方法提供给我们使用呢?

// 构造方法
protected XSSFSheet()protected XSSFSheet(PackagePart part);
注意:XSSFSheet源码类的构造方法都是被保护类型的,不能直接调用,我们可以通过XSSFWorkbook源码类拿到sheet对象,操作XSSFSheet源码类中的方法。
// 普通方法
public XSSFWorkbook getWorkbook()public String getSheetName()public int getColumnWidth(int columnIndex)public int getDefaultColumnWidth()public boolean isColumnHidden(int columnIndex)public void setColumnHidden(int columnIndex, boolean hidden)public void setColumnWidth(int columnIndex, int width)public void setDefaultColumnWidth(int width)

public int getFirstRowNum();
public int getLastRowNum();
public short getDefaultRowHeight()public void setDefaultRowHeight(short height);
public XSSFRow createRow(int rownum)public XSSFRow getRow(int rownum);
public void removeRow(Row row);
2.3 XSSFRow源码类

[ public class XSSFRow implements Row, Comparable ]。上面我们可以看到由XSSFWorkbook类对象操作XSSFSheet类中的方法可以得到XSSFRow类的对象。得到行对象后就可以操作XSSFRow源码类中的方法。

// 构造方法
protected XSSFRow(CTRow row, XSSFSheet sheet);
同XSSFSheet源码类,XSSFRow源码类的构造方法也是被保护的,解决方法类似。
// 普通方法
public XSSFSheet getSheet()public XSSFCell createCell(int columnIndex)public XSSFCell createCell(int columnIndex, CellType type)public XSSFCell getCell(int cellnum)public short getFirstCellNum()public short getLastCellNum()// 特殊点:从1开始计数。
public int getRowNum()public void setRowNum(int rowIndex)public void removeCell(Cell cell)
2.4 XSSFCell源码类

[ public final class XSSFCell implements Cell ]。同样的道理,我们来看一下XSSFCell源码类中都有哪些构造方法和普通方法。

// 构造方法
protected XSSFCell(XSSFRow row, CTCell cell);
// 普通方法
public XSSFSheet getSheet();
public XSSFRow getRow();
public boolean getBooleanCellValue();
public void setCellValue(boolean value);
public double getNumericCellValue();
public void setCellValue(double value);
public String getStringCellValue();
public void setCellValue(String str);
public XSSFRichTextString getRichStringCellValue();
public void setCellValue(RichTextString str);
public String getCellFormula();
public void setCellFormula(String formula)<
注:下文中的 *** 代表文件名中的版本号。 # 【poi-ooxml-***.jar中文-英文对照文档.zip】 中含: 中文-英文对照文档:【poi-ooxml-***-javadoc-API文档-中文(简体)-英语-对照版.zip】 jar下载地址:【poi-ooxml-***.jar下载地址(官方地址+国内镜像地址).txt】 Maven依赖:【poi-ooxml-***.jar Maven依赖信息(可用于项目pom.xml).txt】 Gradle依赖:【poi-ooxml-***.jar Gradle依赖信息(可用于项目build.gradle).txt】 源代码下载地址:【poi-ooxml-***-sources.jar下载地址(官方地址+国内镜像地址).txt】 # 本文件关键字: poi-ooxml-***.jar中文-英文对照文档.zip,java,poi-ooxml-***.jar,org.apache.poi,poi-ooxml,***,org.apache.poi.ooxml,jar,Maven,第三方jar,组件,开源组件,第三方组件,Gradle,apache,poi,ooxml,中文-英文对照API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压 【poi-ooxml-***.jar中文-英文对照文档.zip】,再解压其中的 【poi-ooxml-***-javadoc-API文档-中文(简体)-英语-对照版.zip】,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·本文档为双语同时展示,一行原文、一行译文,可逐行对照,避免了原文/译文来回切换的麻烦; ·有原文可参照,不再担心翻译偏差误导; ·边学技术、边学英语。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件; # Maven依赖: ``` <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>***</version> </dependency> ``` # Gradle依赖: ``` Gradle: implementation group: 'org.apache.poi', name: 'poi-ooxml', version: '***' Gradle (Short): implementation 'org.apache.poi:poi-ooxml:***' Gradle (Kotlin): implementation("org.apache.poi:poi-ooxml:***") ``` # 含有的 Java package()(此处仅列举3个): ``` org.apache.poi.ooxml org.apache.poi.ooxml.dev org.apache.poi.ooxml.extractor ...... ``` # 含有的 Java class(类)(此处仅列举3个): ``` org.apache.poi.ooxml.POIXMLDocument org.apache.poi.ooxml.POIXMLDocumentPart org.apache.poi.ooxml.POIXMLDocumentPart.RelationPart ...... ```
注:下文中的 *** 代表文件名中的版本号。 # 【poi-ooxml-***.jar中文文档.zip】 中含: 中文文档:【poi-ooxml-***-javadoc-API文档-中文(简体)版.zip】 jar下载地址:【poi-ooxml-***.jar下载地址(官方地址+国内镜像地址).txt】 Maven依赖:【poi-ooxml-***.jar Maven依赖信息(可用于项目pom.xml).txt】 Gradle依赖:【poi-ooxml-***.jar Gradle依赖信息(可用于项目build.gradle).txt】 源代码下载地址:【poi-ooxml-***-sources.jar下载地址(官方地址+国内镜像地址).txt】 # 本文件关键字: poi-ooxml-***.jar中文文档.zip,java,poi-ooxml-***.jar,org.apache.poi,poi-ooxml,***,org.apache.poi.ooxml,jar,Maven,第三方jar,组件,开源组件,第三方组件,Gradle,apache,poi,ooxml,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压 【poi-ooxml-***.jar中文文档.zip】,再解压其中的 【poi-ooxml-***-javadoc-API文档-中文(简体)版.zip】,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件; # Maven依赖: ``` <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>***</version> </dependency> ``` # Gradle依赖: ``` Gradle: implementation group: 'org.apache.poi', name: 'poi-ooxml', version: '***' Gradle (Short): implementation 'org.apache.poi:poi-ooxml:***' Gradle (Kotlin): implementation("org.apache.poi:poi-ooxml:***") ``` # 含有的 Java package()(此处仅列举3个): ``` org.apache.poi.ooxml org.apache.poi.ooxml.dev org.apache.poi.ooxml.extractor ...... ``` # 含有的 Java class(类)(此处仅列举3个): ``` org.apache.poi.ooxml.POIXMLDocument org.apache.poi.ooxml.POIXMLDocumentPart org.apache.poi.ooxml.POIXMLDocumentPart.RelationPart ...... ```
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值