java怎么导入文件_java如何导入Excel文件

本文介绍了如何使用Apache POI库在Java中读取Excel文件,包括xlsx和xls格式。首先,从官网下载并引入POI的jar包到项目中。然后,通过HSSFWorkbook和XSSFWorkbook接口读取不同格式的文件。在遍历Excel工作表和行时,需要注意处理空值和单元格类型转换,例如使用DataFormatter避免从数值单元格获取字符串时出现错误。
摘要由CSDN通过智能技术生成

Java使用POI导入Excel文件,操作起来比较简单,支持xlsx格式。

下载POI资源包

从官网https://poi.apache.org/下载POI,笔者选择的是版本是3.17,下载后文件名是poi-bin-3.17.zip。起初担心版本太新,和现有项目不兼容,后来程序跑起来没发现什么问题。

将poi-3.17下的jar包和poi-3.17\lib\*.jar包都复制到项目的WEB-INF\lib下,并在项目配置编译路径。

POI.png

在Java文件中添加以下引用,其中hssf用于xls格式,xssf用于xlsx格式。

import org.apache.poi.hssf.usermodel.HSSFCell;

import org.apache.poi.hssf.usermodel.HSSFRow;

import org.apache.poi.hssf.usermodel.HSSFSheet;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;

import org.apache.poi.ss.usermodel.DataFormatter;

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;

读取Excel文件

HSSFWorkbook workbook = null;try{//读取Excel文件

InputStream inputStream = new FileInputStream('c:\test.xlsx');

workbook= newHSSFWorkbook(inputStream);

inputStream.close();

}catch(Exception e) {

e.printStackTrace();

}

遍历Excel Sheet表

//遍历Excel Sheet

for (int numSheet = 0; numSheet < workbook.getNumberOfSheets(); numSheet++) {

workbook.getSheetAt(numSheet);

}

遍历行

HSSFSheet sheet = workbook.getSheetAt(0);if (sheet != null) {//循环行

for (int rowNum = 1; rowNum <= sheet.getLastRowNum(); rowNum++) {

HSSFRow row=sheet.getRow(rowNum);if (row == null) {continue;//忽略并继续读取

}

HSSFCell cell= row.getCell(0);if (cell == null) {continue;

}//System.out.println('cell.getStringCellValue0():' + cell.getStringCellValue());

cell = row.getCell(1);if (cell == null) {continue;

}//System.out.println('cell.getStringCellValue1():' + cell.getStringCellValue());

}

}

POI遇到问题Cannot get a text value from a numeric cell “Poi”

导入Excel文件时,如果某列是数值类型,直接通过cell.getStringCellValue()会报Cannot get a text value from a numeric cell “Poi”错误。

解决办法

DataFormatter formatter = newDataFormatter();

String val= formatter.formatCellValue(sheet.getRow(col).getCell(row));

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值