【发布时间】:2019-12-09 00:25:55
【问题描述】:
我需要编写CSV/Xls 文件,其中有一列具有类似00078 的数字,但即使将数字写入字符串后,Excel 工作表也会将其显示为78。
我已经尝试过 apache poi 库并尝试将单元格类型设置为字符串。
HSSFWorkbook workbook = new HSSFWorkbook();
// Create a blank sheet
HSSFSheet sheet = workbook.createSheet("student Details");
// This data needs to be written (Object[])
Map<String, Object[]> data = new TreeMap<String, Object[]>();
data.put("1", new Object[]{ "ID", "NAME", "LASTNAME" });
data.put("2", new Object[]{ 00078, "Pankaj", "Kumar" });
// Iterate over data and write to sheet
Set<String> keyset = data.keySet();
int rownum = 0;
for (String key : keyset) {
// this creates a new row in the sheet
Row row = sheet.createRow(rownum++);
Object[] objArr = data.get(key);
int cellnum = 0;
for (Object obj : objArr) {
// this line creates a cell in the next column of that row
Cell cell = row.createCell(cellnum++);
if (obj instanceof String)
cell.setCellValue((String)obj);
else if (obj instanceof Integer){
cell.setCellType(Cell.CELL_TYPE_STRING);
cell.setCellValue(String.valueOf(obj));
}
}
}
我希望该列将00078 视为字符串并显示相同的内容。
【问题讨论】:
-
试试
data.put("2", new Object[]{ "00078", "Pankaj", "Kumar" });添加引号,你现在有它作为一个数字。 -
很好的建议@Adder 成功了。现在我想知道我怎么没看到它。但问题是我正在实现它的地方有这个数字作为整数类型的对象。
-
请参阅pad a string 了解如何填充字符串 - 或仅使用 while 循环在达到宽度之前添加零。
-
00078as integer is 自动删除前导零。00078与78相同。如果您想要前导零,请将值作为字符串存储在 java 中,或者稍后添加它们,但也可以作为字符串 -
我成功编写了一个值为 00078 的 xls 文件,但是当我编辑单元格然后散焦时,它又回到了 78。
标签: java apache-poi xls