Konvertera Excel-fil till PDF med Excel från .NET

Sidan uppdaterad :
Datum för skapande av sida :

Omvärld

Visuell studio
  • Visual Studio 2022
.NÄT
  • .NET 6.0
Windows
  • Windows 11 (på engelska)
Överträffa
  • Microsoft 365 (på engelska)

Förutsättningar

Windows
  • En av versionerna
Överträffa
  • En av versionerna

Steg för att konvertera från en Excel-fil till en PDF-fil

Detta program används för att manipulera Excel från ett . Microsoft.Office.Interop.Excel Därför måste Excel vara installerat på Windows för att kunna köras. COM är en Windows-mekanism, så den fungerar inte på Mac-datorer.

När du skapar ett projekt i Visual Studio kan det vara vad som helst som körs på Windows-skrivbordet. I det här fallet skapar vi den som en konsolapp.

När du har skapat projektet bläddrar du i biblioteket efter att ha använt Excel. Metoden som presenteras här är uppbyggd på ett sätt som beror på vilken version av Excel som är installerad för att underlätta visningen av programmet. Om du vill köra den oberoende av versionen av Excel, ändra den enligt metoden som länkas nedan. Det är så vi bygger de program vi distribuerar.

Högerklicka på Beroenden och välj Lägg till COM-referens.

Om Excel är installerat i utvecklingsmiljön skriver du "" i sökfältet i det övre högra hörnet, så kontrollera Microsoft Excel XX.0 Object Library det Excel och klicka på knappen "OK". Vilken version som visas beror på vilken version av Excel som är installerad.

Du har en Excel-fil redo att importeras. Sättet det matas ut till PDF är detsamma som när du manuellt matar ut till PDF i Excel, så kontrollera det innan du införlivar det som ett program.

Ange följande kod där du vill att den ska bearbetas.

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

Poängen är att Workbook.ExportAsFixedFormat metoden redan har en exportfunktion, så du behöver bara anropa den.

Kör den för att se om PDF-filen matas ut.