Excel存在很多空白行,怎么忽略这些空白行去转换为pdf

这是测试样本的文件
1.zip (35.3 KB)

image.png (20.6 KB)

这是转出来的pdf的样式
image.png (25.0 KB)

@Lycheng
通过查看你的样例文件,可以发现你对46、47、48和59这几行设置了整行的样式。所以在导出时会出现很多空白页。你有两种方式来解决空白页的问题。

  1. 设置打印区域为A1:R102。样例代码如下:
Workbook wb = new Workbook(filePath + "1.xlsx");
Worksheet sheet1 = wb.Worksheets[0];
sheet1.PageSetup.PrintArea = "A1:R102";
wb.Save(filePath + "out_net.pdf");
  1. 设置打印页面类型为忽略样式。样例代码如下:
Workbook book = new Workbook(filePath + "1.xlsx");
PdfSaveOptions saveOptions = new PdfSaveOptions();
saveOptions.PrintingPageType = PrintingPageType.IgnoreStyle;
book.Save(filePath + "out_net2.pdf", saveOptions);

希望这些能够帮助到你。

怎么只转换 指定的行数内和列数内 的数据为pdf

@Lycheng
你可以先将不需要转换的行和列进行隐藏,然后再进行转换操作。关于行列的显示和隐藏操作,请参考以下文档:

有个问题,我只想转指定的少数的行数和列数的,为什么还是很耗内存

@Lycheng,

您能否分享您用来显示内存消耗问题的示例(可运行)代码? 我们会尽快检查。

Workbook wb = new Workbook(“D:\oom文件.xlsx”);
Worksheet sheet1 = wb.getWorksheets().get(0);
sheet1.getPageSetup().setPrintArea(“A1:B2”);
PdfSaveOptions pdfSaveOptions = new PdfSaveOptions();
pdfSaveOptions.setAllColumnsInOnePagePerSheet(true);
wb.save(“D:\out_net.pdf”, pdfSaveOptions);

oom文件.zip (1.8 MB)

如这个,我只想转出来两行两列,但是内存消耗巨大。
jdk8
aspose-cells 23.8

@Lycheng,

当我在 MS Excel 中打开您的 Excel 文件时,即使是 MS Excel 也需要一些时间才能将文件加载到其中。 因此,通过 Aspose.Cells 加载和保存为 PDF 将花费一些时间并消耗该任务的内存。 您可以尝试在加载文件时使用MemoryPreference模式,它会消耗更少的内存并提高性能。 请参阅以下示例代码行以供参考。
例如
示例代码:

LoadOptions options = new LoadOptions();
options.setMemorySetting(MemorySetting.MEMORY_PREFERENCE);
Workbook wb = new Workbook("D:\oom文件.xlsx", options);
…

多谢,加了这个参数确实减少了很多内存的消耗,还有一些其它的可优化内存的配置吗

@Lycheng,

没有其他重要的选项可以减少内存消耗。 所以,你可以利用它。

好的,多谢,还有一个问题,当我指定打印区域时,如果真实的区域小于指定区域时,能不能只打印真实的区域大小,而不是打印我指定的过大的区域

@Lycheng ,

您可以使用 PageSetup API 指定多个打印区域。 您能否提供示例 Excel 文件并提供有关需要渲染为 PDF 的区域的详细信息。 您还可以提供屏幕截图来证明您的需求,如果可能的话,向我们提供您想要的 PDF,其中包含源模板 Excel 文件中完整的特定数据。 我们会尽快检查。

比如说我有一个excel文档只存在3行2列的数据,
image.png (52.6 KB)

当我指定了sheet1.getPageSetup().setPrintArea(“A1:X6”),因为这里指定的固定范围是比“真实数据”3行2列大的。

我想要的效果是只展示这3行2列的内容,小于我指定范围内的空白行列不打印。

或者有不有办法通过程序能获取到哪一行那一列开始是空白页,这样我就可以setPrintArea(“一个精准的范围值)

@Lycheng
你可以通过以下两个api来获取包含数据的最大行和最大列:

关于获取工作表数据范围,请参考以下文档:

你好,用程序怎么判断这类标识的大小呢,如OM90,代表的是第多少列,多少行

@Lycheng
关于行列号和单元格名字的转换,请参考以下文档:

excel转pdf时,能不能指定pdf每页只包含多少列数据,其它多余的列都转换到下一页