Convertiți fișierul Excel în PDF utilizând Excel din .NET

Pagina actualizată :
Data creării paginii :

Mediu de operare

Visual Studio
  • Visual Studio 2022
.NET
  • .NET 6.0
Windows
  • Ferestre 11
Excela
  • Microsoft 365

Cerințe preliminare

Windows
  • Una dintre versiuni
Excela
  • Una dintre versiuni

Pași pentru conversia dintr-un fișier Excel într-un fișier PDF

Acest program folosește pentru a manipula Excel dintr-un program Microsoft.Office.Interop.Excel .NET prin COM și pentru a afișa fișierul Excel deschis ca PDF. De aceea, Excel trebuie să fie instalat pe Windows pentru a rula. COM este un mecanism Windows, deci nu funcționează pe Mac-uri.

Atunci când creați un proiect în Visual Studio, acesta poate fi orice se execută pe desktopul Windows. În acest caz, o creăm ca aplicație pentru consolă.

După ce creați proiectul, răsfoiți biblioteca pentru a utiliza Excel. Metoda prezentată aici este construită într-un mod care depinde de versiunea Excel instalată pentru ușurința vizualizării programului. Dacă doriți să îl rulați independent de versiunea Excel, modificați-l conform metodei legate mai jos. Așa construim programele pe care le distribuim.

Faceți clic dreapta pe Dependențe și selectați Adăugare referință COM.

Dacă Excel este instalat în mediul de dezvoltare, tastați "" în câmpul de căutare din colțul din Excel dreapta sus, deci verificați-l Microsoft Excel XX.0 Object Library și faceți clic pe butonul "OK". Versiunea care se afișează depinde de versiunea de Excel care este instalat.

Aveți un fișier Excel gata de import. Modul în care este emis în PDF este același ca atunci când ieșiți manual în PDF în Excel, așa că vă rugăm să îl verificați înainte de a-l încorpora ca aplicație.

Introduceți următorul cod acolo unde doriți să fie procesat.

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

Ideea este că Workbook.ExportAsFixedFormat metoda are deja o funcție de export, deci trebuie doar să o apelați.

Rulați-l pentru a vedea dacă fișierul PDF este afișat.