Import و Export کردن xlsx در ASP.NET Core

جمعه 14 اردیبهشت 1397

در این مقاله نحوه ی Import و Export کردن xlsx در ASP.NET Core را توضیح خواهیم داد. بنابراین ابتدا یک معرفی کلی خواهیم داشت و سپس Export کردن xlsx در ASP.NET Core را به صورت کامل توضیح خواهیم داد و سپس Import کردن xlsx در ASP.NET Core را به همراه کد های آن به صورت کامل بررسی خواهیم کرد.

 Import و Export کردن xlsx در ASP.NET Core

این مقاله چگونگی import و export کردن xls. یا xlsx. (فایل های اکسل) را در ASP.NET Core نشان می دهد. زمانی که کار با اکسل به همراه NET. فکر می کنیم همیشه به کتابخانه یا کامپوننت سومی فکر می کنیم و یکی از کتابخانه های پرطرفدار net. که از فایل های Excel 2007/2010 که از فرمت Open Office Xml (xlsx) استفاده می کنند ، می خواند و در آن ها می نویسد، EPPlus است اما تا به الان که این مقاله را می نویسیم این کتابخانه برای پشتیبانی از NET Core. به روزرسانی نشده است اما نسخه ی غیر رسمی این کتابخانه به نام  EPPlus.Core وجود دارد که می تواند import و export کردن xlsx در ASP.NET Core را انجام دهد. این کتابخانه در ویندوز ، لینوکس و مک کار می کند. 

Import و Export کردن xlsx در ASP.NET Core

بنابراین اجازه دهید که یک اپلیکیشن جدید ASP.NET Core WEB API بسازیم و EPPlus.Core را نصب کنیم برای نصب EPPlus.Core دستور زیر را در Package Manager Console اجرا کنید:

PM> Install-Package EPPlus.Core

یا می توانید از Nuget Package Manager UI برای نصب آن استفاده کنید.

اجازه دهید یک Web API controller جدید بسازیم و نام آن را ImportExportController بگذاریم پس از اضافه کردن ابتدا اجازه دهید که متد export را بسازیم.

Export کردن xlsx در ASP.NET Core

به عنوان دمو فایل xlsx را در پوشه ی wwwroot خواهیم ساخت. برای گرفتن مسیر پوشه ی wwwroot نیاز به اضافه کردن وابستگی IHostingEnvironment به سازنده داریم. چگونگی دریافت اپلیکیشن پایه و مسیر wwwroot در ASP.NET Core را مطالعه کنید.

public class ImportExportController : Controller
{
    private readonly IHostingEnvironment _hostingEnvironment;

    public ImportExportController(IHostingEnvironment hostingEnvironment)
    {
        _hostingEnvironment = hostingEnvironment;
    }
}

کلاس ExcelPackage که در فضای نام OfficeOpenXml دردسترس است در خواندن و نوشتن xlsx استفاده می شود. یک متد عملیاتی وب api جدید تعریف کنید و نام آن را “Export” بگذارید که URL فایل xlsx تولید شده را برمی گرداند. اینجا کد کامل export کردن داده در xlsx وجود دارد.

[HttpGet]
[Route("Export")]
public string Export()
{
    string sWebRootFolder = _hostingEnvironment.WebRootPath;
    string sFileName = @"demo.xlsx";
    string URL = string.Format("{0}://{1}/{2}", Request.Scheme, Request.Host, sFileName);
    FileInfo file = new FileInfo(Path.Combine(sWebRootFolder, sFileName));
    if (file.Exists)
    {
        file.Delete();
        file = new FileInfo(Path.Combine(sWebRootFolder, sFileName));
    }
    using (ExcelPackage package = new ExcelPackage(file))
    {
        // add a new worksheet to the empty workbook
        ExcelWorksheet worksheet = package.Workbook.Worksheets.Add("Employee");
        //First add the headers
        worksheet.Cells[1, 1].Value = "ID";
        worksheet.Cells[1, 2].Value = "Name";
        worksheet.Cells[1, 3].Value = "Gender";
        worksheet.Cells[1, 4].Value = "Salary (in $)";

        //Add values
        worksheet.Cells["A2"].Value = 1000;
        worksheet.Cells["B2"].Value = "Jon";
        worksheet.Cells["C2"].Value = "M";
        worksheet.Cells["D2"].Value = 5000;

        worksheet.Cells["A3"].Value = 1001;
        worksheet.Cells["B3"].Value = "Graham";
        worksheet.Cells["C3"].Value = "M";
        worksheet.Cells["D3"].Value = 10000;

        worksheet.Cells["A4"].Value = 1002;
        worksheet.Cells["B4"].Value = "Jenny";
        worksheet.Cells["C4"].Value = "F";
        worksheet.Cells["D4"].Value = 5000;

        package.Save(); //Save the workbook.
    }
    return URL;
}

همین. حال زمانی که این اپلیکیشن را اجرا کنید و متد export را فراخوانی کنید پس از اتمام کار پوشه ی wwwroot اپلیکیشن خود را ببینید. شما باید به " “demo.xlsx ساخته شده در سیستم نگاه کنید و وقتی آن را باز می کنید باید نتیجه ی زیر را ببینید.

شما همچنین می توانید سلول های اکسل را ویرایش کنید. قطعه کد زیر رنگ پس زمینه را به خاکستری روشن تنظیم می کند و فونت را به ردیف سرفصل نیز اضافه می کند.

using (var cells = worksheet.Cells[1, 1, 1, 4])
{
    cells.Style.Font.Bold = true;
    cells.Style.Fill.PatternType = ExcelFillStyle.Solid;
    cells.Style.Fill.BackgroundColor.SetColor(Color.LightGray);
}

برای اعمال سبک ها به سلول های اکسل نیاز به اضافه کردن فضای نام OfficeOpenXml.Style دارید.

ساده است. اینطور نیست؟ همه ی این ویژگی های کتابخانه ی EPPlus توسط پورت غیر رسمی به نام EPPlus.Core پشتیبانی می شود.

Import کردن xlsx در ASP.NET Core

تابع import واقعی، پیچیده است و شامل اعتبارسنجی ها، قوانین منطقی و نهایتا ذخیره سازی در پایگاه داده می باشد. اما به عنوان دمو اجازه دهید همان فایلی که ازطریق Export API ساخته شد را import کنیم و محتوا را چاپ کنیم. اینجا کد کامل import کردن API برای خواندن xlsx ، ساخت یک رشته ی فرمت شده از محتوای فایل و بازگرداندن همان وجود دارد.

[HttpGet]
[Route("Import")]
public string Import()
{
    string sWebRootFolder = _hostingEnvironment.WebRootPath;
    string sFileName = @"demo.xlsx";
    FileInfo file = new FileInfo(Path.Combine(sWebRootFolder, sFileName));
    try
    {
        using (ExcelPackage package = new ExcelPackage(file))
        {
            StringBuilder sb = new StringBuilder();
            ExcelWorksheet worksheet = package.Workbook.Worksheets[1];
            int rowCount = worksheet.Dimension.Rows;
            int ColCount = worksheet.Dimension.Columns;
            bool bHeaderRow = true;
            for (int row = 1; row <= rowCount; row++)
            {
                for (int col = 1; col <= ColCount; col++)
                {
                    if (bHeaderRow)
                    {
                        sb.Append(worksheet.Cells[row, col].Value.ToString() + "\t");
                    }
                    else
                    {
                        sb.Append(worksheet.Cells[row, col].Value.ToString() + "\t");
                    }
                }
                sb.Append(Environment.NewLine);
            }
            return sb.ToString();
        }
    }
    catch (Exception ex)
    {
        return "Some error occured while importing." + ex.Message;
    }
}

Import کردن API تعداد ردیف ها و ستون ها را می دهد و سپس بین آن ها برای ساخت یک رشته ی فرمت شده حلقه ایجاد می کند. همین حال زمانی که شما فراخوانی به import کردن API را اجرا می کنید نتیجه ی زیر را خواهید دید.

امیدواریم که این مقاله به شما کمک کرده باشد.

ایمان مدائنی

نویسنده 1299 مقاله در برنامه نویسان

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید