@Lycheng
通过查看你的样例文件,可以发现你对46、47、48和59这几行设置了整行的样式。所以在导出时会出现很多空白页。你有两种方式来解决空白页的问题。
- 设置打印区域为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");
- 设置打印页面类型为忽略样式。样例代码如下:
Workbook book = new Workbook(filePath + "1.xlsx");
PdfSaveOptions saveOptions = new PdfSaveOptions();
saveOptions.PrintingPageType = PrintingPageType.IgnoreStyle;
book.Save(filePath + "out_net2.pdf", saveOptions);
希望这些能够帮助到你。
             
            
              
              
              
            
            
                
                
              
           
          
            
            
              @Lycheng
你可以先将不需要转换的行和列进行隐藏,然后再进行转换操作。关于行列的显示和隐藏操作,请参考以下文档:
             
            
              
              
              
            
            
                
                
              
           
          
            
            
              有个问题,我只想转指定的少数的行数和列数的,为什么还是很耗内存
             
            
              
              
              
            
            
                
                
              
           
          
            
            
              @Lycheng,
您能否分享您用来显示内存消耗问题的示例(可运行)代码? 我们会尽快检查。
             
            
              
              
              
            
            
                
                
              
           
          
            
              
                Lycheng
                
              
              
              
                  
                  
              9
              
             
            
              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)
             
            
              
              
              
            
            
                
                
              
           
          
            
              
                Lycheng
                
              
              
              
                  
                  
              10
              
             
            
              如这个,我只想转出来两行两列,但是内存消耗巨大。
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
                
              
              
              
                  
                  
              12
              
             
            
              多谢,加了这个参数确实减少了很多内存的消耗,还有一些其它的可优化内存的配置吗
             
            
              
              
              
            
            
                
                
              
           
          
            
            
              @Lycheng,
没有其他重要的选项可以减少内存消耗。 所以,你可以利用它。
             
            
              
              
              
            
            
                
                
              
           
          
            
              
                Lycheng
                
              
              
              
                  
                  
              14
              
             
            
              好的,多谢,还有一个问题,当我指定打印区域时,如果真实的区域小于指定区域时,能不能只打印真实的区域大小,而不是打印我指定的过大的区域
             
            
              
              
              
            
            
                
                
              
           
          
            
            
              @Lycheng ,
您可以使用 PageSetup API 指定多个打印区域。 您能否提供示例 Excel 文件并提供有关需要渲染为 PDF 的区域的详细信息。 您还可以提供屏幕截图来证明您的需求,如果可能的话,向我们提供您想要的 PDF,其中包含源模板 Excel 文件中完整的特定数据。 我们会尽快检查。
             
            
              
              
              
            
            
                
                
              
           
          
            
              
                Lycheng
                
              
              
              
                  
                  
              16
              
             
            
              比如说我有一个excel文档只存在3行2列的数据,
image.png (52.6 KB)
当我指定了sheet1.getPageSetup().setPrintArea(“A1:X6”),因为这里指定的固定范围是比“真实数据”3行2列大的。
我想要的效果是只展示这3行2列的内容,小于我指定范围内的空白行列不打印。
或者有不有办法通过程序能获取到哪一行那一列开始是空白页,这样我就可以setPrintArea(“一个精准的范围值)
             
            
              
              
              
            
            
                
                
              
           
          
            
              
                John.He
                
              
              
              
                  
                  
              17
              
             
            
              @Lycheng
你可以通过以下两个api来获取包含数据的最大行和最大列:
关于获取工作表数据范围,请参考以下文档:
             
            
              
              
              
            
            
                
                
              
           
          
            
              
                Lycheng
                
              
              
              
                  
                  
              18
              
             
            
              你好,用程序怎么判断这类标识的大小呢,如OM90,代表的是第多少列,多少行
             
            
              
              
              
            
            
                
                
              
           
          
            
              
                John.He
                
              
              
              
                  
                  
              19
              
             
            
              @Lycheng
关于行列号和单元格名字的转换,请参考以下文档:
             
            
              
              
              
            
            
                
                
              
           
          
            
              
                Lycheng
                
              
              
              
                  
                  
              20
              
             
            
              excel转pdf时,能不能指定pdf每页只包含多少列数据,其它多余的列都转换到下一页
             
            
              
              
              
            
            
                
                
              
           
          
            
              
                John.He
                
              
              
              
                  
                  
              21
              
             
            
              @Lycheng
你可以通过指定纸张大小来控制每页显示的数据多少,关于纸张大小的设置,请参考以下文档:
你也可以自定义纸张大小,请参考以下文档:
             
            
              
              
              
            
            
                
                
              
           
          
            
              
                John.He
                
              
              
              
                  
                  
              22
              
             
            
              @Lycheng
你也可以通过设置 Page Breaks来控制页面包含的数据。请参考以下文档: