Konverter Excel-fil til PDF ved hjælp af Excel fra .NET
Driftsmiljø
- Visual Studio
-
- Visual Studio 2022
- .NET
-
- .NET 6.0
- Windows
-
- Windows 11
- Excel
-
- Microsoft 365
Forudsætninger
- Windows
-
- En af versionerne
- Excel
-
- En af versionerne
Trin til konvertering fra en Excel-fil til en PDF-fil
Dette program bruger til at manipulere Excel fra et .NET-program via COM og output den åbnede Excel-fil Microsoft.Office.Interop.Excel
som en PDF.
Derfor skal Excel være installeret på Windows for at kunne køre. COM er en Windows-mekanisme, så den fungerer ikke på Mac'er.
Når du opretter et projekt i Visual Studio, kan det være alt, hvad der kører på Windows-skrivebordet. I dette tilfælde opretter vi den som en konsolapp.
Når du har oprettet projektet, skal du søge i biblioteket efter Excel. Metoden, der præsenteres her, er bygget på en måde, der afhænger af den version af Excel, der er installeret for at gøre det lettere at se programmet. Hvis du vil køre det uafhængigt af versionen af Excel, skal du ændre det i henhold til nedenstående metode. Det er sådan, vi bygger de programmer, vi distribuerer.
Højreklik på Afhængigheder, og vælg Tilføj COM-reference.
Hvis Excel er installeret i udviklingsmiljøet, skal du skrive "" i søgefeltet i Excel
øverste højre hjørne, så tjek Microsoft Excel XX.0 Object Library
det og klik på knappen "OK".
Den version, der vises, afhænger af den version af Excel, der er installeret.
Du har en Excel-fil klar til import. Den måde, det udskrives til PDF på, er den samme, som når du manuelt udskriver til PDF i Excel, så tjek det, før du inkorporerer det som et program.
Indtast følgende kode, hvor den skal behandles.
// 実行プログラムの場所にある 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);
}
Pointen er, at Workbook.ExportAsFixedFormat
metoden allerede har en eksportfunktion, så du skal bare kalde den.
Kør det for at se, om PDF-filen udskrives.