以下是我通过模板生成excel文件的部分代码
Workbook templateWorkBook1 = new Workbook(template1);
Worksheet templateSheet1 = templateWorkBook1.getWorksheets().get(0);
//新建excel
Workbook workbook = new Workbook();
//通过json的数据批量制作
for (int i = 1; i <= CREWINFO.size(); i++) {
//新建sheet页
Worksheet newSheet1 = workbook.getWorksheets().add(templateSheet1.getName() + i);
newSheet1.copy(templateSheet1);
在后面生成PDF的时候发现PDF和使用office生成的PDF不一致,最后发现是通过模板生成的excel文件的行高列高与模板不一致
@zslzzzzz
你愿意提供你的样例文件和可运行的测试代码吗?如果能提供截图并高亮显示问题,这对我们定位问题将会很有帮助。 我们很快就会检查。
test1.xlsx是模板,demo2是项目文件夹
Demo.7z (8.0 MB)
@John.He
@zslzzzzz
通过使用样例文件和代码进行测试,我们可以复现问题。发现拷贝工作表后,列宽发生改变。
我们已经在内部问题跟踪系统中打开了以下新问题单,并将根据Free Support Policies中提到的条款提供修复。
问题单号:CELLSJAVA-45982
@zslzzzzz
请复制模板文件的主题和默认样式。不同的默认值会改变以点为单位的列宽:
//新建excel
Workbook workbook = new Workbook();
workbook.copyTheme(templateWorkBook1);
workbook.setDefaultStyle(templateWorkBook1.getDefaultStyle());
感谢,现在生成的excel列宽和模板一样了,但是生成的PDF还是和office生成的有些区别,发现是设定的印刷边距的问题,请问excel转换成PDF时如何设置边距呢
@simon.zhao
@zslzzzzz
你可以通过获取工作表的PageSetup 属性来设置边距,请参考以下代码:
PageSetup page = newSheet1.getPageSetup();
page.setLeftMargin(1.0);
page.setTopMargin(1.0);
page.setRightMargin(1.0);
page.setBottomMargin(1.0);
关于设置边距,你也可以参考以下文档:
@zslzzzzz,
很高兴知道您的问题现已解决。如果您有进一步的疑问或意见,请随时给我们回信。