Java 读取excel表格文件
注意,本文使用的Jar包为jxl.jar
,只能处理97-03版本xls格式的Excel
下文也一并补充了读写xlsx格式表格的方法,使用的poi
jar包
maven依赖:
<dependency>
<groupId>net.sourceforge.jexcelapi</groupId>
<artifactId>jxl</artifactId>
<version>2.6.10</version>
</dependency>
使用
读取xls文件
//通过文件IO,读入一个xls文件
Workbook book = Workbook.getWorkbook(new File(path));
//获得第一个工作表对象(ecxel中sheet的编号从0开始,0,1,2,3,....)
Sheet sheet = book.getSheet(0);
//遍历每一行内容
for (int i = 0; i <sheet.rows; i++) {
//getCell获得单元格,参数为(列,行)的下标
System.out.println(sheet.getCell(0, i).getContents());
//获取第i行第0个单元格数据
//System.out.println(sheet.getRow(i).get(0).getContents());
}
写出xls文件
File xlsFile = new File("jxl.xls");
// 创建一个工作簿
WritableWorkbook workbook = Workbook.createWorkbook(xlsFile);
// 创建一个工作表
WritableSheet sheet = workbook.createSheet("sheet1", 0);
//遍历每一行,写出数据
for (int row = 0; row < 10; row++){
for (int col = 0; col < 10; col++){
// 向工作表中添加数据
sheet.addCell(new Label(col, row, "data" + row + col));
}
}
workbook.write();
workbook.close();
使用POI读取xlsx
POI支持xls和xlsx格式的表格文件,由于是后面学的kotlin,所以代码是以kotlin来写的
首先,先引入依赖
<!--xls(03)-->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>5.0.0</version>
</dependency>
<!--xlsx(07)-->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>5.0.0</version>
</dependency>
poi库是只支持xls格式,而poi-ooxml则可以支持xlsx格式
1.读取excel文件数据
上面我们也是知道,由于存在两种格式,所以我们的写法上得注意一下
XSSFWorkbook
对应xls文件HSSFWorkbook
对应xlsx文件
由于XSSFWorkbook
和HSSFWorkbook
都是实现的Workbook接口,所以可利用到多态的原理来编写代码,达到兼容写法
fun main(args: Array<String>) {
val file = File("D:\\download\\test.xlsx")
var workbook: Workbook? = null
if (file.extension.toLowerCase() == "xlsx") {
//xlsx
workbook = XSSFWorkbook(file)
}
if (file.extension.toLowerCase() == "xls") {
//xls
workbook = HSSFWorkbook(FileInputStream(file))
}
workbook?.let {
val sheet = workbook.getSheetAt(0)
//读取第一行第一列单元格数据
val firstColumn = sheet.getRow(0).first()
//需要判断一下但单元格的类型
if (firstColumn.cellType == CellType.STRING) {
println(firstColumn.stringCellValue)
}
workbook.close()
}
}
PS:就是觉得有些神奇的是,XSSFWorkbook构造函数可以接收File类型的对象参数,而HSSFWorkbook只能接收FileInputSteam
2.创建execl文件数据
val file = File("D:\\download\\myoutput.xlsx")
val workbook: Workbook = XSSFWorkbook()
//val workbook: Workbook = HSSFWorkbook()
val sheet = workbook.createSheet("sheet0")
val row = sheet.createRow(0)
val cell = row.createCell(0)
cell.cellType = CellType.STRING
cell.setCellValue("hello world")
//输出到文件
workbook.write(FileOutputStream(file))
workbook.close()
效果: