Excel 是常见的数据处理与呈现工具,但直接共享 Excel 文件可能面临格式错乱、兼容性不足或数据泄露的风险。为了保证文档在不同平台和终端上的稳定展示,开发者常常需要将 Excel 文件转换为 PDF 格式。
本文将详细介绍如何使用 C#和.NET Excel 库——Spire.XLS for .NET 高效地将 Excel 文件转换为 PDF。内容涵盖基础转换示例和自定义转换设置,包括如何导出指定工作表或单元格区域、自定义页面设置、为输出 PDF 添加密码保护、导出符合 PDF/A 标准的文件等。
为什么要将 Excel 转换为 PDF
将 Excel 文件转换为 PDF 具有以下显著优势:
- 保留原始布局和格式:PDF 能完整保留 Excel 文件的结构与样式,确保在不同设备上显示一致。
- 跨平台兼容性强:PDF 可在任何系统或设备上打开,无需安装 Excel 或其他电子表格软件。
- 更高的文档安全性:PDF 支持加密、数字签名和访问权限限制,能有效防止文件被未授权查看、复制或编辑。
安装C# .NET Excel 转 PDF 库
Spire.XLS for .NET 是一款功能强大的 Excel 处理库,支持在不依赖 Microsoft Office 的前提下将 Excel 文件直接转换为 PDF。该库不仅能够高精度地将 Excel 内容转换为 PDF,保持原有格式和样式的一致性,还支持对转换过程进行灵活自定义,以满足不同场景下的排版和安全性等多样化需求。
安装 Spire.XLS for .NET
在开始转换之前,请先通过以下任一方式安装 Spire.XLS:
方式一:通过 NuGet 安装(推荐)
Install-Package Spire.XLS
方式二:手动添加 DLL 到项目中
- 下载 Spire.XLS 产品包并解压。
- 在 Visual Studio 中,右键点击“引用” > “添加引用” > “浏览”,选择合适目标框架的 Spire.Xls.dll进行添加。
using Spire.Xls; namespace ExcelToPdf { internal class Program { static void Main(string[] args) { // 创建 Workbook 对象 Workbook workbook = new Workbook(); // 加载 Excel 文件 workbook.LoadFromFile("C:\\Users\\Administrator\\Desktop\\test.xlsx"); // 将 Excel 文件保存为 PDF 格式 workbook.SaveToFile("WorkbookToPDF.pdf", FileFormat.PDF); // 释放资源 workbook.Dispose(); } } }
Excel 转 PDF 基础示例
使用 Spire.XLS 将 Excel 文件转换为 PDF 十分简便,只需几行代码。下面的示例展示了如何加载 Excel 文件并直接保存为 PDF,适用于快速转换且无需自定义设置的场景。
Excel 转 PDF 自定义设置
Spire.XLS for .NET 还为开发者提供了丰富的自定义转换选项,以满足不同场景的需求。这些选项包括:
- 导出特定工作表或单元格区域为PDF
- 导出时将工作表内容适配到一页
- 调整工作表页面设置以自定义PDF输出效果
- 为 输出PDF 设置密码
- 导出符合 PDF/A 标准的文件
导出特定工作表或单元格区域为 PDF
在实际工作中,有时并不需要导出整个 Excel 工作簿,而只需将某个特定的工作表或者工作表中的部分单元格区域导出为 PDF 文件。Spire.XLS 可以直接将选定工作表导出为PDF,还支持设置打印区域来指定导出的具体单元格范围,从而实现精准导出。
using Spire.Xls; namespace WorksheetOrCellRangeToPdf { internal class Program { static void Main(string[] args) { // 创建 Workbook 对象 Workbook workbook = new Workbook(); // 加载 Excel 文件 workbook.LoadFromFile("C:\\Users\\Administrator\\Desktop\\test.xlsx"); // 获取第一个工作表 Worksheet sheet = workbook.Worksheets; // 设置打印区域(可选) // sheet.PageSetup.PrintArea = "B1:E6"; // 导出工作表为 PDF 文件 sheet.SaveToPdf("SheetToPDF.pdf"); // 释放资源 workbook.Dispose(); } } }
导出时将工作表内容适配至一页
在打印或共享报告时,常常需要将一个较大工作表的所有内容缩放到一页纸内,保证报告内容一览无遗且排版紧凑。Spire.XLS 支持在导出时将工作表自动缩放至单页,无需手动计算纸张或缩放比例,确保输出的 PDF 页面美观且内容完整。
using Spire.Xls; namespace FitWorksheetToOnePage { internal class Program { static void Main(string[] args) { // 创建 Workbook 对象 Workbook workbook = new Workbook(); // 加载 Excel 文件 workbook.LoadFromFile("C:\\Users\\Administrator\\Desktop\\test.xlsx"); // 设置导出时自动缩放工作表内容以适应单页 workbook.ConverterSetting.SheetFitToPage = true; // 保存为 PDF 文件 workbook.SaveToFile("FitToOnePage.pdf", FileFormat.PDF); // 释放资源 workbook.Dispose(); } } }
调整工作表页面设置以自定义 PDF 输出效果
为了适应不同的展示和打印需求,用户常常需要对页面布局进行个性化设置。Spire.XLS 支持通过配置工作表的 PageSetup 属性,灵活调整页边距、纸张大小、页面方向及网格线显示等设置,从而实现对页面布局的精确控制,确保生成的 PDF 文件符合实际使用需求。
using Spire.Xls; namespace AdjustPageSetup { internal class Program { static void Main(string[] args) { // 创建 Workbook 对象 Workbook workbook = new Workbook(); // 加载 Excel 文件 workbook.LoadFromFile("C:\\Users\\Administrator\\Desktop\\test.xlsx"); // 获取第一个工作表 Worksheet sheet = workbook.Worksheets; // 设置页面方向为横向 sheet.PageSetup.Orientation = PageOrientationType.Landscape; // 设置纸张大小为 A4 sheet.PageSetup.PaperSize = PaperSizeType.PaperA4; // 设置页边距,单位为英寸 sheet.PageSetup.LeftMargin = 0.5; sheet.PageSetup.RightMargin = 0.5; sheet.PageSetup.TopMargin = 0.5; sheet.PageSetup.BottomMargin = 0.5; // 设置打印时显示网格线 sheet.PageSetup.IsPrintGridlines = true; // 保存为 PDF 文件 sheet.SaveToPdf("CustomPageSetup.pdf"); // 释放资源 workbook.Dispose(); } } }
为输出 PDF 添加密码保护
针对包含敏感信息的工作表,Spire.XLS 支持为导出的 PDF 文件设置打开密码和权限密码,有效保障文件内容的安全,防止未经授权的访问和修改。
using Spire.Xls; using Spire.Xls.Pdf.Security; namespace SecurePdfWithPassword { internal class Program { static void Main(string[] args) { // 创建 Workbook 对象 Workbook workbook = new Workbook(); // 加载 Excel 文件 workbook.LoadFromFile("C:\\Users\\Administrator\\Desktop\\test.xlsx"); // 设置 PDF 打开密码和权限密码,配置打印权限,使用 128 位秘钥加密 workbook.ConverterSetting.PdfSecurity.Encrypt( "OpenPassword", "PermissionsPassword", PdfPermissionsFlags.Print, PdfEncryptionKeySize.Key128Bit ); // 保存为 PDF 文件 workbook.SaveToFile("Encrypted.pdf", FileFormat.PDF); // 释放资源 workbook.Dispose(); } } }
导出符合 PDF/A 标准的文件
PDF/A 是一种专为长期数字档案保存而设计的 ISO 标准格式,它可以确保文档在未来多年内的可访问性和格式一致性。借助 Spire.XLS,用户可以将 Excel 文件直接转换为符合 PDF/A 标准的 PDF 文档,满足政府、法律及企业档案管理的合规需求。
using Spire.Xls; using Spire.Xls.Pdf; namespace ExcelToPdfA { internal class Program { static void Main(string[] args) { // 创建 Workbook 对象 Workbook workbook = new Workbook(); // 加载 Excel 文件 workbook.LoadFromFile("C:\\Users\\Administrator\\Desktop\\test.xlsx"); // 设置导出 PDF 的合规等级为 PDF/A-1a workbook.ConverterSetting.PdfConformanceLevel = PdfConformanceLevel.Pdf_A1A; // 保存为 PDF 文件 workbook.SaveToFile("Pdf/A-Compliant.pdf", FileFormat.PDF); // 释放资源 workbook.Dispose(); } } }
总结
Spire.XLS for .NET 提供了功能强大且灵活的 Excel 转 PDF 解决方案,既能满足快速转换的基础需求,也支持导出指定工作表或单元格区域、调整页面设置、为输出PDF添加密码保护、导出 PDF/A格式文件等高级功能,适用于各种业务场景。通过本指南中的示例,开发者可以轻松将 Excel 到 PDF 的转换功能集成到 .NET 应用程序中。