Aspose.Cells-24.3 在用excel模板批量生成excel的时候,生成的excel工作表中的行高列高与模板中不一致

以下是我通过模板生成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,

很高兴知道您的问题现已解决。如果您有进一步的疑问或意见,请随时给我们回信。