java - SetCellValue 不适用于第一行 java
问题描述
我正在使用 apache poi 将数据写入 excel 文件。当我将值传递给第一行的列(用于标题)时,它的值不会更新,但从第 2 行开始,我可以在 excel 文件中看到数据。下面是我正在使用的代码。
public static void writeWorkBook(Map<String, List<String>> addressMap, List<String> userList) {
System.out.println("Writing Process Started ");
XSSFWorkbook workbook = new XSSFWorkbook();
for (String user : userList) {
XSSFSheet sheet = workbook.createSheet("Data_" + user);
int rownum = 1;
Row row = sheet.createRow(rownum);
Cell cell = row.createCell(0);
cell.setCellValue("User");
cell = row.createCell(1);
cell.setCellValue("Address");
List<String> addressList = addressMap.get(user);
for (String s : addressList) {
row = sheet.createRow(rownum++);
cell = row.createCell(0);
cell.setCellValue(user);
cell = row.createCell(1);
cell.setCellValue(s);
}
}
try {
FileOutputStream out = new FileOutputStream(new File("D://practice/java/testWrite.xlsx"));
workbook.write(out);
out.close();
System.out.println("testWrite.xlsx written successfully on disk.");
workbook.close();
} catch (Exception e) {
e.printStackTrace();
}
}
解决方案
第一:所有索引都是从 0 开始的。所以
...
int rownum = 1;
Row row = sheet.createRow(rownum);
...
创建第二行。第一行将是
...
int rownum = 0;
Row row = sheet.createRow(rownum);
...
第二:row = sheet.createRow(rownum++);
首先创建行,然后rownum
递增。所以再次创建第一行而不是第二行。
做
...
row = sheet.createRow(++rownum);
...
反而。
推荐阅读
- python - 使用 cryptography.fernet 解密多个文件
- css - 圆形动画 css svg
- r - 识别字符串是否包含任何数字?
- c - 如何在C中实现连续管道?
- wordpress - Recaptcha 阻止访问我的 WordPress 编辑器
- javascript - 如何检测来自 Proton 或 Hush 等安全服务的电子邮件
- python - Anaconda 提示错误安装 face_recognition
- laravel - 如何将数据从 laravel 传递到 Vue Router?
- javascript - Highcharts/HighcharteR 工具提示:访问系列中的所有 y 值,打印差异
- excel - VBA用不同的值替换相同的字母