[英]How to Save data on application close or entered background in WinUI3 app
[英]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.