Convertir archivo de Excel a PDF usando Excel desde .NET

Actualización de la página :
Fecha de creación de la página :

Entorno operativo

Visual Studio
  • Visual Studio 2022
.RED
  • .NET 6.0
Windows
  • Windows 11
Sobresalir
  • Microsoft 365

Prerrequisitos

Windows
  • Una de las versiones
Sobresalir
  • Una de las versiones

Pasos para convertir de un archivo de Excel a un archivo PDF

Este programa utiliza para manipular Excel desde un programa Microsoft.Office.Interop.Excel .NET a través de COM y generar el archivo de Excel abierto como PDF. Por lo tanto, Excel debe estar instalado en Windows para poder ejecutarse. COM es un mecanismo de Windows, por lo que no funciona en Mac.

Al crear un proyecto en Visual Studio, puede ser cualquier cosa que se ejecute en el escritorio de Windows. En este caso, lo estamos creando como una aplicación de consola.

Después de crear el proyecto, examine la biblioteca para usar Excel. El método presentado aquí está construido de una manera que depende de la versión de Excel que esté instalada para facilitar la visualización del programa. Si desea ejecutarlo independientemente de la versión de Excel, modifíquelo de acuerdo con el método vinculado a continuación. Así es como construimos los programas que distribuimos.

Haga clic con el botón secundario en Dependencias y seleccione Agregar referencia COM.

Si Excel está instalado en el entorno de desarrollo, escriba "" en el campo de búsqueda en la Excel esquina superior derecha, así que márquelo Microsoft Excel XX.0 Object Library y haga clic en el botón "Aceptar". La versión que se muestra depende de la versión de Excel que esté instalada.

Tiene un archivo de Excel listo para importar. La forma en que se envía a PDF es la misma que cuando se imprime manualmente a PDF en Excel, así que compruébelo antes de incorporarlo como una aplicación.

Introduzca el siguiente código donde desea que se procese.

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

El punto es que el método ya tiene una función de exportación, por lo que Workbook.ExportAsFixedFormat solo necesita llamarlo.

Ejecútelo para ver si se genera el archivo PDF.