Tukar Fail Excel ke PDF Menggunakan Excel daripada .NET

Laman dikemaskini :
Tarikh penciptaan halaman :

Persekitaran operasi

Visual Studio
  • Visual Studio 2022
.BERSIH
  • .NET 6.0
Windows
  • Windows 11
Excel
  • Microsoft 365

Prasyarat

Windows
  • Salah satu versi
Excel
  • Salah satu versi

Langkah-langkah untuk menukar daripada fail Excel kepada fail PDF

Program ini digunakan untuk memanipulasi Excel dari program Microsoft.Office.Interop.Excel .NET melalui COM dan mengeluarkan fail Excel yang dibuka sebagai PDF. Oleh itu, Excel mesti dipasang pada Windows untuk dijalankan. COM ialah mekanisme Windows, jadi ia tidak berfungsi pada Mac.

Apabila anda mencipta projek dalam Visual Studio, ia boleh menjadi apa-apa sahaja yang berjalan pada desktop Windows. Dalam kes ini, kami menciptanya sebagai aplikasi konsol.

Selepas anda mencipta projek, semak lalu pustaka untuk menggunakan Excel. Kaedah yang dibentangkan di sini dibina dengan cara yang bergantung kepada versi Excel yang dipasang untuk memudahkan melihat program. Jika anda ingin menjalankannya secara bebas daripada versi Excel, ubah suainya mengikut kaedah yang dipautkan di bawah. Itulah cara kami membina program yang kami edarkan.

Klik kanan Kebergantungan dan pilih Tambah Rujukan COM.

Jika Excel dipasang di persekitaran pembangunan, taip "" dalam medan carian di Excel sudut kanan atas, jadi semak Microsoft Excel XX.0 Object Library dan klik butang "OK". Versi yang dipaparkan bergantung pada versi Excel yang dipasang.

Anda mempunyai fail Excel sedia untuk diimport. Cara output ke PDF adalah sama seperti apabila anda mengeluarkan PDF secara manual dalam Excel, jadi sila semak sebelum anda memasukkannya sebagai aplikasi.

Masukkan kod berikut yang anda mahu ia diproses.

// 実行プログラムの場所にある 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);
}

Maksudnya ialah Workbook.ExportAsFixedFormat kaedah itu sudah mempunyai fungsi eksport, jadi anda hanya perlu memanggilnya.

Jalankannya untuk melihat sama ada fail PDF adalah output.