Poi导入excel手机号/身份证号的处理方式

发布时间:2021-06-23 09:28:08 作者:chen
来源:亿速云 阅读:486
# Poi导入Excel手机号/身份证号的处理方式

## 问题背景
使用Apache POI处理Excel文件时,长数字类型(如手机号、身份证号)常因科学计数法或精度丢失导致显示异常。例如:
- 手机号 `13812345678` 显示为 `1.38123E+10`
- 身份证号末位变为 `0`

## 解决方案

### 1. 强制文本格式(推荐)
```java
// 创建单元格时设置单元格格式为文本
CellStyle textStyle = workbook.createCellStyle();
textStyle.setDataFormat(workbook.createDataFormat().getFormat("@"));

cell.setCellStyle(textStyle);
cell.setCellValue("13812345678"); // 必须用字符串形式写入

2. 自定义数据格式

// 自定义数字格式(如手机号)
DataFormat format = workbook.createDataFormat();
cellStyle.setDataFormat(format.getFormat("###########"));

3. CSV预处理方案

若从CSV导入,可在Excel中: 1. 文件 → 导入 → 选择CSV 2. 在向导中手动设置列格式为「文本」

注意事项

  1. POI版本差异:3.17+版本对数字处理更严格
  2. 大数据量优化
    
    // 使用SXSSFWorkbook处理大文件
    Workbook workbook = new SXSSFWorkbook(100); 
    
  3. 特殊字符处理:身份证号包含X时需确保未被转为科学计数法

完整示例代码

try (Workbook workbook = new XSSFWorkbook()) {
    Sheet sheet = workbook.createSheet();
    Row row = sheet.createRow(0);
    
    // 文本格式单元格
    Cell cell = row.createCell(0);
    CellStyle style = workbook.createCellStyle();
    style.setDataFormat(workbook.createDataFormat().getFormat("@"));
    
    cell.setCellStyle(style);
    cell.setCellValue("510123199001011234"); // 18位身份证号
}

通过以上方式可确保长数字数据在Excel中完整显示,避免科学计数法或精度丢失问题。 “`

推荐阅读:
  1. 访问控制列表(二)
  2. 访问控制列表(一)

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

poi

上一篇:Poi的Excel导出时间显示为数字怎么解决

下一篇:Java中Brick Generator生成器的作用是什么

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》