دسته بندی ها
17:27 1399/01/14

ذخیره اطلاعات در فایل Excell در Asp.net core

مشخصات سوال کننده :
کاربر : hamid_b     امتیاز کاربر : 510     رتبه کاربر : 4
دسته بندی : Asp.net Core

به این سوال امتیاز بدهید    1
تعداد بازدید این سوال : 4142
پاسخ دهنده : fateme 17:51 1399/01/14

خروجی گرفتن از اطلاعات دیتابیس در فایل Excell در Asp.net core

برای استفاده از فایل اکسل در Asp.net core می تونید مراحل زیر رو انجام بدید

استفاده از پکیج DotNetCore.NPOI

خب ابتدا یک پروژه خالی رو ایجاد کنید، حالا در خط فرمان با استفاده از دستور زیر پکیج مورد نظر رو نصب کنید

 

PM> Install-Package DotNetCore.NPOI

 

از این پکیج برای کار با فایلها و داکیومنت های Office استفاده میشه.

خب حالا با استفاده از این کتابخانه 2 کار رو میشه انجام داد

 

  1. import فایل اکسل : شما میتونید یک فایل اکسل رو انتخاب کنید و محتویات درون اون رو داخل دیتابیس خودتون ذخیره کنید.
  2. 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);
        }

 

ویرایش شده در دوشنبه 21 مهر 1399 ساعت 23:24:07
به این پاسخ امتیاز بدهید    3
امتیاز: 1617 رتبه: 2
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود