寻找个 用java poi 将xls转换成xlsx原有xls样式丢失问题的解决办法

最近在用java poi将原有财务部门的xls文件批量转换成xlsx格式,但是很不幸,xls原有的样式(比如:字体大小,字体颜色,背景)全部丢失了。
试着将原有xls里的style读出来设置给新的xlsx,但是遇到错误。
Code:
xlsxCell.setCellStyle(xlsCell.getCellStyle());

Error:
java.lang.ClassCastException: org.apache.poi.hssf.usermodel.HSSFCellStyle cannot be cast to org.apache.poi.xssf.usermodel.XSSFCellStyle
at org.apache.poi.xssf.usermodel.XSSFCell.setCellStyle(XSSFCell.java:508)

2个回答

设置样式的时候 需要先new XSSFCellStyle 再复制copy属性 再添加 不能直接把HSSFCellStyle 转成XSSFCellStyle

谢谢你的提示,试了下还是不行,难道需要针对每个style属性要一个一个的拿出来设进去吗?

Code
CellStyle hssfCellStyle = hssfCell.getCellStyle();
CellStyle xssfCellStyle = new XSSFCellStyle(new StylesTable());
xssfCellStyle.cloneStyleFrom(hssfCellStyle);
xssfCell.setCellStyle(xssfCellStyle);

Error
java.lang.IllegalArgumentException: Can only clone from one XSSFCellStyle to another, not between HSSFCellStyle and XSSFCellStyle
at org.apache.poi.xssf.usermodel.XSSFCellStyle.cloneStyleFrom(XSSFCellStyle.java:186)

qq_36297604
qq_36297604 回复wenhai_zhang: 不同类型的cell不可用clone方法
一年多之前 回复
wenhai_zhang
wenhai_zhang 使用:distCell.getCellStyle().cloneStyleFrom(srcCell.getCellStyle());可以复制格式。不会异常。
大约 5 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问