JAVA POI无法理解工作簿克隆表方法,因为我什么都没有

我的工作簿中只有一张纸,需要从现有的纸张中创build两张新的纸张。 我首先使用工作簿创build方法创build新工作表,然后使用克隆表格方法克隆它。 但是,当从表中获取数据时,我只从我现有的工作表中获取数据,而从新创build的工作表中没有收到数据。 是我的理解错误克隆表方法。 它不会将现有工作表中的数据提供给新工作表。

XSSFWorkbook workbook = new XSSFWorkbook(file); XSSFSheet sheet = workbook.getSheetAt(0);\\existing sheet XSSFSheet newSheet = workbook.createSheet("NewSheet");\\created new sheet XSSFSheet newSheet1 = workbook.createSheet("NewSheet2");\\created new sheet newSheet = workbook.cloneSheet(1);\\clone sheet from existing sheet newSheet1 = workbook.cloneSheet(1);\\clone sheet from existing sheet for(int sheetNum=0; sheetNum < workbook.getNumberOfSheets(); sheetNum++) { // while iterating data I am getting records only for existing sheet // newSheet and newSheet1 is coming empty. } 

任何帮助将appriciated。

谢谢,阿米特

首先,引用您的代码片段“workbook.sheet(1)”不存在,这是您要克隆的工作表。 那么,假设您想克隆“workbook.sheet(0)”。 所以你需要改变:

 newSheet = workbook.cloneSheet(1);\\clone sheet from existing sheet newSheet1 = workbook.cloneSheet(1);\\clone sheet from existing sheet 

 newSheet = workbook.cloneSheet(0);\\clone sheet from existing sheet newSheet1 = workbook.cloneSheet(0);\\clone sheet from existing sheet 

如果你想克隆第一张纸。 如果没有,请确保您创build另一个工作表并更改值。

那么,是否

a)将其保存为新文件

 FileOutputStream out = new FileOutputStream(new File("<full path where you want to save it>"));) workbook.write(out); 

要么

b)将其保存到当前文件

要么

只需使用此代码片段,它会自动在同一个工作簿中使用您之前克隆的工作表中的相同数据创build新工作表。

 xSSFSheet newsheet = workbook.cloneSheet(0); 

并保存它。好运气! (对不起,如果这不符合你的要求)。

即使您获得正确的工作表索引,您的代码的另一个问题:

  XSSFSheet newSheet = workbook.createSheet("NewSheet");\\created new sheet XSSFSheet newSheet1 = workbook.createSheet("NewSheet2");\\created new sheet newSheet = workbook.cloneSheet(1);\\clone sheet from existing sheet newSheet1 = workbook.cloneSheet(1);\\clone sheet from existing sheet 

你在最后两行做的实际上是重置newSheet和newSheet1的引用。 分配后,它们引用其他对象,并且在前两行创build的表单中将不会观察到克隆。