前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Magicodes.IE 2.3重磅发布——.NET Core开源导入导出库

Magicodes.IE 2.3重磅发布——.NET Core开源导入导出库

作者头像
心莱科技雪雁
发布2020-09-18 14:18:11
4490
发布2020-09-18 14:18:11
举报
文章被收录于专栏:雪雁的专栏雪雁的专栏

在2.3这一版本的更新中,我们迎来了众多的使用者、贡献者,在这个里程碑中我们也添加并修复了一些功能。对于新特点的功能我将在下面进行详细的描述,当然也欢迎更多的人可以加入进来,再或者也很期待大家来提issues或者PR,您的一个issue或者PR将是我们前进的动力。

  • 公式导出 #88

(https://github.com/dotnetcore/Magicodes.IE/issues/88)

公式导出目前已经在Excel模板导出中支持,我们可以通过如上代码片段的格式进行将公式应用到我们的Excel导出模板中.

代码语言:javascript
复制
{{Formula::AVERAGE?params=G4:G6}}{{Formula::SUM?params=G4:G6&G4}}
  • 增加分栏、分sheet、追加rows导出 #74

(https://github.com/dotnetcore/Magicodes.IE/issues/74)

在该版本中我们支持使用链式编程导出我们的Excel,从而起到追加分栏等作用。

在多个DTO导出中我们可以通过如下代码片段将我们的Excel分栏导出

代码语言:javascript
复制
exporter.Append(list1).SeparateByColumn().Append(list2).ExportAppendData(filePath);

导出形式如下所示:

header 1

header 2

header1

row 1 col 1

row 1 col 2

row1

row 2 col 1

row 2 col 2

row2

代码语言:javascript
复制
exporter.Append(list1).SeparateBySheet().Append(list2).ExportAppendData(filePath);

当然不仅仅是这样,我们还可以对行进行追加导出,同时我们可以选择导出额外的Header信息或者不导出

代码语言:javascript
复制
exporter.Append(list1).SeparateByRow().Append(list2).ExportAppendData(filePath);

header 1

header 2

header1

row 1 col 1

row 1 col 2

row1

row 2 col 1

row 2 col 2

row2

row 2 col 1

row 2 col 2

row2

代码语言:javascript
复制
exporter.Append(list1).SeparateByRow().AppendHeaders().Append(list2).ExportAppendData(filePath);

header 1

header 2

header1

row 1 col 1

row 1 col 2

row1

row 2 col 1

row 2 col 2

row2

header 1

header 2

header1

row 2 col 1

row 2 col 2

row2

  • 添加对ExpandoObject类型的支持#135

(https://github.com/dotnetcore/Magicodes.IE/issues/135)

特别感谢 sgalcheung(https://github.com/sgalcheung)添加该特性的导出,具体使用方式如下所示:

代码语言:javascript
复制
class Program
    {
        static async Task Main(string[] args)
        {
            IExporter exporter = new ExcelExporter();
            // 生成测试数据
            var personList = GenFu.GenFu.ListOf<Person>();

            // 导出一个只包含"FirstName", "LastName"列的excel
            string fields = "FirstName,LastName"; // 可自定义导出想要的字段
            var expandoObjectList = new List<ExpandoObject>(personList.Count);
            var propertyInfoList = new List<PropertyInfo>();
            var fieldsAfterSplit = fields.Split(',');
            foreach (var field in fieldsAfterSplit)
            {
                var propertyName = field.Trim();
                var propertyInfo = typeof(Person).GetProperty(propertyName);

                if (propertyInfo == null)
                {
                    throw new Exception($"Property: {propertyName} 没有找到:{typeof(Person)}");
                }

                propertyInfoList.Add(propertyInfo);
            }

            foreach (var person in personList)
            {
                var shapedObj = new ExpandoObject();

                foreach (var propertyInfo in propertyInfoList)
                {
                    var propertyValue = propertyInfo.GetValue(person);
                    ((IDictionary<string, object>)shapedObj).Add(propertyInfo.Name, propertyValue);
                }

                expandoObjectList.Add(shapedObj);
            }

            string filePath = Path.Combine(Directory.GetCurrentDirectory(), "dynamicExportExcel.xlsx");
            var result = await exporter.ExportAsByteArray<ExpandoObject>(expandoObjectList);
            File.WriteAllBytes(filePath, result);
        }
    }


    class Person
    {
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public string Title { get; set; }
        public int Age { get; set; }
        public int NumberOfKids { get; set; }
    }

感谢大家对Magicodes.IE的支持。关于更多发布信息大家可以参阅:

  • https://github.com/dotnetcore/Magicodes.IE/blob/master/RELEASE.md
  • https://github.com/dotnetcore/Magicodes.IE
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-09-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 麦扣聊技术 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档