Converteix fitxers Excel a PDF mitjançant Excel des de .NET

Pàgina actualitzada :
Data de creació de la pàgina :

Entorn operatiu

Estudi visual
  • Estudi visual 2022
.XARXA
  • .NET 6.0
Windows
  • Finestres 11
Excel·lir
  • Microsoft 365

Prerequisits

Windows
  • Una de les versions
Excel·lir
  • Una de les versions

Passos per convertir d'un fitxer Excel a un fitxer PDF

Aquest programa s'utilitza per manipular Excel des d'un programa Microsoft.Office.Interop.Excel .NET a través de COM i emetre el fitxer Excel obert com a PDF. Per tant, Excel s'ha d'instal·lar a Windows per poder executar-se. COM és un mecanisme de Windows, de manera que no funciona en Mac.

Quan creeu un projecte al Visual Studio, pot ser qualsevol cosa que s'executi a l'escriptori del Windows. En aquest cas, l'estem creant com una aplicació de consola.

Després de crear el projecte, navegueu per la biblioteca per utilitzar l'Excel. El mètode que es presenta aquí està construït d'una manera que depèn de la versió d'Excel que s'instal·la per facilitar la visualització del programa. Si voleu executar-lo independentment de la versió d'Excel, modifiqueu-lo segons el mètode enllaçat a continuació. Així és com construïm els programes que distribuïm.

Feu clic amb el botó dret a Dependències i seleccioneu Afegeix una referència COM.

Si Excel està instal·lat a l'entorn de desenvolupament, escriviu "" al camp de cerca de l'extrem superior dret, així que marqueu-lo Microsoft Excel XX.0 Object Library i feu clic al botó "D'acordExcel". La versió que es mostra depèn de la versió d'Excel que estigui instal·lada.

Teniu un fitxer Excel llest per importar. La forma en què s'emet a PDF és la mateixa que quan sortiu manualment a PDF a Excel, així que comproveu-lo abans d'incorporar-lo com a aplicació.

Introdueix el següent codi on vols que es tramiti.

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

La qüestió és que el mètode ja té una funció d'exportació, de manera que Workbook.ExportAsFixedFormat només cal trucar-lo.

Executeu-lo per veure si el fitxer PDF està sortit.