Java 如何读取 Excel

日常工作里,很多人都遇到过要处理Excel数据的场景——比如把销售报表里的数字导入系统,或者把学生成绩整理成可统计的表格。如果数据量特别大,手动复制粘贴不仅慢还容易错,这时候用代码自动读取Excel就很实用。而Java作为常用的后端语言,读取Excel有成熟的工具可以用,今天就用生活里的例子,把这件事讲明白。

先搞懂:Java读Excel需要什么工具?

Excel有两种常见格式,后缀分别是.xls(2003及以前版本,最多65536行)和.xlsx(2007及以后版本,支持百万级数据)。Java本身没有自带直接读Excel的功能,得用第三方工具,目前最常用的是Apache POI,它就像一个“Excel翻译官”,能把Excel里的表格、文字、数字转换成Java能读懂的数据。

Java 如何读取 Excel

举个生活化的例子:你要给外国朋友递中文菜单,POI就相当于那个帮你把中文翻译成英文的人,中间不会出错,还能准确传递每一项内容。用POI也很简单,只要在项目里加两行“介绍信”(依赖包),就能让代码调用它的功能了。

第一步:先准备好“要读的Excel”

假设我们有一份最简单的学生成绩表,存在桌面,内容是这样的:

| 姓名 | 数学 | 语文 |

| ---- | ---- | ---- |

| 小明 | 90 | 85 |

| 小红 | 95 | 92 |

| 小刚 | 88 | 90 |

我们的目标是用Java代码把这三个人的成绩都读出来,不用手动输入,让代码自己“看懂”这个表格。

第二步:用Java代码读Excel,分两步走

用POI读Excel的逻辑其实和你手动看表格差不多:先找到“文件本身”,再逐行逐列看里面的内容。

先区分文件格式,别读错

就像你找衣服,要先分清是T恤还是毛衣,不能拿毛衣当T恤穿。.xls和.xlsx对应的POI工具不一样:读.xls用HSSFWorkbook,读.xlsx用XSSFWorkbook。

举个例子:你要寄快递,寄普通文件用信封,寄大件用纸箱,不能把衣服塞信封里寄,同理,不能用读.xls的工具去读.xlsx文件,不然会报错。

再逐行读取,提取有用信息

拿到文件后,先把整个Excel文件当成一个“工作簿”(相当于一本练习册),里面的每个sheet就是练习册里的一页,我们要先找到对应的数据页;然后从第二行开始读(第一行是表头,不用处理),每一行的每个单元格,对应表格里的每一格内容。

比如读小明的数学成绩:找到“姓名”那一行后,下一行的“数学”列对应的数字,就是要找的90,代码里只要按顺序取对应位置的内容就行,就像你按页码找练习册里的题目一样简单。

可能遇到的小问题,提前避坑

刚开始用的时候,最容易踩两个小坑,只要注意就能轻松避开:

第一个是“单元格类型错了”:比如表格里的“90”,有的是数字类型,有的是文本类型,读出来的格式不一样。就像你把同样的糖,有的用糖罐放,有的用袋子放,拿的时候要注意区分,不然会弄错。

第二个是“文件路径不对”:比如你把成绩表存在D盘的“成绩”文件夹里,代码里却写了去桌面找,自然找不到文件,就像你去小区门口的快递柜,却带着写字楼的取件码,肯定拿不到东西。

其实Java读Excel的核心逻辑一点都不复杂,只要用对工具、找对文件、按行按列取内容,就能轻松实现。不管是处理少量的小表格,还是几万行的大报表,只要选对方法,都能轻松搞定,帮你省下手动整理的时间。

上一篇 C / C++:从基础语法到高效开发的核心编程知识科普