java读取excel中的数据(包括.xlsx和.xls) 您所在的位置:网站首页 exl怎么读 java读取excel中的数据(包括.xlsx和.xls)

java读取excel中的数据(包括.xlsx和.xls)

2023-08-09 15:58| 来源: 网络整理| 查看: 265

java读取excel中的数据(包括.xlsx和.xls)

  java读取excel文件中的数据常用jxl和poi两种方式,其中最主要的区别在于jxl不支持.xlsx,而poi支持。小编平时用的比较多的是poi的方式,所以今天小编介绍的也是poi这种方式,另外一种方式小编就不再介绍了。其中poi提供了HSSFWorkbook和XSSFWorkbook两个实现类,区别在于HSSFWorkbook主要读取的是.xls格式的文件,XSSFWorkbook主要读取的是.xlsx格式的文件。

在使用poi的时候首先明确一下基本概念(这里以XSSFWorkbook为例):   先创建一个工作簿,一个工作簿可以有多个工作表,一个工作表可以有多个行,一个行可以有多个单元格   工作簿 ----------->XSSFWorkbook   工作表 ----------->XSSFSheet   行 ----------->XSSFRow   单元格 ----------->XSSFCell

下图是我创建的excel表中的数据内容

在这里插入图片描述在这里插入图片描述

接下来就是代码部分的内容了:

一、.xlsx格式文件的数据的读取

引入包依赖关系

4.0.0 com.kejizhentan poiReadExcel 0.0.1-SNAPSHOT org.apache.poi poi 4.1.0 org.apache.poi poi-ooxml 4.1.0

java代码

package com.kejizhentan.util; import java.io.FileInputStream; import java.io.IOException; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; public class ReadExcel { public static void main(String[] args) { try { //创建工作簿对象 XSSFWorkbook xssfWorkbook = new XSSFWorkbook(new FileInputStream("E://java17//java_practise//poiReadExcel//src//main//resources//chart.xlsx")); //获取工作簿下sheet的个数 int sheetNum = xssfWorkbook.getNumberOfSheets(); System.out.println("该excel文件中总共有:"+sheetNum+"个sheet"); //遍历工作簿中的所有数据 for(int i = 0;i //获取最后单元格num,即总单元格数 ***注意:此处从1开始计数*** int maxRol = sheet.getRow(row).getLastCellNum(); System.out.println("--------第" + row + "行的数据如下--------"); for (int rol = 0; rol e.printStackTrace(); } } } 二、.xls格式文件的数据的读取

引入包依赖关系(同XSSFWorkbook)

4.0.0 com.kejizhentan poiReadExcel 0.0.1-SNAPSHOT org.apache.poi poi 4.1.0 org.apache.poi poi-ooxml 4.1.0

java代码

package com.kejizhentan.util; import java.io.FileInputStream; import java.io.IOException; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; public class ReadExcel { public static void main(String[] args) { try { //创建工作簿 HSSFWorkbook hssfWorkbook = new HSSFWorkbook(new FileInputStream("E://java17//java_practise//poiReadExcel//src//main//resources//chart.xls")); //获取工作簿下sheet的个数 int sheetNum = hssfWorkbook.getNumberOfSheets(); System.out.println("该excel文件中总共有:"+sheetNum+"个sheet"); //遍历工作簿中的所有数据 for(int i = 0;i //获取最后单元格num,即总单元格数 ***注意:此处从1开始计数*** int maxRol = sheet.getRow(row).getLastCellNum(); System.out.println("--------第" + row + "行的数据如下--------"); for (int rol = 0; rol e.printStackTrace(); } } }

注意:

```bash Exception in thread "main" org.apache.poi.poifs.filesystem.OfficeXmlFileException: The supplied data appears to be in the Office 2007+ XML. You are calling the part of POI that deals with OLE2 Office Documents. You need to call a different part of POI to process this data (eg XSSF instead of HSSF) at org.apache.poi.poifs.storage.HeaderBlock.(HeaderBlock.java:130) at org.apache.poi.poifs.storage.HeaderBlock.(HeaderBlock.java:117) at org.apache.poi.poifs.filesystem.POIFSFileSystem.(POIFSFileSystem.java:294) at org.apache.poi.hssf.usermodel.HSSFWorkbook.(HSSFWorkbook.java:400) at org.apache.poi.hssf.usermodel.HSSFWorkbook.(HSSFWorkbook.java:381) at com.kejizhentan.util.ReadExcel.main(ReadExcel.java:14) ```

如果文件格式使用工具对应有问题就会报以下错误,所以使用的时候要分清楚是.xlsx还是.xls文件



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有