Konverter Excel-fil til PDF ved hjælp af Excel fra .NET

Side opdateret :
Dato for oprettelse af side :

Driftsmiljø

Visual Studio
  • Visual Studio 2022
.NET
  • .NET 6.0
Windows
  • Windows 11
Excel
  • Microsoft 365

Forudsætninger

Windows
  • En af versionerne
Excel
  • En af versionerne

Trin til konvertering fra en Excel-fil til en PDF-fil

Dette program bruger til at manipulere Excel fra et .NET-program via COM og output den åbnede Excel-fil Microsoft.Office.Interop.Excel som en PDF. Derfor skal Excel være installeret på Windows for at kunne køre. COM er en Windows-mekanisme, så den fungerer ikke på Mac'er.

Når du opretter et projekt i Visual Studio, kan det være alt, hvad der kører på Windows-skrivebordet. I dette tilfælde opretter vi den som en konsolapp.

Når du har oprettet projektet, skal du søge i biblioteket efter Excel. Metoden, der præsenteres her, er bygget på en måde, der afhænger af den version af Excel, der er installeret for at gøre det lettere at se programmet. Hvis du vil køre det uafhængigt af versionen af Excel, skal du ændre det i henhold til nedenstående metode. Det er sådan, vi bygger de programmer, vi distribuerer.

Højreklik på Afhængigheder, og vælg Tilføj COM-reference.

Hvis Excel er installeret i udviklingsmiljøet, skal du skrive "" i søgefeltet i Excel øverste højre hjørne, så tjek Microsoft Excel XX.0 Object Library det og klik på knappen "OK". Den version, der vises, afhænger af den version af Excel, der er installeret.

Du har en Excel-fil klar til import. Den måde, det udskrives til PDF på, er den samme, som når du manuelt udskriver til PDF i Excel, så tjek det, før du inkorporerer det som et program.

Indtast følgende kode, hvor den skal behandles.

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

Pointen er, at Workbook.ExportAsFixedFormat metoden allerede har en eksportfunktion, så du skal bare kalde den.

Kør det for at se, om PDF-filen udskrives.