使用 Excel 从 .NET 将 Excel 文件转换为 PDF

更新页 :
页面创建日期 :

操作环境

Visual Studio的
  • Visual Studio 2022 中
。网
  • .NET 6.0
窗户
  • 窗户11
胜过
  • Microsoft 365

先决条件

窗户
  • 其中一个版本
胜过
  • 其中一个版本

从 Excel 文件转换为 PDF 文件的步骤

该程序用于通过COM从.NET程序 Microsoft.Office.Interop.Excel 操作Excel,并将打开的Excel文件输出为PDF。 因此,必须在 Windows 上安装 Excel 才能运行。 COM 是一种 Windows 机制,因此它不适用于 Mac。

在 Visual Studio 中创建项目时,它可以是在 Windows 桌面上运行的任何内容。 在本例中,我们将其创建为控制台应用。

创建项目后,浏览库以使用 Excel。 此处介绍的方法的构建方式取决于为便于查看程序而安装的 Excel 版本。 如果要独立于 Excel 版本运行它,请根据下面链接的方法对其进行修改。 这就是我们构建我们分发的程序的方式。

右键单击“依赖项”,然后选择“添加 COM 引用”。

如果在开发环境中安装了Excel,请在右上角的搜索字段中 Excel 输入“”,请检查 Microsoft Excel XX.0 Object Library 它并单击“确定”按钮。 显示的版本取决于安装的 Excel 版本。

您已准备好导入 Excel 文件。 输出到PDF的方式与在Excel中手动输出到PDF的方式相同,因此请在将其合并为应用程序之前进行检查。

在要处理的位置输入以下代码。

// 実行プログラムの場所にある Excel ファイル
var folderPath = Path.GetDirectoryName(System.Diagnostics.Process.GetCurrentProcess().MainModule?.FileName) ?? "";
var excelFilePath = Path.Combine(folderPath, "Sample.xlsx");

Microsoft.Office.Interop.Excel.Application? excel = null;
Microsoft.Office.Interop.Excel.Workbooks? books = null;
Microsoft.Office.Interop.Excel.Workbook? book = null;
Microsoft.Office.Interop.Excel.Sheets? sheets = null;
try
{
  // Excel アプリケーション生成
  excel = new Microsoft.Office.Interop.Excel.Application()
  {
    DisplayAlerts = false, // アラート非表示
    Visible = false,       // Excel 非表示
  };

  // ワークブック一覧を参照
  books = excel.Workbooks;

  // Excel ファイルを開く
  book = books.Open(excelFilePath);

  // シート一覧参照
  sheets = book.Worksheets;

  // 全シートを選択
  sheets.Select();

  // Excel のデータを PDF ファイルとして保存
  //   Type     : xlTypePDF=PDF, xlTypeXPS=XPS
  //   Filename : 出力ファイル名
  //   Quality  : xlQualityStandard=標準品質, xlqualityminimum=最小限の品質
  book.ExportAsFixedFormat(
      Type: Microsoft.Office.Interop.Excel.XlFixedFormatType.xlTypePDF,
      Filename: Path.Combine(folderPath, "Sample.pdf"),
      Quality: Microsoft.Office.Interop.Excel.XlFixedFormatQuality.xlQualityStandard);

  Console.WriteLine("PDF 出力に成功しました。");
}
catch (Exception ex)
{
  Console.WriteLine("PDF 出力に失敗しました。");
  Console.WriteLine(ex.ToString());
}
finally
{
  // Excel を終了させる
  if (book != null) book.Close(SaveChanges: false);
  if (excel != null) excel.Quit();

  // 使用した Excel リソースは全て開放する
  if (sheets != null) System.Runtime.InteropServices.Marshal.ReleaseComObject(sheets);
  if (book != null) System.Runtime.InteropServices.Marshal.ReleaseComObject(book);
  if (books != null) System.Runtime.InteropServices.Marshal.ReleaseComObject(books);
  if (excel != null) System.Runtime.InteropServices.Marshal.ReleaseComObject(excel);
}

关键是 Workbook.ExportAsFixedFormat 该方法已经有一个导出函数,所以你只需要调用它。

运行它以查看是否输出了 PDF 文件。