要支持复制行中的图片,你需要进行以下修改:
- 首先,在
copyRow()方法中添加代码以复制行中的图片。在单元格复制后,可以使用Drawing对象获取源行中的图片,并将其添加到目标行中。以下是示例代码:
private void copyRow(Row source, Row target, Workbook workbook) {
// 复制单元格内容等代码...
// 复制图片
Drawing<?> drawing = source.getSheet().createDrawingPatriarch();
Drawing<?> newDrawing = target.getSheet().createDrawingPatriarch();
for (Object obj : drawing) {
if (obj instanceof Picture) {
Picture picture = (Picture) obj;
ClientAnchor anchor = picture.getClientAnchor();
int row1 = anchor.getRow1();
int col1 = anchor.getCol1();
int row2 = anchor.getRow2();
int col2 = anchor.getCol2();
Picture newPicture = newDrawing.createPicture(anchor.getDx1(), anchor.getDy1(),
anchor.getDx2(), anchor.getDy2(), col1, target.getRowNum(), col2, target.getRowNum());
// 设置新图片的大小和位置等属性(可选)
newPicture.resize(0.5); // 调整图片大小
}
}
}
请注意,这里假设源行和目标行在同一个工作表上。
- 在
mergeFileSheet()方法中调用修改后的copyRow()方法,确保在每次复制行时都会复制对应的图片。示例代码如下所示:
for (Row sourceRow : attachmentSheet) {
Row targetRow = newSheet.createRow(sourceRow.getRowNum());
// 复制附件
copyRow(sourceRow, targetRow, originalWorkbook);
}
通过以上修改,你应该能够成功复制行中的图片到目标工作表中的对应行。记得根据具体需求调整代码中的其他部分(如图片大小等)。
内容由零声教学AI助手提供,问题来源于学员提问




