在C# MVC框架中,可以使用以下幾種方法進行數據導出:
首先,安裝System.IO.Compression和System.IO.Compression.FileSystem命名空間,以便處理ZIP文件。
using System.IO.Compression;
using System.IO.Compression.FileSystem;
然后,創建一個方法將查詢結果轉換為CSV格式:
public string ConvertDataToCsv(IEnumerable<YourEntity> data)
{
var csvBuilder = new StringBuilder();
csvBuilder.AppendLine("Id,Name,Age"); // 添加表頭
foreach (var item in data)
{
csvBuilder.AppendLine($"{item.Id},{item.Name},{item.Age}");
}
return csvBuilder.ToString();
}
接下來,創建一個方法將CSV內容寫入ZIP文件:
public void ExportDataToZipFile(IEnumerable<YourEntity> data, string zipFileName)
{
var csvContent = ConvertDataToCsv(data);
var zipFileStream = new FileStream(zipFileName, FileMode.Create);
using (var zipArchive = new ZipArchive(zipFileStream, ZipArchiveMode.Create))
{
var csvEntry = zipArchive.CreateEntry("data.csv", CompressionLevel.Optimal);
using (var csvWriter = new StreamWriter(csvEntry.Open()))
{
csvWriter.Write(csvContent);
}
}
}
最后,在控制器中調用這個方法將查詢結果導出為ZIP文件:
public ActionResult ExportData()
{
var data = _context.YourEntities.ToList(); // 從數據庫獲取數據
var zipFileName = "exported_data.zip";
ExportDataToZipFile(data, zipFileName);
return File(System.IO.File.ReadAllBytes(zipFileName), "application/zip", zipFileName);
}
以EPPlus為例,首先安裝EPPlus庫:
Install-Package EPPlus
然后,使用以下代碼將查詢結果導出為Excel文件:
public ActionResult ExportData()
{
var data = _context.YourEntities.ToList(); // 從數據庫獲取數據
var excelPackage = new ExcelPackage();
var worksheet = excelPackage.Workbook.Worksheets.Add("Data");
worksheet.Cells["A1"].Value = "Id";
worksheet.Cells["B1"].Value = "Name";
worksheet.Cells["C1"].Value = "Age";
int row = 2;
foreach (var item in data)
{
worksheet.Cells[row, 1].Value = item.Id;
worksheet.Cells[row, 2].Value = item.Name;
worksheet.Cells[row, 3].Value = item.Age;
row++;
}
var memoryStream = new MemoryStream();
excelPackage.SaveAs(memoryStream);
memoryStream.Position = 0;
return File(memoryStream.ToArray(), "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "exported_data.xlsx");
}
這些方法可以根據項目需求和團隊協作情況選擇使用。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。