NET에서 Excel을 사용하여 Excel 파일을 PDF로 변환

페이지 업데이트 :
페이지 생성 날짜 :

운영 환경

비주얼 스튜디오
  • 비주얼 스튜디오 2022
.그물
  • .NET 6.0
윈도우
  • 윈도우 11
뛰어나다
  • 마이크로소프트 365

필수 구성 요소

윈도우
  • 버전 중 하나
뛰어나다
  • 버전 중 하나

Excel 파일에서 PDF 파일로 변환하는 단계

이 프로그램은 COM을 통해 .NET 프로그램에서 Microsoft.Office.Interop.Excel Excel을 조작하고 열린 Excel 파일을 PDF로 출력하는 데 사용합니다. 따라서 Excel을 실행하려면 Windows에 설치해야 합니다. COM은 Windows 메커니즘이므로 Mac에서는 작동하지 않습니다.

Visual Studio에서 프로젝트를 만들 때 Windows 데스크톱에서 실행되는 모든 것이 될 수 있습니다. 이 경우 콘솔 앱으로 만듭니다.

프로젝트를 만든 후 Excel을 사용하기 위한 라이브러리를 찾습니다. 여기에 제시된 방법은 프로그램을 쉽게 볼 수 있도록 설치된 Excel 버전에 따라 달라지는 방식으로 작성되었습니다. Excel 버전과 독립적으로 실행하려면 아래 링크된 방법에 따라 수정하십시오. 이것이 우리가 배포하는 프로그램을 구축하는 방법입니다.

종속성을 마우스 오른쪽 단추로 클릭하고 COM 참조 추가를 선택합니다.

개발 환경에 Excel이 설치되어 있는 경우 오른쪽 상단의 Excel 검색 필드에 ""를 입력하므로 체크 Microsoft Excel XX.0 Object Library 하고 "OK" 버튼을 클릭합니다. 표시되는 버전은 설치된 Excel 버전에 따라 다릅니다.

가져올 준비가 된 Excel 파일이 있습니다. PDF로 출력하는 방법은 Excel에서 수동으로 PDF로 출력할 때와 동일하므로 응용 프로그램으로 통합하기 전에 확인하십시오.

처리할 위치에 다음 코드를 입력합니다.

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

요점은 Workbook.ExportAsFixedFormat 메서드에 이미 내보내기 함수가 있으므로 호출하기만 하면 된다는 것입니다.

PDF 파일이 출력되는지 확인하려면 실행하십시오.