Конвертиране на файл на Excel в PDF с помощта на Excel от .NET

Страницата се актуализира :
Дата на създаване на страница :

Работна среда

Визуално студио
  • Визуално студио 2022
.НЕТЕН
  • .НЕТ 6.0
Уиндоус
  • Прозорци 11
Превъзхождам
  • Майкрософт 365

Предпоставки

Уиндоус
  • Една от версиите
Превъзхождам
  • Една от версиите

Стъпки за конвертиране от файл на Excel в PDF файл

Тази програма използва, за да манипулира Excel от .NET програма Microsoft.Office.Interop.Excel чрез COM и да изведе отворения файл на 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, е същият, както когато ръчно извеждате 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 файлът е изведен.