Pretvorite datoteko Excel v PDF z Excelom iz ogrodja .NET

Stran posodobljena :
Datum ustvarjanja strani :

Delovno okolje

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

Predpogoji

Windows
  • Ena od različic
Excel
  • Ena od različic

Koraki za pretvorbo iz Excelove datoteke v datoteko PDF

Ta program uporablja za upravljanje Excela iz programa Microsoft.Office.Interop.Excel .NET prek COM in izhod odprte datoteke Excel kot PDF. Zato mora biti Excel nameščen v sistemu Windows, če ga želite zagnati. COM je mehanizem Windows, zato ne deluje v računalnikih Mac.

Ko ustvarite projekt v programu Visual Studio, je to lahko vse, kar se izvaja na namizju sistema Windows. V tem primeru jo ustvarjamo kot konzolno aplikacijo.

Ko ustvarite projekt, prebrskajte knjižnico in poiščite Excel v knjižnici. Tukaj predstavljena metoda je zgrajena tako, da je odvisna od različice Excela, ki je nameščena za lažji ogled programa. Če ga želite zagnati neodvisno od različice Excela, ga spremenite v skladu s spodnjo povezavo. Tako gradimo programe, ki jih distribuiramo.

Z desno tipko miške kliknite Odvisnosti in izberite Dodaj sklic COM.

Če je Excel nameščen v razvojnem okolju, v iskalno polje v Excel zgornjem desnem kotu vnesite »«, zato ga preverite Microsoft Excel XX.0 Object Library in kliknite gumb »V redu«. Prikazana različica je odvisna od nameščene različice Excela.

Excelovo datoteko imate pripravljeno za uvoz. Način izhoda v PDF je enak kot pri ročnem izhodu v PDF v Excelu, zato ga preverite, preden ga vključite kot aplikacijo.

Vnesite naslednjo kodo, kjer jo želite obdelati.

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

Bistvo je, da metoda že ima funkcijo izvoza, Workbook.ExportAsFixedFormat zato jo morate samo poklicati.

Zaženite ga, da preverite, ali je datoteka PDF izhodna.