Chuyển đổi tệp Excel sang PDF bằng Excel từ .NET

Trang Cập Nhật :
Ngày tạo trang :

Môi trường hoạt động

Visual Studio
  • Visual Studio 2022
.MẠNG
  • .NET 6,0
Windows
  • cửa sổ 11
Excel
  • Microsoft 365

Điều kiện tiên quyết

Windows
  • Một trong những phiên bản
Excel
  • Một trong những phiên bản

Các bước chuyển đổi từ tệp Excel sang tệp PDF

Chương trình này sử dụng để thao tác Excel từ chương trình Microsoft.Office.Interop.Excel .NET thông qua COM và xuất tệp Excel đã mở dưới dạng PDF. Do đó, Excel phải được cài đặt trên Windows để chạy. COM là một cơ chế Windows, vì vậy nó không hoạt động trên máy Mac.

Khi bạn tạo một dự án trong Visual Studio, nó có thể là bất cứ thứ gì chạy trên màn hình Windows. Trong trường hợp này, chúng tôi đang tạo nó dưới dạng ứng dụng console.

Sau khi bạn tạo dự án, hãy duyệt thư viện để sử dụng Excel. Phương pháp được trình bày ở đây được xây dựng theo cách phụ thuộc vào phiên bản Excel được cài đặt để dễ xem chương trình. Nếu bạn muốn chạy nó độc lập với phiên bản Excel, hãy sửa đổi nó theo phương pháp được liên kết bên dưới. Đó là cách chúng tôi xây dựng các chương trình mà chúng tôi phân phối.

Nhấp chuột phải vào Dependencies và chọn Add COM Reference.

Nếu Excel được cài đặt trong môi trường phát triển, hãy nhập "" vào trường tìm kiếm ở Excel góc trên bên phải, vì vậy hãy kiểm tra Microsoft Excel XX.0 Object Library nó và nhấp vào nút "OK". Phiên bản được hiển thị phụ thuộc vào phiên bản Excel được cài đặt.

Bạn có một tệp Excel sẵn sàng để nhập. Cách nó được xuất ra PDF giống như khi bạn xuất thủ công sang PDF trong Excel, vì vậy vui lòng kiểm tra nó trước khi bạn kết hợp nó như một ứng dụng.

Nhập mã sau vào nơi bạn muốn nó được xử lý.

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

Vấn đề là Workbook.ExportAsFixedFormat phương thức đã có chức năng xuất, vì vậy bạn chỉ cần gọi nó.

Chạy nó để xem tệp PDF có được xuất ra hay không.