请大神指导,通过SheetRender.ToImage 去生成图片,有什么办法可以只截取指定区域吗

请大神指导,有什么办法只截取指定范围的内容吗?

以下是我的尝试代码, 但通过SelectRange生成的图片并没有起作用

using Stream templateXlsStream = File.OpenRead("test.xlsx");
            var wb = new Aspose.Cells.Workbook(templateXlsStream);
            var sheet1 = wb.Worksheets[4];
            sheet1.SelectRange(0, 7, 22, 13, true);
            var render = new SheetRender(sheet1, new ImageOrPrintOptions
            {
                ImageType = Aspose.Cells.Drawing.ImageType.Png,
                //OnePagePerSheet = true,
                OnlyArea = true,
            });

            render.ToImage(0, "jpg".GetPathByExt());

@davis2071,

要拍摄某个范围的图像,您需要将打印区域设置为所需的范围/区域,然后将所有边距设置为 0。还将 ImageOrPrintOptions.OnePagePerSheet 设置为 true。
请参阅以下示例代码供您参考。
例如
示例代码:

using Stream templateXlsStream = File.OpenRead("test.xlsx");
var wb = new Aspose.Cells.Workbook(templateXlsStream);
var sheet1 = wb.Worksheets[4];

// Set the print area with your desired range
sheet1.PageSetup.PrintArea = "H1:T22";

// Set all margins as 0 (optional), this will remove blank spaces around the image.
sheet1.PageSetup.LeftMargin = 0;
sheet1.PageSetup.RightMargin = 0;
sheet1.PageSetup.TopMargin = 0;
sheet1.PageSetup.BottomMargin = 0;

var render = new SheetRender(sheet1, new ImageOrPrintOptions
{
       ImageType = Aspose.Cells.Drawing.ImageType.Jpeg,
       OnePagePerSheet = true,
});

render.ToImage(0, "jpg".GetPathByExt());

另外,请参阅文档以供参考。

希望这个对你有帮助。

1 Like

:+1:完美解决 :heart: :heart:

@davis2071
感谢你的反馈。如果你有任何疑问,请随时联系我们。