Converteer Excel-bestand naar PDF met Excel van .NET

Pagina bijgewerkt :
Aanmaakdatum van pagina :

Werkomgeving

Visual Studio
  • Visual Studio 2022
.NET
  • .NET 6.0
Ramen
  • Vensters 11
Uitblinken
  • Microsoft 365

Voorwaarden

Ramen
  • Een van de versies
Uitblinken
  • Een van de versies

Stappen om te converteren van een Excel-bestand naar een PDF-bestand

Dit programma gebruikt om Excel van een .NET-programma Microsoft.Office.Interop.Excel via COM te manipuleren en het geopende Excel-bestand als PDF uit te voeren. Daarom moet Excel op Windows zijn geïnstalleerd om te kunnen werken. COM is een Windows-mechanisme, dus het werkt niet op Macs.

Wanneer u een project maakt in Visual Studio, kan dit alles zijn dat op het Windows-bureaublad wordt uitgevoerd. In dit geval maken we het als een console-app.

Nadat u het project hebt gemaakt, bladert u door de bibliotheek voor het gebruik van Excel. De hier gepresenteerde methode is gebouwd op een manier die afhankelijk is van de versie van Excel die is geïnstalleerd voor het gemak van het bekijken van het programma. Als u het onafhankelijk van de versie van Excel wilt uitvoeren, wijzigt u het volgens de onderstaande methode. Dat is hoe we de programma's bouwen die we distribueren.

Klik met de rechtermuisknop op Afhankelijkheden en selecteer COM-referentie toevoegen.

Als Excel is geïnstalleerd in de ontwikkelomgeving, typ dan "" in het zoekveld in de rechterbovenhoek, dus vink het aan Microsoft Excel XX.0 Object Library en klik op de Excel knop "OK". De versie die wordt weergegeven, is afhankelijk van de versie van Excel die is geïnstalleerd.

Je hebt een Excel-bestand klaar om te importeren. De manier waarop het naar PDF wordt uitgevoerd, is hetzelfde als wanneer u handmatig naar PDF in Excel uitvoert, dus controleer het voordat u het als een toepassing opneemt.

Voer de volgende code in op de plaats waar u deze wilt laten verwerken.

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

Het punt is dat Workbook.ExportAsFixedFormat de methode al een exportfunctie heeft, dus je hoeft het alleen maar aan te roepen.

Voer het uit om te zien of het PDF-bestand wordt uitgevoerd.