Konvertuokite "Excel" failą į PDF naudodami "Excel" iš .NET

Puslapis atnaujintas :
Puslapio sukūrimo data :

Darbo aplinka

Vizualinė studija
  • "Visual Studio 2022"
.GRYNOJI
  • .NET 6.0
Windows
  • Langai 11
Excel
  • "Microsoft 365"

Būtinosios sąlygos

Windows
  • Viena iš versijų
Excel
  • Viena iš versijų

Veiksmai, kaip konvertuoti iš "Excel" failo į PDF failą

Ši programa naudoja manipuliuoti "Excel" iš .NET programos Microsoft.Office.Interop.Excel per COM ir išvesti atidarytą "Excel" failą kaip PDF. Todėl, norint paleisti, "Excel" turi būti įdiegta "Windows". COM yra "Windows" mechanizmas, todėl jis neveikia "Mac" kompiuteriuose.

Kai kuriate projektą "Visual Studio", tai gali būti bet kas, kas veikia "Windows" darbalaukyje. Šiuo atveju ją kuriame kaip konsolės programą.

Sukūrę projektą, naršykite bibliotekoje, kad galėtumėte naudoti "Excel". Čia pateiktas metodas yra sukurtas taip, kad priklauso nuo įdiegtos "Excel" versijos, kad būtų lengviau peržiūrėti programą. Jei norite jį paleisti nepriklausomai nuo "Excel" versijos, modifikuokite jį pagal toliau nurodytą metodą. Taip mes kuriame programas, kurias platiname.

Dešiniuoju pelės mygtuku spustelėkite Priklausomybės ir pasirinkite Pridėti COM nuorodą.

Jei "Excel" yra įdiegta kūrimo aplinkoje, viršutiniame dešiniajame kampe esančiame Excel paieškos laukelyje įveskite "", todėl patikrinkite Microsoft Excel XX.0 Object Library jį ir spustelėkite mygtuką "Gerai". Rodoma versija priklauso nuo įdiegtos "Excel" versijos.

Turite paruoštą importuoti "Excel" failą. Jo išvesties į PDF būdas yra toks pat, kaip ir rankiniu būdu išvedant į PDF programoje "Excel", todėl patikrinkite jį prieš įtraukdami jį kaip programą.

Įveskite šį kodą, kur norite, kad jis būtų apdorotas.

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

Esmė ta, kad Workbook.ExportAsFixedFormat metodas jau turi eksporto funkciją, todėl jums tereikia jį paskambinti.

Paleiskite jį, kad pamatytumėte, ar PDF failas yra išvestis.