使用Java和Apache POI将工作表附加到现有excel文件
我有一个Java方法writeToExcel(String sheetName,Map),它在一个新的excel文件中创建一个名为“sheetName”的新工作表,并将地图数据写入其中。当我多次使用不同的sheetName参数调用该方法时,现有的工作表将被上次调用的工作表替换。每次使用不同的sheetName参数调用该方法时,我都希望在同一excel文件中创建新的工作表,而不会丢失现有工作表。这是我的密码使用Java和Apache POI将工作表附加到现有excel文件,java,excel,apache-poi,Java,Excel,Apache Poi,我有一个Java方法writeToExcel(String sheetName,Map),它在一个新的excel文件中创建一个名为“sheetName”的新工作表,并将地图数据写入其中。当我多次使用不同的sheetName参数调用该方法时,现有的工作表将被上次调用的工作表替换。每次使用不同的sheetName参数调用该方法时,我都希望在同一excel文件中创建新的工作表,而不会丢失现有工作表。这是我的密码 public static void writeToExcel(String fileNa
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();
}
}
publicstaticvoidwritetoexcel(字符串文件名,映射excelData){
字符串filePath=“/Data/excel.xlsx”;
XSSFWorkbook工作簿=新XSSFWorkbook();
XSSFSheet sheet=workbook.createSheet(文件名);
Set keySet=excelData.keySet();
int passedCount=0;
int failedCount=0;
int rowNo=0;
int cellNo=0;
行行;
细胞;
试一试{
文件文件=新文件(文件路径);
FileOutputStream输出=新的FileOutputStream(文件);
for(整数键:键集){
row=sheet.createRow(rowNo++);
字符串[]dataToWrite=excelData.get(键);
cellNo=0;
for(字符串str:dataToWrite){
cell=row.createCell(cellNo++);
cell.setCellValue(str);
}
}
工作簿。编写(输出);
output.close();
workbook.close();
}
catch(filenotfounde异常){
e、 printStackTrace();
}
捕获(IOE异常){
e、 printStackTrace();
}
}
似乎您总是在方法的第二行创建新工作簿。因此,被替换的不是工作表,而是整个工作簿。更好地利用
XSSFWorkbook workbook=new XSSFWorkbook(new File(filePath));
这应该可以解决问题。XSSF工作簿=新XSSF工作簿(新文件(文件路径));=>XSSF工作簿=新XSSF工作簿(文件路径);作为XSSFWorkbook工作簿的不合适构造函数=新XSSFWorkbook(新文件(文件路径))Post-provide。请确保将您的代码复制粘贴到新项目中,并确保在将其发布到此处之前编译并运行。欢迎使用Stackoverflow。请编辑答案以格式化代码。现在是无法理解的。你也可以考虑扩大你的答案吗?它可以帮助询问者和其他成员更好地理解您的解决方案,并提供获取解决方案的上下文。