Converter arquivo do Excel em PDF usando o Excel do .NET

Página atualizada :
Data de criação de página :

Ambiente operacional

Estúdio Visual
  • Visual Studio 2022
.REDE
  • .NET 6.0
Windows
  • Janelas 11
Distinguir-se
  • Microsoft 365

Pré-requisitos

Windows
  • Uma das versões
Distinguir-se
  • Uma das versões

Etapas para converter de um arquivo do Excel para um arquivo PDF

Este programa usa para manipular o Excel a partir de um programa Microsoft.Office.Interop.Excel .NET via COM e saída do arquivo Excel aberto como um PDF. Portanto, o Excel deve ser instalado no Windows para ser executado. COM é um mecanismo do Windows, por isso não funciona em Macs.

Quando você cria um projeto no Visual Studio, ele pode ser qualquer coisa que seja executado na área de trabalho do Windows. Nesse caso, estamos criando-o como um aplicativo de console.

Depois de criar o projeto, procure a biblioteca para usar o Excel. O método apresentado aqui é construído de uma forma que depende da versão do Excel que está instalada para a facilidade de visualização do programa. Se você quiser executá-lo independentemente da versão do Excel, modifique-o de acordo com o método vinculado abaixo. É assim que construímos os programas que distribuímos.

Clique com o botão direito do mouse em Dependências e selecione Adicionar Referência COM.

Se o Excel estiver instalado no ambiente de desenvolvimento, digite "" no campo de pesquisa no canto superior direito, então verifique-o Microsoft Excel XX.0 Object Library e clique no Excel botão "OK". A versão exibida depende da versão do Excel instalada.

Você tem um arquivo do Excel pronto para importar. A maneira como ele é enviado para PDF é o mesmo que quando você envia manualmente para PDF no Excel, portanto, verifique-o antes de incorporá-lo como um aplicativo.

Digite o código a seguir onde você deseja que ele seja processado.

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

A questão é que Workbook.ExportAsFixedFormat o método já tem uma função de exportação, então você só precisa chamá-lo.

Execute-o para ver se o arquivo PDF é de saída.