Translate

Hiển thị các bài đăng có nhãn Import. Hiển thị tất cả bài đăng
Hiển thị các bài đăng có nhãn Import. Hiển thị tất cả bài đăng

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é.