NET'ten Excel Kullanarak Excel Dosyasını PDF'ye Dönüştürün

Sayfa güncel :
Sayfa oluşturma tarihi :

Çalışma ortamı

Visual Studio
  • Visual Studio 2022
.NET
  • .NET 6.0
Windows
  • pencereler 11
Excel
  • Microsoft 365 (İngilizce)

Önkoşullar

Windows
  • Sürümlerden biri
Excel
  • Sürümlerden biri

Excel dosyasından PDF dosyasına dönüştürme adımları

Bu program, Excel'i bir .NET programından Microsoft.Office.Interop.Excel COM aracılığıyla işlemek ve açılan Excel dosyasını PDF olarak çıkarmak için kullanır. Bu nedenle, Excel'in çalışması için Windows'ta yüklü olması gerekir. COM bir Windows mekanizmasıdır, bu nedenle Mac'lerde çalışmaz.

Visual Studio'da bir proje oluşturduğunuzda, Windows masaüstünde çalışan herhangi bir şey olabilir. Bu durumda, bunu bir konsol uygulaması olarak oluşturuyoruz.

Projeyi oluşturduktan sonra, Excel'i kullanmak için kitaplığa göz atın. Burada sunulan yöntem, programı görüntüleme kolaylığı için yüklü olan Excel sürümüne bağlı olarak oluşturulmuştur. Excel sürümünden bağımsız olarak çalıştırmak istiyorsanız, aşağıda bağlantısı verilen yönteme göre değiştirin. Dağıttığımız programları bu şekilde oluşturuyoruz.

Bağımlılıklar'a sağ tıklayın ve COM Başvurusu Ekle'yi seçin.

Excel geliştirme ortamında yüklüyse, sağ üst köşedeki arama alanına Excel "" yazın, bu yüzden kontrol edin Microsoft Excel XX.0 Object Library ve "Tamam" düğmesini tıklayın. Görüntülenen sürüm, yüklü olan Excel sürümüne bağlıdır.

İçe aktarmaya hazır bir Excel dosyanız var. PDF'ye çıktı alma şekli, Excel'de PDF'ye manuel olarak çıktı aldığınız zamankiyle aynıdır, bu nedenle lütfen bir uygulama olarak dahil etmeden önce kontrol edin.

İşlenmesini istediğiniz yere aşağıdaki kodu girin.

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

Mesele şu ki Workbook.ExportAsFixedFormat , yöntemin zaten bir dışa aktarma işlevi var, bu yüzden onu çağırmanız yeterli.

PDF dosyasının çıktı olup olmadığını görmek için çalıştırın.