Translate

Thứ Năm, 25 tháng 3, 2021

Bài 5: Import hàng hóa từ file excel

 Bài 5: Import hàng hóa từ file excel

Chào các bạn.
Ở bài này chúng ta sẽ import hàng hóa từ một file excel.

1. Tạo file excel mẫu:




2. Tạo lớp ProductImporter


using DevExpress.ExpressApp;
using DevExpress.Spreadsheet;
using System;
using System.Collections.Generic;
using System.Linq;
using YouSoft.Vn.Framework.Core.Extensions;
using YouSoft.Vn.XAFCustom.Supports.Base;
using YouSoft.Vn.XAFCustom.Supports.Extensions;

namespace App.Module.Modules.Inventory.Entities
{
    public class ProductImporter : ExcelImporterBase<Product>
    {
        public override int StaringRowIndex => 2;

        public override string SampleFilePath => @"ExcelTemplates\Products.xlsx";
        List<string> productNames;

        public override bool OnStart(IObjectSpace os, ViewController controller, Workbook workbook)
        {
            base.OnStart(os, controller, workbook);
            productNames = os.GetObjectsQuery<Product>()
                    .Select(p=>p.Name)
                    .ToList();
            return true;
        }

        public override bool OnFinish()
        {
            productNames.Dispose();
            return base.OnFinish();

        }

        public override bool OnRowStart(int rowIndex, ref string error)
        {
            //1. đọc tên hàng hóa
            var name=Sheet.GetCellValueString(Columns.Name, rowIndex);
            name = name?.Trim();
            //2. Nếu tên hàng hóa không rỗng/null và không có trong csdl
            if (!name.IsNullOrWhiteSpace()
                ||!productNames.Contains(name)
                )
            {
                //3. tạo mới hàng hóa
                var price = Sheet.GetCellValue<double>(Columns.Price, rowIndex, 0);
                new Product(Session)
                {
                    //với tên ở trên
                    Name=name,
                    Price=price
                };
                productNames.Add(name);
            }
                
                
                //đọc giá 
            return true;
        }
        public static class Columns
        {
            public const char Name = 'A';
            public const char Price = 'B';
        }
    }
}

Đăng ký lớp ở App.Module.cs

		protected override void Register(IExcelImportService service)
        {
            base.Register(service);
            service.Register<ProductImporter>();
        }
Lưu ý, ở project chạy chương trình, nhớ có file mẫu ở trên.

Chạy chương trình



Các bạn có thể tham khảo chi tiết ở Video hướng dẫn
Có khó khăn gì thì comment bên dưới nhé.

Không có nhận xét nào:

Đăng nhận xét