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>

jar包maven下载地址

使用

读取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文件

由于XSSFWorkbookHSSFWorkbook都是实现的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()

效果:

posted @ 2019-11-20 15:14  Stars-one  阅读(2085)  评论(0编辑  收藏  举报