用Java读取Excel文件
本文介绍了在 Java 程序中读取 Excel 文件的必要信息。 使用什么软件? 要遵循哪些步骤,最后但并非最不重要的一点是如何应用库以便用户可以读取 Excel 文件。 那么,让我们开始吧。
用 Java 读取 Excel 文件
在 Java 中,读取 Excel 文件并不像其他文件格式(例如 Microsoft Word)那么容易。 不过,原因很容易理解,因为 Excel 工作表包含单元格。
JDK(Java Development Kit)不允许用户处理Microsoft Excel和Microsoft Word等文件。 此外,它没有向用户提供所需的API,因此我们别无选择,只能依赖第三方库来完成我们的任务。
要使用 Java 读取 excel 文件,我们必须了解 APACHE POI 库,因为它可以适用于 .xls 和 .xlsx 形式。
APACHE POI 库概述
该库,APACHE POI,也称为Poor Obfuscation Implement,为用户提供了两种实现。 一种是HSSF,另一种是XSSF。
- HSSF - HSSF,可怕的电子表格格式,实现表示用户拥有适用于早期版本的 Microsoft Excel(更具体地说是 Excel 2003 及更早版本)的 API。
- XSSF - XSSF,XML 电子表格格式,实现表示用户拥有适用于更高版本的 Microsoft Excel 的 API。 在本例中,它适用于 Excel 2007+ 版本。 我们还可以使用此实现来处理 .xlsx 格式。
让我们研究一下它的接口和类,以进一步了解它的工作。
接口和类
请注意,下面提到的所有接口都适用于 HSSF 和 XSSF。
- 工作簿 - 工作簿是代表 Excel 工作簿的界面。 它有两个类:HSSFWorkbook 和 XSSFWorkbook。
-
工作表 - 众所周知,工作簿的中心结构称为工作表。 因此,工作表是代表 Excel 工作表的界面。
它是 java.lang.Iterable 库的扩展。 此接口的两个类是 HSSFSheet 和 XSSFSheet。
- row - 它是一个表示 Excel 工作表行的接口。 该接口也是 java.lang.Iterable 库的扩展。 它有两个类:HSSFRow 和 XSSFRow。
- cell - 它是一个表示 Excel 工作表行中的单元格的界面。 它还具有两个类,称为 HSSFCell 和 XSSFCell。
既然我们知道 APACHE POI 库包含什么以及我们可以使用哪些接口和类,那么让我们研究一下读取 Excel 文件的步骤。
用 Java 读取 Excel 文件的步骤
这些步骤很容易遵循。
-
创建lib文件夹
在 Java 项目中创建一个名为 lib 的文件夹,用户将使用该文件夹打开并读取 Excel 文件。
-
下载jar文件
此步骤要求用户在上一步创建的 lib 文件夹中下载一些 jar 文件。 您需要下载 commons-collections4-4.1.jar、poi-3.17.jar、poi-ooxml-3.17.jar、poi-ooxml-schemas-3.17.jar 和 xmlbeans-2.6.0.jar
-
创建添加jar文件的路径
在此步骤中,我们必须创建路径来添加我们在上一步中下载的 jar 文件。 为此,右键单击我们在步骤 1 中创建的 Java 项目。
然后我们将通过单击构建路径选项来构建 jar 文件的路径。 最后,添加外部“jar”文件后,我们将单击“应用”并关闭。
-
创建一个 Java 类
在这一步中创建一个Java类文件,然后我们可以调用我们想要的excel文件来读取数据。 下面是读取 Excel 文件的类文件的示例。
本示例中将使用 XSSF,因为它使用 Excel 2007+ 版本。
import java.io.File; import java.util.Iterator; import java.io.FileInputStream; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Cell; public class Example{ public static void main(String[] args){ try { File ExcelFile = new File("D:\\your_filename.xlsx"); //obtaining bytes from the file FileInputStream FileStream = new FileInputStream(ExcelFile); //using the Workbook interface XSSFWorkbook ExcelWorkbook = new XSSFWorkbook(FileStream); //using the sheet class to get the object XSSFSheet ExcelSheet = ExcelWorkbook.getSheetAt(0); //iterating over excel file, rows. Iterator<Row> IterateRows = ExcelSheet.iterator(); while (IterateRows.hasNext()){ Row ExcelRow = IterateRows.next(); //iterating over the column Iterator<Cell> IterateCells = ExcelRow.cellIterator(); while (IterateCells.hasNext()){ Cell ExcelCell = IterateCells.next(); switch (ExcelCell.getCellType()){ case Cell.CELL_TYPE_STRING://represents string cell type System.out.print(ExcelCell.getStringCellValue() + "\t"); break; case Cell.CELL_TYPE_NUMERIC://represents number cell type System.out.print(ExcelCell.getNumericCellValue() + "\t"); break; default: } } System.out.println(""); } } catch(Exception exp) { exp.printStackTrace(); } } }
通过这个示例代码,我们可以轻松了解如何使用APACHE POI库。 此示例代码的输出将是用户提供的 Excel 文件数据。
相关文章
如何在 Java 中延迟几秒钟的时间
发布时间:2023/12/17 浏览次数:217 分类:Java
-
本篇文章主要介绍如何在 Java 中制造程序延迟。本教程介绍了如何在 Java 中制造程序延时,并列举了一些示例代码来了解它。
如何在 Java 中把 Hashmap 转换为 JSON 对象
发布时间:2023/12/17 浏览次数:187 分类:Java
-
它描述了允许我们将哈希图转换为简单的 JSON 对象的方法。本文介绍了在 Java 中把 Hashmap 转换为 JSON 对象的方法。我们将看到关于创建一个 hashmap,然后将其转换为 JSON 对象的详细例子。
如何在 Java 中按值排序 Map
发布时间:2023/12/17 浏览次数:171 分类:Java
-
本文介绍了如何在 Java 中按值对 Map 进行排序。本教程介绍了如何在 Java 中按值对 Map
进行排序,并列出了一些示例代码来理解它。
如何在 Java 中打印 HashMap
发布时间:2023/12/17 浏览次数:192 分类:Java
-
本帖介绍了如何在 Java 中打印 HashMap。本教程介绍了如何在 Java 中打印 HashMap 元素,还列举了一些示例代码来理解这个主题。
在 Java 中更新 Hashmap 的值
发布时间:2023/12/17 浏览次数:146 分类:Java
-
本文介绍了如何在 Java 中更新 HashMap 中的一个值。本文介绍了如何在 Java 中使用 HashMap 类中包含的两个方法-put() 和 replace() 更新 HashMap 中的值。
Java 中的 hashmap 和 map 之间的区别
发布时间:2023/12/17 浏览次数:79 分类:Java
-
本文介绍了 Java 中的 hashmap 和 map 接口之间的区别。本教程介绍了 Java 中 Map 和 HashMap 之间的主要区别。在 Java 中,Map 是用于以键值对存储数据的接口,
在 Java 中获取用户主目录
发布时间:2023/12/17 浏览次数:218 分类:Java
-
这篇文章向你展示了如何在 Java 中获取用户主目录。本教程介绍了如何在 Java 中获取用户主目录,并列出了一些示例代码以指导你完成该主题。
Java 中 size 和 length 的区别
发布时间:2023/12/17 浏览次数:179 分类:Java
-
这篇文章教你如何知道 Java 中大小和长度之间的区别。本教程介绍了 Java 中大小和长度之间的区别。我们还列出了一些示例代码以帮助你理解该主题。
Java 中的互斥锁
发布时间:2023/12/17 浏览次数:111 分类:Java
-
了解有关 Java 中互斥锁的一切,在计算机科学领域,互斥或互斥被称为并发控制的属性。每台计算机都使用称为线程的最小程序指令序列。有一次,计算机在一个线程上工作。为了更好地理解,