Konvertieren Sie eine Excel-Datei in eine PDF-Datei mit Excel aus .NET

Diese Seite wurde aktualisiert :
Erstellungsdatum der Seite :

Betriebsumgebung

Visual Studio
  • Visual Studio 2022
.NETTO
  • .NET 6.0
Fenster
  • Windows 11
Ausstechen
  • Microsoft 365

Voraussetzungen

Fenster
  • Eine der Versionen
Ausstechen
  • Eine der Versionen

Schritte zum Konvertieren von einer Excel-Datei in eine PDF-Datei

Dieses Programm wird verwendet, um Excel aus einem .NET-Programm Microsoft.Office.Interop.Excel über COM zu manipulieren und die geöffnete Excel-Datei als PDF auszugeben. Daher muss Excel unter Windows installiert sein, um ausgeführt werden zu können. COM ist ein Windows-Mechanismus und funktioniert daher nicht auf Macs.

Wenn Sie ein Projekt in Visual Studio erstellen, kann es sich dabei um alles handeln, was auf dem Windows-Desktop ausgeführt wird. In diesem Fall erstellen wir sie als Konsolen-App.

Nachdem Sie das Projekt erstellt haben, durchsuchen Sie die Bibliothek für die Verwendung von Excel. Die hier vorgestellte Methode ist so aufgebaut, dass sie von der installierten Excel-Version abhängt, um die Anzeige des Programms zu erleichtern. Wenn Sie es unabhängig von der Excel-Version ausführen möchten, ändern Sie es gemäß der unten verlinkten Methode. So bauen wir die Programme auf, die wir vertreiben.

Klicken Sie mit der rechten Maustaste auf Abhängigkeiten, und wählen Sie COM-Verweis hinzufügen aus.

Wenn Excel in der Entwicklungsumgebung installiert ist, geben Sie "" in das Suchfeld in der Excel oberen rechten Ecke ein, aktivieren Sie es und klicken Sie Microsoft Excel XX.0 Object Library auf die Schaltfläche "OK". Welche Version angezeigt wird, hängt von der installierten Version von Excel ab.

Sie haben eine Excel-Datei, die Sie importieren können. Die Art und Weise, wie es als PDF ausgegeben wird, ist die gleiche wie bei der manuellen Ausgabe als PDF in Excel, also überprüfen Sie es bitte, bevor Sie es als Anwendung integrieren.

Geben Sie den folgenden Code an der Stelle ein, an der er verarbeitet werden soll.

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

Der Punkt ist, dass Workbook.ExportAsFixedFormat die Methode bereits über eine Exportfunktion verfügt, sodass Sie sie nur aufrufen müssen.

Führen Sie es aus, um zu sehen, ob die PDF-Datei ausgegeben wird.