Java代码
poi读取表格数据的时候是先读行再读列,jxl读取excel数据时是先读列再读行
import org.apache.poi.hssf.usermodel.HSSFRichTextString;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.*;
public class TestDemo {
public static void main(String[] args) {
String path="C:\\Users\\82606\\Desktop\\0428\\test.xlsx";
readExcel(path);
}
public static void readExcel(String path){
try{
InputStream inputStream=new FileInputStream(path);
Workbook workbook=null;
if(path.substring(path.lastIndexOf(".")+1).equals("xls")){
workbook=new HSSFWorkbook(inputStream);
}else if(path.substring(path.lastIndexOf(".")+1).equals("xlsx")){
workbook=new XSSFWorkbook(inputStream);
}
//获取第一张表
Sheet sheet=workbook.getSheetAt(0);
for(int i=0;i<sheet.getPhysicalNumberOfRows();i++){
//循环读取每一个格
Row row= sheet.getRow(i);
String id="";
for(int index=0;index<row.getPhysicalNumberOfCells();index++){
Cell cell= row.getCell(index);
//处理单元格中空单元格导致的空指针异常
if (cell==null){
cell= row.createCell(index);
}
id=cell.getStringCellValue();
System.out.println(id);
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
pom.xml依赖
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.directory.studio</groupId>
<artifactId>org.apache.commons.codec</artifactId>
<version>1.8</version>
</dependency>
<dependency>
<groupId>net.sourceforge.jexcelapi</groupId>
<artifactId>jxl</artifactId>
<version>2.6.12</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.9</version>
</dependency>
</dependencies>