Convertir un fichier Excel en PDF à l’aide d’Excel à partir de .NET

Page mise à jour :
Date de création de la page :

Environnement d’exploitation

Visual Studio
  • Visual Studio 2022
.FILET
  • .NET 6.0
Windows
  • Fenêtres 11
Exceller
  • Microsoft 365 (en anglais)

Conditions préalables

Windows
  • L’une des versions
Exceller
  • L’une des versions

Étapes pour convertir d’un fichier Excel en fichier PDF

Ce programme permet de manipuler Excel à partir d’un programme Microsoft.Office.Interop.Excel .NET via COM et de sortir le fichier Excel ouvert au format PDF. Par conséquent, Excel doit être installé sur Windows pour fonctionner. COM est un mécanisme Windows, il ne fonctionne donc pas sur Mac.

Lorsque vous créez un projet dans Visual Studio, il peut s’agir de tout ce qui s’exécute sur le bureau Windows. Dans ce cas, nous le créons en tant qu’application console.

Une fois que vous avez créé le projet, parcourez la bibliothèque pour utiliser Excel. La méthode présentée ici est construite d’une manière qui dépend de la version d’Excel installée pour faciliter la visualisation du programme. Si vous souhaitez l’exécuter indépendamment de la version d’Excel, modifiez-le selon la méthode liée ci-dessous. C’est ainsi que nous construisons les programmes que nous distribuons.

Cliquez avec le bouton droit sur Dépendances et sélectionnez Ajouter une référence COM.

Si Excel est installé dans l’environnement de développement, tapez «  » dans le champ de recherche dans le coin supérieur droit, alors cochez-le Microsoft Excel XX.0 Object Library et cliquez sur le Excel bouton « OK ». La version affichée dépend de la version d’Excel installée.

Vous disposez d’un fichier Excel prêt à être importé. La façon dont il est exporté au format PDF est la même que lorsque vous le sortez manuellement au format PDF dans Excel, veuillez donc le vérifier avant de l’incorporer en tant qu’application.

Entrez le code suivant à l’endroit où vous souhaitez qu’il soit traité.

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

Le fait est que Workbook.ExportAsFixedFormat la méthode a déjà une fonction d’exportation, il vous suffit donc de l’appeler.

Exécutez-le pour voir si le fichier PDF est sorti.