Μετατροπή αρχείου Excel σε PDF χρησιμοποιώντας το Excel από .NET

Σελίδα ενημέρωση :
Ημερομηνία δημιουργίας σελίδας :

Περιβάλλον λειτουργίας

Οπτικό στούντιο
  • Visual Studio 2022
.ΔΊΧΤΥ
  • .NET 6.0
παράθυρα
  • Παράθυρα 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) και επιλέξτε Προσθήκη αναφοράς 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.