You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为GemBox.Spreadsheet.ExcelWorksheet设置自定义页面宽高

问题:使用GemBox.Spreadsheet设置自定义PDF页面尺寸(100x34)无效

我尝试基于ExcelFile生成PDF文档,需要设置尺寸为100x34的较小页面。默认页面尺寸不支持该规格,虽然发现有Custom选项,但无法使其生效。

我的代码如下:

var workbook = ExcelFile.Load(stream);
ExcelWorksheet worksheet = workbook.Worksheets[0];
worksheet.PrintOptions.PaperType = PaperType.Custom;

using (MemoryStream memoryStream = new MemoryStream())
{
    workbook.Save(memoryStream, saveOptions);
    return (memoryStream.ToArray());
}

我查看了官方文档示例也没能解决问题,相关论坛示例同样无效。请问该如何设置自定义的页面宽高?


解决方案

仅设置PaperType.Custom是不够的,还需要通过PrintOptions.SetCustomPaperSize方法指定具体的宽高数值,同时要注意单位转换(GemBox.Spreadsheet默认使用百分之一英寸作为单位,需根据100和34的实际单位做转换)。

修改后的代码示例:

var workbook = ExcelFile.Load(stream);
ExcelWorksheet worksheet = workbook.Worksheets[0];

// 设置自定义纸张类型
worksheet.PrintOptions.PaperType = PaperType.Custom;
// 假设100和34的单位是毫米,转换为百分之一英寸(1英寸=25.4毫米)
float widthInHundredthsOfInch = (float)(100 / 25.4 * 100);
float heightInHundredthsOfInch = (float)(34 / 25.4 * 100);
worksheet.PrintOptions.SetCustomPaperSize(widthInHundredthsOfInch, heightInHundredthsOfInch);

using (MemoryStream memoryStream = new MemoryStream())
{
    workbook.Save(memoryStream, saveOptions);
    return memoryStream.ToArray();
}

关键说明:

  • SetCustomPaperSize的参数单位是百分之一英寸,如果你的100x34是其他单位(如厘米),需自行调整转换公式。
  • 确保saveOptions是PdfSaveOptions实例,保证输出为PDF格式。
  • 若需要横向排版,可添加:worksheet.PrintOptions.Orientation = PrintOrientation.Landscape;

内容的提问来源于stack exchange,提问作者Leo Rossetti

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 04:51:05