用Java中的JXL复制工作表
我想将工作表从现有XLS文档复制到新位置
我怎样才能用JXL做到这一点
Workbook w1 = Workbook.getWorkbook(new File("ExistingDocument.xls"), settings);
WritableWorkbook w2 = Workbook.createWorkbook(new File("NewDocument.xls"));
/* So here, I would like copy the first sheet from w1 to the second sheet of w2 ... */
w2.write();
w2.close();
w1.close();
编辑:
w1.getSheet(0).getCell(0, 0)
不是WritableCell
,因此我无法使用copyTo
方法
有没有办法将单元格/工作表从w1
添加到w2
工作簿
edit2:
那么,我是否必须将工作簿的可写副本创建到其他文件中
(edit3:或者是否有其他免费库可以做到这一点?)
更新:
当我运行这段代码时,我在第行得到jxl.common.AssertionFailed
个异常
WritableCellFormat newFormat = new WritableCellFormat(readFormat);
如果我删除这一行并将代码更改为
newCell.setCellFormat(readFormat);
然后不复制单元格样式(字体、单元格边框等)
try {
Workbook sourceDocument = Workbook.getWorkbook(new File("C:\\source.xls"));
WritableWorkbook writableTempSource = Workbook.createWorkbook(new File("C:\\temp.xls"), sourceDocument);
WritableWorkbook copyDocument = Workbook.createWorkbook(new File("C:\\copy.xls"));
WritableSheet sourceSheet = writableTempSource.getSheet(0);
WritableSheet targetSheet = copyDocument.createSheet("sheet 1", 0);
for (int row = 0; row < sourceSheet.getRows(); row++) {
for (int col = 0; col < sourceSheet.getColumns(); col++) {
WritableCell readCell = sourceSheet.getWritableCell(col, row);
WritableCell newCell = readCell.copyTo(col, row);
CellFormat readFormat = readCell.getCellFormat();
/* exception on the following line */
WritableCellFormat newFormat = new WritableCellFormat(readFormat);
newCell.setCellFormat(newFormat);
targetSheet.addCell(newCell);
}
}
copyDocument.write();
copyDocument.close();
writableTempSource.close();
sourceDocument.close();
} catch (Exception e) {
e.printStackTrace();
}
如何将单元格样式也复制到新单元格中
# 1 楼答案
你必须一个接一个地遍历单元格,并将它们添加到新的工作表中
请参见this,有疑问的是,如何将一个工作簿中的工作表复制到另一个工作簿中的新工作表
# 2 楼答案
jxlapiwiki允许用户在运行时读取、写入、创建和修改Excel(
.xls
)工作簿中的工作表。它不支持.xlsx
格式Excel 95, 97, 2000, XP, and 2003
的Excel文档。这些文档包含扩展名.xls
使用以下功能复制JXL工作簿工作表
使用Java Excel API » 2.6.12的完整示例,使用的示例文件是JXLWorkbook.xls
# 3 楼答案
注意警告“超出了格式记录的最大数量。使用默认格式<尝试使用类似
Map<CellFormat,WritableCellFormat>
的东西来控制WritableCellFormat
实例的数量# 4 楼答案
# 5 楼答案
只是一个更新,“copyto”函数不适用于单元格,一些修改过的代码: 这需要一个可读的工作簿、要复制的工作表的索引号、可写的工作簿和需要复制工作表的索引号,可以很好地将工作表从一个工作簿复制到另一个工作簿
# 6 楼答案
如何将一个工作簿中的工作表复制到另一个工作簿中的新工作表强>
这是可以做到的,但需要做一些工作。首先,您必须复制它的单元格(在几个嵌套for循环中)。对于每个单元格,您需要调用
copyTo()
方法,该方法将生成一个深度副本。但是,格式只是浅复制的,因此需要获取单元格格式并使用该格式的复制构造函数,然后在刚刚复制的单元格上调用setCellFormat。然后将重复单元格添加到新的电子表格中代码可能如下所示:
资源: