java读取excel中的数据(包括.xlsx和.xls) | 您所在的位置:网站首页 › exl怎么读 › java读取excel中的数据(包括.xlsx和.xls) |
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.0java代码 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.0java代码 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 实验室设备网 版权所有 |