簡體   English   中英

APP WinUI3如何導出數據到Excel文件?

[英]How can I export data to an Excel file with APP WinUI3?

我不知道如何使用 Winui3 APP 技術將數據從 ListView 導出到 Excel。 對於 WPF,我使用了“Excel = Microsoft.Office.Interop.Excel”,但在 WinUI3 技術中它不起作用

Excel._Workbook MyExBook;
Excel.Workbooks MyExBooks;
Excel._Worksheet MyExSheet;
Excel.Sheets MyExSheets;
Excel.Range MyExRange;
ButExcel.IsEnabled = false;

try
{
    MyExApp = new Excel.Application();
    MyExBooks = MyExApp.Workbooks;
    MyExBook = MyExBooks.Add();
    MyExSheets = MyExBook.Worksheets;
    MyExSheet = (Excel.Worksheet)MyExSheets[1];
}
catch
{
    ButExcel.IsEnabled = true;
    return;
}

沒有理由使用 Excel 本身來生成xlsx文件。 這些文件是 ZIP 個包,其中包含定義明確的 XML 個文件。 有幾個庫可以輕松生成真實的 Excel 文件,例如 Epplus、ClosedXML、NPOI 等等。

這些庫提供了幾種方便的方法,可以直接從 collections、DataTables 或 DataReaders 加載數據。 例如,使用EPPlus ,您可以從具有以下內容的產品列表創建一個 Excel 文件:

var producs=new List<Product>();
//Load the list somehow

using (var p = new ExcelPackage())
{
    var sheet = pck.Workbook.Worksheets.Add("sheet");
    var range = sheet.Cells["C1"].LoadFromCollection(products);
   
    p.SaveAs(new FileInfo(@"c:\workbooks\myworkbook.xlsx"));
}

您也可以使用預定義的 styles 之一加載帶有標題的數據作為表格:

var tableRange = sheet.Cells["C1"].LoadFromCollection(products, true, TableStyles.Dark1);
// to get access to the created table:
var table = sheet.Tables.GetFromRange(tableRange);

ClosedXML允許編寫類似的代碼:

    var wb = new XLWorkbook();
    var ws = wb.Worksheets.Add("Inserting Data");
    var rangeWithPeople = ws.Cell(7, 6).InsertData(people.AsEnumerable());

    ...
    wb.SaveAs("InsertingData.xlsx");

要創建表格,您需要使用InsertTable而不是InsertData

    var table= ws.Cell(7, 6).InsertTable(people.AsEnumerable(),"MyTable");

這兩個庫還可以處理 DataTable 結果

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM