Magicodes.IE icon indicating copy to clipboard operation
Magicodes.IE copied to clipboard

你好,有两点请教下。

Open linege opened this issue 3 years ago • 5 comments

在生成导入模板的时候能支持加默认数据进去吗? 还有在导出数据的时候,能支持下拉数据选项一起导出吗 ?我实现IExporterHeaderFilter来设置MappingValues是不行的 image

linege avatar Oct 04 '22 13:10 linege

在生成导入模板的时候能支持加默认数据进去吗? 是否可以使用同一个Dto,通过不同的特性,然后用导出方案来生成带数据的导入模板。

还有在导出数据的时候,能支持下拉数据选项一起导出吗 ? 目前不支持。Excel的下拉需要绑定数据,建议通过EPPLUS的API来处理。

xl-wenqiang avatar Oct 08 '22 13:10 xl-wenqiang

在生成导入模板的时候能支持加默认数据进去吗? 是否可以使用同一个Dto,通过不同的特性,然后用导出方案来生成带数据的导入模板。

还有在导出数据的时候,能支持下拉数据选项一起导出吗 ? 目前不支持。Excel的下拉需要绑定数据,建议通过EPPLUS的API来处理。

如果导入导出使用同一个dto,在有下拉数据的情况下会有区别的。 大佬,我再问一下。 下拉数据源除了支持枚举,能支持在数据库中读取吗? 我尝试了在数据库中读取,然后通过实现IImportHeaderFilter来赋值,这样实现不了,因为ef上下文获取不到。如下图: image

linege avatar Oct 09 '22 04:10 linege

@linege IImportHeaderFilter支持依赖注入,可以解决DbContext的获取问题,可以参考以下示例:

    /// <summary>
    /// 依赖注入Filter测试
    /// </summary>
    public class DIFilter_Tests : TestBase, IDisposable
    {
        private readonly ITestOutputHelper _testOutputHelper;
        public IExcelImporter Importer = new ExcelImporter();
        ServiceCollection services;
        public DIFilter_Tests(ITestOutputHelper testOutputHelper)
        {
            _testOutputHelper = testOutputHelper;
            //初始化容器
            services = new ServiceCollection();
            //添加注入关系
            services.AddSingleton<IImportResultFilter, ImportResultFilterTest>();
            services.AddSingleton<IImportHeaderFilter, ImportHeaderFilterTest>();
            services.AddSingleton<IExporterHeaderFilter, TestExporterHeaderFilter1>();
            var serviceProvider = services.BuildServiceProvider();
            AppDependencyResolver.Init(serviceProvider);
            _testOutputHelper.WriteLine("DIFilter_Tests");
        }

        [Fact()]
        public void AppDependencyResolverGetService_Test()
        {
            AppDependencyResolver.Current.GetService<IImportResultFilter>().ShouldNotBeNull();
            AppDependencyResolver.Current.GetServices<IFilter>().ShouldNotBeNull();
        }

xl-wenqiang avatar Oct 10 '22 01:10 xl-wenqiang

@linege IImportHeaderFilter支持依赖注入,可以解决DbContext的获取问题,可以参考以下示例:

    /// <summary>
    /// 依赖注入Filter测试
    /// </summary>
    public class DIFilter_Tests : TestBase, IDisposable
    {
        private readonly ITestOutputHelper _testOutputHelper;
        public IExcelImporter Importer = new ExcelImporter();
        ServiceCollection services;
        public DIFilter_Tests(ITestOutputHelper testOutputHelper)
        {
            _testOutputHelper = testOutputHelper;
            //初始化容器
            services = new ServiceCollection();
            //添加注入关系
            services.AddSingleton<IImportResultFilter, ImportResultFilterTest>();
            services.AddSingleton<IImportHeaderFilter, ImportHeaderFilterTest>();
            services.AddSingleton<IExporterHeaderFilter, TestExporterHeaderFilter1>();
            var serviceProvider = services.BuildServiceProvider();
            AppDependencyResolver.Init(serviceProvider);
            _testOutputHelper.WriteLine("DIFilter_Tests");
        }

        [Fact()]
        public void AppDependencyResolverGetService_Test()
        {
            AppDependencyResolver.Current.GetService<IImportResultFilter>().ShouldNotBeNull();
            AppDependencyResolver.Current.GetServices<IFilter>().ShouldNotBeNull();
        }

你好大佬。 如果注入services.AddSingleton<IImportHeaderFilter, ImportHeaderFilterTest>(); 在ImportHeaderFilterTest中是能获取到数据库上下文,这样会出现多个导入功能使用的是同一个ImportHeaderFilter吧。

linege avatar Oct 17 '22 06:10 linege

@linege 是的。之前有考虑加个约束,接下来有时间的话加上约束吧。

xl-wenqiang avatar Oct 18 '22 00:10 xl-wenqiang