ذخیره اطلاعات در فایل Excell در Asp.net core
سلام
چجوری میشه در Asp.net core اطلاعات رو از دیتابیس خوند و در یک فایل اکسل ذخیره کرد.
میخوام یک دکمه داشته باشم که وقتی روش کلیک میشه یک فایل اکسل ایجاد کنه و بعد از اینکه اطلاعات رو داخل فایل اکسل ریخت اون فایل دانلود بشه
پاسخ هوش مصنوعی
برای ذخیره اطلاعات در فایل Excel در ASP.NET Core، می توانید از کتابخانه EPPlus استفاده کنید. ابتدا باید این کتابخانه را با استفاده از NuGet بارگیری کنید. سپس می توانید اطلاعات را از دیتابیس خوانده و در یک فایل Excel ذخیره کنید و آن را برای دانلود آماده کنید.
در اینجا مراحلی که باید دنبال کنید را توضیح می دهم:
// 1. نصب EPPlus از NuGet
// در ترمینال یا Package Manager Console:
// Install-Package EPPlus
// 2. ایجاد یک متد برای تولید فایل Excel
public async Task ExportToExcel()
{
// 2.1 خواندن اطلاعات از دیتابیس
var data = await _context.YourEntity.ToListAsync();
using (ExcelPackage excelPackage = new ExcelPackage())
{
var workSheet = excelPackage.Workbook.Worksheets.Add("Sheet1");
// 2.2 نوشتن عنوان ستون ها
workSheet.Cells[1, 1].Value = "Column1";
workSheet.Cells[1, 2].Value = "Column2";
// ... سایر ستون ها
// 2.3 پر کردن داده ها
int row = 2; // شروع از ردیف دوم
foreach (var item in data)
{
workSheet.Cells[row, 1].Value = item.Property1;
workSheet.Cells[row, 2].Value = item.Property2;
// ... سایر ویژگی ها
row++;
}
// 2.4 ساخت فایل Excel
var stream = new MemoryStream();
excelPackage.SaveAs(stream);
// 2.5 برگرداندن فایل برای دانلود
stream.Position = 0;
var fileName = "Data.xlsx";
return File(stream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", fileName);
}
}
در نهایت، کافیست یک دکمه در ویو خود اضافه کنید و آن را به این متد متصل کنید تا با کلیک روی دکمه، فایل Excel دانلود شود.
// 3. اضافه کردن دکمه در Razor View
خروجی گرفتن از اطلاعات دیتابیس در فایل Excell در Asp.net core
برای استفاده از فایل اکسل در Asp.net core می تونید مراحل زیر رو انجام بدید
استفاده از پکیج DotNetCore.NPOI
خب ابتدا یک پروژه خالی رو ایجاد کنید، حالا در خط فرمان با استفاده از دستور زیر پکیج مورد نظر رو نصب کنید
PM> Install-Package DotNetCore.NPOI
از این پکیج برای کار با فایلها و داکیومنت های Office استفاده میشه.
خب حالا با استفاده از این کتابخانه 2 کار رو میشه انجام داد
- import فایل اکسل : شما میتونید یک فایل اکسل رو انتخاب کنید و محتویات درون اون رو داخل دیتابیس خودتون ذخیره کنید.
- export فایل اکسل : شما می تونید اطلاعات دیتابیس رو داخل یک فایل اکسل بریزید و اون فایل رو دانلود کنید.
چون سوال شما در مورد ایجاد یک فایل اکسل در Asp.net core و دانلود اون هست پس Export کردن فایل اکسل رو توضیح میدم.
مرحله اول:
ابندا در پوشه wwwroot یک فایل با فرمت xls یا xlsx ایجاد کنید. این فایل در واقع همان فایل اکسل می باشد که به عنوان یک نمونه و به صورت خالی ایجاد می کنیم.

خب حالا باید در کنترلری که قصد دارید عملیات ذخیره اطلاعات دیتابیس در اکسل رو انجام بدید از اینترفیس IHostingEnvironment استفاده کنید. با استفاده از این کتابخانه می تونید به محتویات موجود در root سایت دسترسی داشته باشید.
private IHostingEnvironment _hostingEnvironment;
public ExcellController(IHostingEnvironment hostingEnvironment)
{
_hostingEnvironment = hostingEnvironment;
}
نکته : کتابخانه NPOI هم از فایل های xls و هم از فایلهای xlsx پشتیبانی می کند.
خب حالا به کدهای زیر دقت کنید.
کدهای Html
<a asp-controller="Excell" asp-action="ExportToExcell">
ارسال شماره تماس به اکسل
</a>
کدهای سمت کنترلر
public async Task<IActionResult> ExportToExcell()
{
string sWebRootFolder = _hostingEnvironment.WebRootPath;
string sFileName = @"phonenolist.xlsx";
string URL = string.Format("{0}://{1}/{2}", Request.Scheme, Request.Host, sFileName);
FileInfo file = new FileInfo(Path.Combine(sWebRootFolder, sFileName));
var memory = new MemoryStream();
using (var fs = new FileStream(Path.Combine(sWebRootFolder, sFileName), FileMode.Create, FileAccess.Write))
{
IWorkbook workbook;
workbook = new XSSFWorkbook();
ISheet excelSheet = workbook.CreateSheet("Demo");
IRow row = excelSheet.CreateRow(0);
row.CreateCell(0).SetCellValue("ID");
row.CreateCell(1).SetCellValue("Name");
row.CreateCell(2).SetCellValue("Age");
row = excelSheet.CreateRow(1);
row.CreateCell(0).SetCellValue(1);
row.CreateCell(1).SetCellValue("Kane Williamson");
row.CreateCell(2).SetCellValue(29);
row = excelSheet.CreateRow(2);
row.CreateCell(0).SetCellValue(2);
row.CreateCell(1).SetCellValue("Martin Guptil");
row.CreateCell(2).SetCellValue(33);
row = excelSheet.CreateRow(3);
row.CreateCell(0).SetCellValue(3);
row.CreateCell(1).SetCellValue("Colin Munro");
row.CreateCell(2).SetCellValue(23);
workbook.Write(fs);
}
using (var stream = new FileStream(Path.Combine(sWebRootFolder, sFileName), FileMode.Open))
{
await stream.CopyToAsync(memory);
}
memory.Position = 0;
return File(memory, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", sFileName);
}
- آموزش نصب و راه اندازی دیتابیس PostgreSQL در ویندوز
- PostgreSql چیست ؟ چه کاربردهایی دارد ؟
- دسترسی به پکیج های nuget در زمان قطع نت بین الملل
- نمایش آخرین ردیف دیتاگیرید موقع لود در wpf
- مشکل اینترنت جهانی و عدم دسترسی به cdnjs.cloudflare.com
- مشکل در نصب sql server 2022
- جلوگیری از اد شدن خودکار در گروه و کانال تلگرام
- کم کردن حجم فیلم توسط کد در Asp net core
- چه کسانی استوری تلگرام را می بینند ؟
- برای کسب و کار تلگرام پرمیوم بهتره یا واتس اپ بیزینس ؟
- کار با CkEditor با قابلیت آپلود عکس
- خطا در ایجاد migration در Asp.net core
- تفاوت های Asp.net core و Asp.net mvc چیه؟
- دلیل اسپم شدن ایمیل های ارسالی از سرور
- نحوه لایه بندی پروژه Core و اضافه کردن به IIS
- ارسال ایمیل در Asp.net core
- آیا میشه در mvc core از کامپونت استفاده کرد
- آپلود فایل در Asp.net core چگونه است؟
- حذف کامل یک رکورد در جدول ریلیشن شده
- اشکال در آپلود فایل ویدیو در mvc core 2