如何使用GemBox.Spreadsheet将Excel转换为带有工作表名称书签的PDF
实现Excel工作表名称作为PDF书签的方案
嘿,这个需求很常见,用GemBox.Spreadsheet完全可以轻松实现!你只需要在现有代码基础上,添加几行代码来手动为每个工作表创建对应的书签即可。下面是完整的实现代码:
var workbook = ExcelFile.Load("file.xlsx"); var options = new PdfSaveOptions() { SelectionType = SelectionType.EntireFile, GenerateBookmarks = true // 务必开启书签生成功能 }; // 遍历每个工作表,创建对应名称的书签 foreach (var worksheet in workbook.Worksheets) { // 跳过隐藏的工作表(可选,根据你的需求调整) if (worksheet.VisibilityState != WorksheetVisibilityState.Visible) continue; // 创建以工作表名称为标题的书签 var worksheetBookmark = new PdfBookmark(worksheet.Name); // 设置书签跳转至该工作表的起始位置(A1单元格) worksheetBookmark.Range = new PdfBookmarkRange(worksheet.Name, 0, 0); options.Bookmarks.Add(worksheetBookmark); } workbook.Save("file.pdf", options);
关键代码说明:
GenerateBookmarks = true:这是开启PDF书签功能的核心开关,如果不设置这个属性,即使添加了书签也不会在PDF中显示。- 遍历工作表创建书签:通过
foreach循环遍历工作簿里的每个工作表,为每个可见工作表创建一个PdfBookmark对象,直接用worksheet.Name作为书签的显示标题。 - 设置书签跳转位置:
PdfBookmarkRange用来指定书签点击后跳转的位置,这里我们设置为对应工作表的A1单元格(行号0、列号0),确保用户点击书签能直接定位到工作表开头。 - 跳过隐藏工作表:这段是可选的,如果你的Excel里有隐藏的工作表,不需要为它们生成书签的话,就加上这个判断逻辑。
这样生成的PDF文件里,左侧书签栏就会显示每个Excel工作表的名称,点击就能快速跳转到对应工作表的内容啦!
内容的提问来源于stack exchange,提问作者bellpatricia




