C# Excel 转 PDF

570 阅读1分钟

Excel 转 PDF

C# Excel操作库有:

  • EPPLUS (商用收费,EPPLUS.Core 1.5.4 免费)

  • NOPI (开源免费)

  • Spire.Xls (商用收费,有免费的Free.Spire.Xls 有部分功能受限)

这里使用的转换库就是免费的 Free.Spire.Xls

Tips:官方说免费版只能将Excel的前三页转成PDF。

Free Spire.XLS for .NET | 免费的 .NET Excel 组件,在 C#, VB.NET, ASP.NET 中处理 Excel 文档 (e-iceblue.cn)

生成 Excel 的库可以是任意的。最后都可以通过 Free.Spire.Xls 来转换。转换效果也比较好,几乎保留了所有的样式。

using OfficeOpenXml; // EPPLUS 库
using Spire.Xls;  // Free.Spire.Xls 库

public void ExcelToPDF(string pdfPath) 
{
    // 创建一个Excel的临时文件
    string tempFilePath = Path.GetTempFileName();
    string excelTempFilePath = Path.ChangeExtension(tempFilePath, ".xlsx");

    // 创建文件流
    FileStream fileStream = new FileStream(tempFilePath, FileMode.Create);
    ExcelPackage excelPkg = new ExcelPackage(fileStream);
    // 在Excel中写入数据
    ExcelWorksheet worksheet = excelPkg.Workbook.Worksheets.Add("Sheet1");
    worksheet.Cells["A1:A10"].Value = 100;
    // 保存Excel文件 临时文件
    excelPkg.Save();
    excelPkg.Dispose();
    
    // 使用Free.Spire.Xls打开临时 Excel 文件
    Workbook workbook = new Workbook();
    workbook.LoadFromStream(fileStream);
    Worksheet sheet = workbook.Worksheets[0];
    // Excel 转 PDF (只能转前3页)
    sheet.SaveToPdf(pdfPath);
    fileStream.Close();
}

上面这个只是一个 Excel 转 PDF 的方案。也可以不使用 EPPLUS 库,直接只有 Free.Spire.xls 库来生成 Excel。