循环的输出每一列 当第二列写入 前一列会删除,如果我写入两列,第一列和第三列 当写入第三列的时候 第一列就没了 map里面的integer是列
Workbook workbook = writeWorkbookHolder.getWorkbook();
String sheetName = "hidderSheet";
Sheet proviceSheet = workbook.createSheet(sheetName);
Name name = workbook.createName();
name.setNameName(sheetName);
for (Map.Entry<Integer, String[]> entry : integerMap.entrySet()) {
String[] strings = entry.getValue();
// int hiddenSheet = workbook.getSheetIndex("hidderSheet");
// workbook.setSheetHidden(hiddenSheet, true);
for (int i = 0; i < strings.length; i++) {
proviceSheet.createRow(i).createCell(entry.getKey()).setCellValue(strings[i]);
}
怎么才能完整的输出两列呢
1.使用poi的时候要注意每一个单元格都是一个对象,不可以直接复用(包括样式)
2.将第二层for循环内容改为一一创建试试
int rowNum = 0;
for (Map.Entry<Integer, String[]> entry : integerMap.entrySet()) {
String[] strings = entry.getValue();
// int hiddenSheet = workbook.getSheetIndex("hidderSheet");
// workbook.setSheetHidden(hiddenSheet, true);
for (int i = 0; i < strings.length; i++) {
proviceSheet.createRow(rowNum).createCell(entry.getKey()).setCellValue(strings[i]);
}
rowNum++;
}
你创建行的时候有问题 不应该用i
for (int i = 0; i < strings.length; i++) {
proviceSheet.createRow(i).createCell(entry.getKey()).setCellValue(strings[i]);
}
Excel中行和列是二维数组关系,一个行中有很多列,行是第一层循环,列是第二层循环。
你的截图中,strings数组是一个行中每个列的数组集合,第二层循环的i参数是给列用的。
而你把第二层循环的i用在创建行的第一层循环上就错了。
自己在循环体外面定义一个记录行数的参数:rownum,然后在第一层循环中自增即可。
望采纳!!!