使用 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 檔。