Преобразование файла Excel в PDF с помощью Excel из .NET

Страница обновлена :
Дата создания страницы :

Условия эксплуатации

Визуальная студия
  • Visual Studio 2022
.СЕТЬ
  • .NET 6.0
Виндоус
  • Windows 11
Превосходить
  • Microsoft 365

Необходимые условия

Виндоус
  • Одна из версий
Превосходить
  • Одна из версий

Шаги по преобразованию файла Excel в файл PDF

Эта программа используется для управления Excel из программы Microsoft.Office.Interop.Excel .NET через COM и вывода открытого файла Excel в формате PDF. Поэтому для запуска Excel должен быть установлен в Windows. COM — это механизм Windows, поэтому он не работает на Mac.

Когда вы создаете проект в Visual Studio, это может быть все, что выполняется на рабочем столе Windows. В данном случае мы создаем его как консольное приложение.

После создания проекта просмотрите библиотеку для использования Excel. Представленный здесь способ построен таким образом, что зависит от версии Excel, которая установлена для удобства просмотра программы. Если вы хотите запустить его независимо от версии Excel, измените его в соответствии с методом, приведенным ниже. Именно так мы строим программы, которые распространяем.

Щелкните правой кнопкой мыши Dependencies (Зависимости) и выберите Add COM Reference (Добавить ссылку COM).

Если в среде разработки установлен Excel, введите «» в поле поиска в Excel правом верхнем углу, поэтому проверьте Microsoft Excel XX.0 Object Library его и нажмите кнопку «ОК». Отображаемая версия зависит от установленной версии Excel.

У вас есть файл Excel, готовый к импорту. Способ вывода в PDF такой же, как и при ручном выводе в PDF в Excel, поэтому, пожалуйста, проверьте его, прежде чем включать в приложение.

Введите следующий код в том месте, где вы хотите его обработать.

// 実行プログラムの場所にある 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-файл.