使用 apache poi 读取excel 把 数字转换成 字符

最近在做一个 导入用户的功能。用户有一个电话属性 和密码 。 在导入的时候 变成

如果密码填写:123 poi 读取会变成 123.0
电话 会变成科学计数。 实在是头疼啊。
然后各种中文网百度,没有找到靠谱的答案。
使用了神器网站:stackover ,找到了,解决办法:

    cell.setCellType(Cell.CELL_TYPE_STRING); 

使用这条语句就可以了。

 for(int colNum=0;colNum<row.getLastCellNum();colNum++){
					HSSFCell cell = row.getCell(colNum);
					if(cell == null){
						continue;
					}
					cell.setCellType(HSSFCell.CELL_TYPE_STRING);//无条件转为文本,迫不得已
					String cellValue=null; 

代码的位置见上面。

如果你有需求 需要单独对一列进行 转换。 需要再加列的判断。

不过上面的做法,官方不建议这样做,先目前,这样粗暴的解决这个问题。以后找到了更好的方法,我在把这个博文更新下。

见stackover :

这里写图片描述

传送门

官方解释:
这里写图片描述

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用Apache POI库,可以通过以下代码将Excel单元格中的数字提取为整数类型: ```java import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellType; import org.apache.poi.ss.usermodel.DataFormatter; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.ss.usermodel.WorkbookFactory; import java.io.File; import java.io.FileInputStream; public class ExcelReader { public static void main(String[] args) { try { // 读取Excel文件 FileInputStream fileInputStream = new FileInputStream(new File("test.xlsx")); Workbook workbook = WorkbookFactory.create(fileInputStream); Sheet sheet = workbook.getSheetAt(0); // 获取单元格的值,转换为整数类型 DataFormatter dataFormatter = new DataFormatter(); Row row = sheet.getRow(0); Cell cell = row.getCell(0); if (cell.getCellType() == CellType.NUMERIC) { int value = (int) cell.getNumericCellValue(); System.out.println(value); } else if (cell.getCellType() == CellType.STRING) { int value = Integer.parseInt(dataFormatter.formatCellValue(cell)); System.out.println(value); } } catch (Exception e) { e.printStackTrace(); } } } ``` 此代码将Excel文件“test.xlsx”中第一个单元格的值提取为整数类型。如果单元格的类型为数字,则使用`getNumericCellValue()`方法获取数字值,并强制转换为整数。如果单元格的类型为字符串,则使用`formatCellValue()`方法将字符转换为整数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值