سلام
چجوری میشه در Asp.net core اطلاعات رو از دیتابیس خوند و در یک فایل اکسل ذخیره کرد.
میخوام یک دکمه داشته باشم که وقتی روش کلیک میشه یک فایل اکسل ایجاد کنه و بعد از اینکه اطلاعات رو داخل فایل اکسل ریخت اون فایل دانلود بشه
برای استفاده از فایل اکسل در Asp.net core می تونید مراحل زیر رو انجام بدید
استفاده از پکیج DotNetCore.NPOI
خب ابتدا یک پروژه خالی رو ایجاد کنید، حالا در خط فرمان با استفاده از دستور زیر پکیج مورد نظر رو نصب کنید
PM> Install-Package DotNetCore.NPOI
از این پکیج برای کار با فایلها و داکیومنت های Office استفاده میشه.
خب حالا با استفاده از این کتابخانه 2 کار رو میشه انجام داد
چون سوال شما در مورد ایجاد یک فایل اکسل در 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);
}
تاریخ :
1403/08/29
- ساعت :
07:15:00 PM
- بازدید :
76
- پاسخ :
0
|
تاریخ :
1403/08/18
- ساعت :
10:40:00 AM
- بازدید :
109
- پاسخ :
0
|
تاریخ :
1402/07/23
- ساعت :
04:01:00 PM
- بازدید :
1033
- پاسخ :
1
|
تاریخ :
1403/05/30
- ساعت :
09:22:00 AM
- بازدید :
429
- پاسخ :
1
|
تاریخ :
1402/08/16
- ساعت :
10:38:00 AM
- بازدید :
1356
- پاسخ :
1
|
تاریخ :
1398/08/17
- ساعت :
01:27:00 AM
- بازدید :
4798
- پاسخ :
1
|
تاریخ :
1403/07/27
- ساعت :
03:21:00 PM
- بازدید :
214
- پاسخ :
1
|
تاریخ :
1403/07/26
- ساعت :
09:00:00 PM
- بازدید :
117
- پاسخ :
0
|
تاریخ :
1403/05/16
- ساعت :
09:57:00 AM
- بازدید :
396
- پاسخ :
2
|
تاریخ :
1403/06/25
- ساعت :
11:39:00 PM
- بازدید :
567
- پاسخ :
1
|
تاریخ :
1401/02/24
- ساعت :
02:17:00 PM
- بازدید :
2011
- پاسخ :
1
|
تاریخ :
1403/08/29
- ساعت :
07:15:00 PM
- بازدید :
76
- پاسخ :
0
|
تاریخ :
1403/08/18
- ساعت :
10:40:00 AM
- بازدید :
109
- پاسخ :
0
|
تاریخ :
1402/07/23
- ساعت :
04:01:00 PM
- بازدید :
1033
- پاسخ :
1
|
تاریخ :
1403/05/30
- ساعت :
09:22:00 AM
- بازدید :
429
- پاسخ :
1
|
تاریخ :
1402/08/01
- ساعت :
06:25:00 PM
- بازدید :
930
- پاسخ :
1
|
تاریخ :
1402/08/16
- ساعت :
10:38:00 AM
- بازدید :
1356
- پاسخ :
1
|
تاریخ :
1398/08/17
- ساعت :
01:27:00 AM
- بازدید :
4798
- پاسخ :
1
|
تاریخ :
1402/09/08
- ساعت :
07:34:00 PM
- بازدید :
1160
- پاسخ :
1
|
تاریخ :
1402/09/21
- ساعت :
11:10:00 PM
- بازدید :
597
- پاسخ :
1
|