如何为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
相关产品推荐
相关产品推荐

