您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# 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"); // 必须用字符串形式写入
// 自定义数字格式(如手机号)
DataFormat format = workbook.createDataFormat();
cellStyle.setDataFormat(format.getFormat("###########"));
若从CSV导入,可在Excel中: 1. 文件 → 导入 → 选择CSV 2. 在向导中手动设置列格式为「文本」
// 使用SXSSFWorkbook处理大文件
Workbook workbook = new SXSSFWorkbook(100);
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中完整显示,避免科学计数法或精度丢失问题。 “`
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。