网上读取excel的很多方法,我找了一个:java 读取excel数据_会飞的猪biubiu的博客-CSDN博客_java读取excel
它用的
但是呢我发现:
?我这个一直都报错,怎么都解决不了,所以我就把中间的注释了,这就没有什么影响了
根据poi导出excel,poi3.8包中没有org.apache.poi.ss.usermodel.CellType;_P_Doraemon的博客-CSDN博客_import org.apache.poi.ss.usermodel.cell
才知道其他版本修改了(高版本的poi导入的包和方法的名称和低版本的有一些区别,):
?
?import org.apache.poi.ss.usermodel.CellType
变为
import org.apache.poi.ss.usermodel.Cell;
?
然后:
cell.setCellType(CellType.STRING);
变为
cell.setCellType(Cell.CELL_TYPE_STRING);
第一步:
使用maven导入:
<poi.version>4.1.2</poi.version>
<!-- excel工具 -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>${poi.version}</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>${poi.version}</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-scratchpad</artifactId>
<version>${poi.version}</version>
或者使用Gradle
// https://mvnrepository.com/artifact/org.apache.poi/poi
compile('org.apache.poi:poi-ooxml:3.9')
还可以导入jar方式,可以自行下载
如果你搜的是jxl的方法,如:GitHub - loaLakers/ReadExcel: java读取excel文件
那你就要导入它的方法,这个我试了不行,我只有自己手动导入,这个jar文件就在这个gihub下载里面?
如果你还不会IDE导入jar包就参考我博客有:https://blog.csdn.net/bbs11007/article/details/124696263?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22124696263%22%2C%22source%22%3A%22bbs11007%22%7D&ctrtid=3UChB
第二步:
单独写方法 ReadExcel .class:
package com.ngame.utils.excel;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.*;
//import org.apache.poi.ss.usermodel.CellType;//
import org.apache.poi.ss.usermodel.Cell;//上面的CellType修改
import org.apache.commons.lang3.ObjectUtils;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
public class ReadExcel {
// public static List<String> list = new ArrayList<String>();
public List readXSLX(File file) throws Exception {//支持XLSX的
if (!file.exists()){
throw new Exception("文件不存在!");
}
List<String> listline = new ArrayList<>();
try {
InputStream in = new FileInputStream(file);
XSSFWorkbook sheets = new XSSFWorkbook(in);// 读取整个Excel
XSSFSheet sheetAt = sheets.getSheetAt(0);// 获取第一个表单Sheet
XSSFRow titleRow = sheetAt.getRow(0);//默认第一行为标题行,i = 0
// 循环获取每一行数据
for (int i = 1; i < sheetAt.getPhysicalNumberOfRows(); i++) {
XSSFRow row = sheetAt.getRow(i);
// 读取每一格内容
StringBuilder sb = new StringBuilder();
for (int index = 0; index < row.getPhysicalNumberOfCells(); index++) {
XSSFCell titleCell = titleRow.getCell(index);
XSSFCell cell = row.getCell(index);
System.out.println("标题:"+titleCell);
System.out.println("内容:"+cell);
// cell.setCellType(CellType.STRING);
cell.setCellType(Cell.CELL_TYPE_STRING);//上面那行修改
if (cell.getStringCellValue().equals("")) {
continue;
}
sb.append(cell+"|");//把表格内容放进去,没有标题
}
System.out.println("每行:"+i + "|" + sb);
listline.add(i + "|" + sb);//要返回的list
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
return listline;//返回list
}
/*public List readXSL(File file) throws Exception {//支持xls的
if (!file.exists()){
throw new Exception("文件不存在!");
}
List<String> listline = new ArrayList<>();
try {
InputStream in = new FileInputStream(file);
XSSFWorkbook sheets = new XSSFWorkbook(in);// 读取整个Excel
XSSFSheet sheetAt = sheets.getSheetAt(0);// 获取第一个表单Sheet
XSSFRow titleRow = sheetAt.getRow(0);//默认第一行为标题行,i = 0
// 循环获取每一行数据
for (int i = 1; i < sheetAt.getPhysicalNumberOfRows(); i++) {
XSSFRow row = sheetAt.getRow(i);
// 读取每一格内容
StringBuilder sb = new StringBuilder();
for (int index = 0; index < row.getPhysicalNumberOfCells(); index++) {
XSSFCell titleCell = titleRow.getCell(index);
XSSFCell cell = row.getCell(index);
// System.out.println("biaoti:"+titleCell);
// System.out.println("neirong:"+cell);
// cell.setCellType(CellType.STRING);
// if (cell.getStringCellValue().equals("")) {
// continue;
// }
sb.append(cell+"|");
}
// System.out.println("每行:"+i + "|" + sb);
listline.add(i + "|" + sb);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
return listline;
}*/
}
注意:
代码中判断的是XLSX的excel,要xls要修改下?
第三步:最后就可以直接调用了
这是main主方法或者需要调用的地方:
import com.excel.uitl.ReadExcel //引用方法
main(){
File file1 = new File("D:\\excel\\test.xlsx");
ReadExcel readExcel = new ReadExcel();
System.out.println("输出的表格内容:"+readExcel.readXSLX(file1));
}
输出的表格内容:[1|100|张三|28岁|本科,2|101|李四|大专,3|102|王五|硕士]
输出的内容不是你想要的,你可以根据自己的需要去修改。在方法里。
|