java xls 导入_java如何导入excel文件

本文介绍如何使用Java的POI库正确处理Excel文件,包括读取xlsx和xls格式,避免'Cannot get a text value from a numeric cell'错误,并演示了如何处理数值类型的转换。通过DataFormatter解决获取单元格文本值的问题。

9765cda97de01cc7950350f7cf50fb1c.png

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

下载POI资源包

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

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

232b3dcd70067d6c7a58f517bb1cf551.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 = new HSSFWorkbook(inputStream);

inputStream.close();

} catch (Exception e) {

e.printStackTrace();

}

遍历Excel Sheet表// 遍历Excel Sheetfor (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 = new DataFormatter();

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值