我正在使用apache poi创建一个excel文档 . 要在工作簿中创建新工作表,我编写下一个代码:
Workbook wb = new HSSFWorkbook();
Sheet sh = wb.createSheet();
此代码创建并向工作簿添加工作表 . 但是我想先创建工作表然后将其添加到工作簿中 . Smth是这样的:
Sheet sh = new HSSFSheet();
wb.addSheet(sh);
我需要这样的东西,因为我想将数据从一个工作簿的一张工作簿复制到另一张工作簿的另一张工作簿(工作簿界面有方法 Sheet cloneSheet(int)
) . 但是Workbook界面没有扩展它来实现add方法我该怎么做?
2 回答
您不能只从一个工作簿中获取Sheet对象,并将其添加到另一个工作簿 .
您需要做的是同时打开旧工作簿和新工作簿,并在新工作簿中创建工作表 . 接下来,将旧工作表中使用的所有样式克隆到新工作表(HSSFCellStyle有一种方法,用于将样式从一个工作簿克隆到另一个工作簿) . 最后,遍历所有单元格并将其复制过来 .
好吧,我试着去做Gagravarr上面所说的话 . 这个解决方案适合我 . 如果工作表没有表等,此代码将起作用 . 如果工作表包含简单文本(String,boolean,int等),公式,此解决方案将起作用 .
如果您的要求是在不离开或添加任何内容的情况下复制整张纸 . 我认为消除过程比上面的代码更好,更快 . 而且您不必担心丢失公式,图纸,表格,样式,字体等 .