我有一个Java方法writeToExcel(String sheetName,Map),它创建一个名为' sheetName'的新工作表。在一个新的excel文件中,将地图数据写入其中。当我多次使用不同的sheetName参数调用该方法时,现有的工作表将被最后一个被调用的工作表替换。每当使用不同的sheetName参数调用方法时,我想在同一个excel文件中创建新工作表,而不会丢失现有工作表。这是我的代码。
public static void writeToExcel(String fileName,Map<Integer,String[]> excelData){
String filePath="/Data/excel.xlsx";
XSSFWorkbook workbook=new XSSFWorkbook();
XSSFSheet sheet=workbook.createSheet(fileName);
Set<Integer> keySet=excelData.keySet();
int passedCount=0;
int failedCount=0;
int rowNo=0;
int cellNo=0;
Row row;
Cell cell;
try{
File file=new File(filePath);
FileOutputStream output=new FileOutputStream(file);
for(Integer key:keySet){
row=sheet.createRow(rowNo++);
String[] dataToWrite=excelData.get(key);
cellNo=0;
for(String str:dataToWrite){
cell=row.createCell(cellNo++);
cell.setCellValue(str);
}
}
workbook.write(output);
output.close();
workbook.close();
}
catch(FileNotFoundException e){
e.printStackTrace();
}
catch(IOException e){
e.printStackTrace();
}
}
答案 0 :(得分:1)
好像你总是在方法的第二行创建一个新工作簿。因此,不是替换的工作表而是整个工作簿。更好地使用
XSSFWorkbook workbook=new XSSFWorkbook(new File(filePath));
这应该可以解决问题。
答案 1 :(得分:-1)
XSSFWorkbook工作簿=新的XSSFWorkbook(新文件(filePath)); =&GT; XSSFWorkbook工作簿=新的XSSFWorkbook(filePath);因为XSSFWorkbook工作簿没有套装构造函数=新的XSSFWorkbook(新文件(filePath))