当我将数据添加到Excel工作表中的第二个选项卡时。第一个选项卡数据未显示。 如果我删除第二个标签的代码,则第一个标签数据可见。
HSSFSheet sheet1 = wb.createSheet("A ");
HSSFSheet sheet2 = wb.createSheet("B");
HSSFFont headerFont = wb.createFont();
headerFont.setBoldweight(Font.BOLDWEIGHT_BOLD);
headerStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
headerStyle.setFillForegroundColor(HSSFColor.PALE_BLUE.index);
headerStyle.setFillBackgroundColor(HSSFColor.WHITE.index);
headerStyle.setFont(headerFont);
try
{
FileOutputStream fileOut = new FileOutputStream("C:\\Report.xls");
HSSFRow sessionname = sheet1.createRow(0);
HSSFCell title = sessionname.createCell(0);
title.setCellStyle(headerStyle);
title.setCellValue("Supported cipher Report");
HSSFRow row = sheet1.createRow(5);
HSSFCell cell0 = row.createCell(0);
cell0.setCellStyle(headerStyle);
cell0.setCellValue("One");
HSSFCell cell1 = row.createCell(1);
cell1.setCellStyle(headerStyle);
cell1.setCellValue("two");
HSSFCell cell2 = row.createCell(2);
cell2.setCellStyle(headerStyle);
cell2.setCellValue("three");
HSSFCell cell3 = row.createCell(3);
cell3.setCellStyle(headerStyle);
cell3.setCellValue("four");
HSSFCell cell4 = row.createCell(4);
cell4.setCellStyle(headerStyle);
cell4.setCellValue("five");
if (!list.isEmpty())
{
int rowNumber = 6;
for (Result s : supportedlist)
{
HSSFRow nextrow = sheet1.createRow(rowNumber);
nextrow.createCell(0).setCellValue(s.One());
nextrow.createCell(1).setCellValue(s.Two());
nextrow.createCell(2).setCellValue(s.Three());
nextrow.createCell(3).setCellValue(s.four());
nextrow.createCell(4).setCellValue(s.five());
rowNumber++;
}
}
sheet1.autoSizeColumn(0);
sheet1.autoSizeColumn(1);
sheet1.autoSizeColumn(2);
sheet1.autoSizeColumn(3);
sheet1.autoSizeColumn(4);
System.out.println("sheet1 writting");
wb.write(fileOut);
fileOut.flush();
fileOut.close();
当我传递sheet2时,其余代码与上面相同。 在取消显示sheet2数据时,不显示sheet1选项卡数据。
答案 0 :(得分:0)
我认为您在写sheet1
后正在将sheet2
的值更改为sheet1
。现在,根据您的代码发生的事情是您再次创建/写入文件。因此,它replaces
旧文件和数据,并写入第二张表中的新文件。
第二次运行程序时,下面的行会覆盖数据
FileOutputStream fileOut = new FileOutputStream("C:\\Report.xls");
您应该做的是在写sheet2
时,您应该检查是否存在文件。如果存在,则将新工作表添加到现有excel文件。如果不存在,则创建一个新文件,然后创建一个工作表。
做这样的事情
FileOutputStream fileOut = new FileOutputStream(file);
if (file.exists()) {
try {
workbook = (HSSFWorkbook)WorkbookFactory.create(file);
} catch (InvalidFormatException e) {
e.printStackTrace();
}
HSSFSheet sheet = workbook.createSheet("Sample sheet2");
}
else{
workbook = new HSSFWorkbook();
HSSFSheet sheet = workbook.createSheet("Sample sheet1");
}
workbook.write(fileOut);
fileOut.close();
为避免覆盖现有文件,请使用以下内容。这会将数据附加到现有文件中。
FileOutputStream fileOut = new FileOutputStream("C:\\Report.xls", true);
答案 1 :(得分:0)
问题是我创建了两个实例[new createExcel(one);和新的createExcel(两个);在调用函数时。因为wb是实例的一部分。所以它用sheet1和sheet2创建了新的excel。从那以后我只写了sheet2数据。所以sheet2数据只显示。感谢您的支持。