使用 Spire.XLS 实现 Excel 转 PDF 的完整指南
一、Spire.XLS 简介与优势
Spire.XLS 是一款专业的 .NET 库,无需安装 Microsoft Office,即可在应用程序中创建、读取、编辑和转换 Excel 文档。其核心优势在于:
- 高度保真转换:精确保留 Excel 的布局、字体、颜色、图表、图片和公式。
- 无环境依赖:独立运行,避免了服务器环境中安装 Office 的安全风险与授权问题。
- 高性能与批量处理:支持大文件处理和批量转换,提升工作效率。
- 丰富的 API:提供细粒度的控制,自定义页面设置、水印、安全选项等。
二、环境准备与安装
首先,通过 NuGet 包管理器安装 Spire.XLS:
Install-Package Spire.XLS
或使用 .NET CLI:
dotnet add package Spire.XLS
安装后,即可在项目中引用相关命名空间。
三、基础转换:Excel 转 PDF 代码示例
以下是一个简单的 C# 示例,将 Excel 文件转换为 PDF:
using Spire.Xls;
using System.IO;
namespace ExcelToPdfDemo
{
class Program
{
static void Main(string[] args)
{
// 创建 Workbook 对象
Workbook workbook = new Workbook();
// 加载 Excel 文件
workbook.LoadFromFile(@"C:\Input\sample.xlsx");
// 设置转换选项
ToPdfParameterMap pdfParam = new ToPdfParameterMap();
// 可选:设置 PDF 兼容性、嵌入字体等
// pdfParam.PdfConformanceLevel = PdfConformanceLevel.Pdf_A1B;
// 保存为 PDF 文件
workbook.SaveToFile(@"C:\Output\sample.pdf", pdfParam);
// 释放资源
workbook.Dispose();
}
}
}
四、高级定制与格式保留技巧
1. 精确控制页面设置
使用 ToPdfParameterMap 类自定义 PDF 输出:
// 设置页面大小、方向、页边距
Worksheet sheet = workbook.Worksheets[0];
sheet.PageSetup.PaperSize = PaperSize.PaperA4;
sheet.PageSetup.Orientation = PageOrientationType.Landscape;
sheet.PageSetup.LeftMargin = 0.5;
// 设置缩放选项以适应页面
sheet.PageSetup.FitToPage = true;
sheet.PageSetup.FitToWidth = 1;
sheet.PageSetup.FitToHeight = 0;
2. 处理图表与图片
Spire.XLS 会自动将 Excel 图表转换为 PDF 矢量图形,确保清晰度。对于图片,建议在转换前设置适当的 DPI:
pdfParam.ImageDpi = 150; // 提高图片质量
3. 添加水印或页眉页脚
可以预先在 Excel 模板中设计好水印,或在转换后通过代码添加。
五、批量转换与错误处理
遍历文件夹进行批量转换,并添加异常处理:
try
{
string[] excelFiles = Directory.GetFiles(@"C:\Input", "*.xlsx");
foreach (string file in excelFiles)
{
Workbook wb = new Workbook();
wb.LoadFromFile(file);
string pdfPath = Path.Combine(@"C:\Output", Path.GetFileNameWithoutExtension(file) + ".pdf");
wb.SaveToFile(pdfPath, FileFormat.PDF);
wb.Dispose();
}
}
catch (Exception ex)
{
Console.WriteLine($"转换错误:{ex.Message}");
}
六、常见问题与解决方案
- 中文乱码:确保服务器安装了中文字体,或通过
workbook.WorkFonts.DuplicateFont()嵌入字体。 - 内存溢出:对于超大文件,分批次加载工作表进行转换。
- 公式计算:确保在加载工作簿后调用
workbook.CalculateAllValue()更新计算结果。
七、总结
通过 Spire.XLS,开发者可以轻松实现 Excel 到 PDF 的高质量转换,无需依赖 Office 环境。无论是简单的单文件转换,还是复杂的批量处理需求,其丰富的 API 和稳定的性能都能提供可靠支持。建议结合官方文档,探索更多高级功能,如加密 PDF、设置数字签名等,以满足企业级应用需求。