解决方法如下所示:
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.*;
import org.apache.poi.hssf.usermodel.*;
private static void copyCellStyle(XSSFCell sourceCell, HSSFCell targetCell) {
// 获取源单元格的样式
XSSFCellStyle sourceStyle = sourceCell.getCellStyle();
// 创建新的目标单元格样式
HSSFWorkbook targetWorkbook = targetCell.getSheet().getWorkbook();
HSSFCellStyle targetStyle = targetWorkbook.createCellStyle();
// 复制源样式的属性到目标样式
targetStyle.cloneStyleFrom(sourceStyle);
// 设置目标单元格的样式
targetCell.setCellStyle(targetStyle);
}
// 创建源工作簿和目标工作簿
XSSFWorkbook sourceWorkbook = new XSSFWorkbook("source.xlsx");
HSSFWorkbook targetWorkbook = new HSSFWorkbook();
// 获取源工作簿的第一个工作表和目标工作簿的第一个工作表
XSSFSheet sourceSheet = sourceWorkbook.getSheetAt(0);
HSSFSheet targetSheet = targetWorkbook.createSheet();
// 获取源单元格和目标单元格
XSSFCell sourceCell = sourceSheet.getRow(0).getCell(0);
HSSFCell targetCell = targetSheet.createRow(0).createCell(0);
// 复制样式
copyCellStyle(sourceCell, targetCell);
在这个示例中,我们从源工作簿中获取了第一个工作表的第一个单元格,并将其样式复制到目标工作簿的第一个工作表的第一个单元格中。注意,我们使用了XSSFCell
和HSSFCell
来分别表示源单元格和目标单元格,因为它们属于不同的工作簿类型。