Перетворіть файл Excel на PDF за допомогою Excel із .NET

Сторінка оновлюється :
Дата створення сторінки :

Робоче середовище

Візуальна студія
  • Visual Studio 2022
.МЕРЕЖІ
  • .NET 6.0
Вікна
  • Вікна 11
Excel
  • Microsoft 365

Передумови

Вікна
  • Одна з версій
Excel
  • Одна з версій

Кроки для перетворення з файлу Excel у PDF-файл

Ця програма використовується для маніпулювання Excel із програми Microsoft.Office.Interop.Excel .NET через COM і виведення відкритого файлу Excel у форматі PDF. Тому для запуску Excel повинен бути встановлений на Windows. COM – це механізм Windows, тому він не працює на комп'ютерах Mac.

Коли ви створюєте проект у Visual Studio, це може бути будь-що, що працює на робочому столі Windows. У цьому випадку ми створюємо його як консольний додаток.

Після створення проекту перегляньте бібліотеку для використання Excel. Представлений тут метод побудований таким чином, що залежить від версії Excel, яка встановлена для зручності перегляду програми. Якщо ви хочете запустити його незалежно від версії Excel, змініть його відповідно до методу, посилання на який наведено нижче. Так ми будуємо програми, які розповсюджуємо.

Клацніть правою кнопкою миші «Залежності» та виберіть «Додати посилання 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-файл.