Converti file Excel in PDF utilizzando Excel da .NET

Pagina aggiornata :
Data di creazione della pagina :

Ambiente operativo

Visual Studio
  • Visual Studio 2022
.RETE
  • .NET 6.0
Finestre
  • finestre 11
Eccellere
  • Microsoft 365

Prerequisiti

Finestre
  • Una delle versioni
Eccellere
  • Una delle versioni

Passaggi per convertire da un file Excel a un file PDF

Questo programma utilizza per manipolare Excel da un programma Microsoft.Office.Interop.Excel .NET tramite COM e generare il file Excel aperto come PDF. Pertanto, Excel deve essere installato in Windows per poter essere eseguito. COM è un meccanismo di Windows, quindi non funziona su Mac.

Quando si crea un progetto in Visual Studio, può trattarsi di qualsiasi elemento in esecuzione sul desktop di Windows. In questo caso, lo stiamo creando come app console.

Dopo aver creato il progetto, sfogliare la libreria per l'uso di Excel. Il metodo qui presentato è compilato in modo da dipendere dalla versione di Excel installata per facilitare la visualizzazione del programma. Se si desidera eseguirlo indipendentemente dalla versione di Excel, modificarlo secondo il metodo collegato di seguito. Questo è il modo in cui costruiamo i programmi che distribuiamo.

Fare clic con il pulsante destro del mouse su Dipendenze e scegliere Aggiungi riferimento COM.

Se Excel è installato nell'ambiente di sviluppo, digita "" nel campo di ricerca nell'angolo Excel in alto a destra, quindi selezionalo Microsoft Excel XX.0 Object Library e fai clic sul pulsante "OK". La versione visualizzata dipende dalla versione di Excel installata.

Hai un file Excel pronto per l'importazione. Il modo in cui viene emesso in PDF è lo stesso di quando si esegue manualmente l'output in PDF in Excel, quindi controllalo prima di incorporarlo come applicazione.

Immettere il codice seguente nel punto in cui si desidera elaborarlo.

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

Il punto è che Workbook.ExportAsFixedFormat il metodo ha già una funzione di esportazione, quindi devi solo chiamarlo.

Eseguilo per vedere se il file PDF viene emesso.