美文网首页
C#不要再使用Npoi啦,使用MiniExcel操作Excel文

C#不要再使用Npoi啦,使用MiniExcel操作Excel文

作者: 黑哥聊dotNet | 来源:发表于2022-03-05 15:19 被阅读0次

    1.简介

        MiniExcel简单、高效避免OOM的.NET处理Excel查、写、填充数据工具。

    目前主流框架如Npoi 需要将数据全载入到内存方便操作,但这会导致内存消耗问题。

    MiniExcel 尝试以 Stream 角度写底层算法逻辑,能让原本1000多MB占用降低到几MB,避免内存不够情况。

    2.特点

       低内存耗用,避免OOM(out of memoery)、频繁 Full GC 情况

    支持即时操作每行数据

    兼具搭配 LINQ 延迟查询特性,能办到低消耗、快速分页等复杂查询

    轻量,不需要安装 Microsoft Office、COM+,DLL小于150KB

    简便操作的 API 风格。

    3.特点

    低内存耗用,避免OOM(out of memoery)、频繁 Full GC 情况

    支持即时操作每行数据,

    兼具搭配 LINQ 延迟查询特性,能办到低消耗、快速分页等复杂查询

    轻量,不需要安装 Microsoft Office、COM+,DLL小于150KB

    简便操作的 API 风格.

    4.使用

    安装

    使用Nuget搜索Miniexcel安装

    准备一个Excel测试文件

    里面有三列,Id,Name,Title

    再写入20行数据

    我们在使用Query 查询 Excel 返回强型别 IEnumerable 数据

    既然是强类型 那我们我们就要写一个Model类

    ```

    public class Test

        {

            public int Id { get; set; }

            public string Name { get; set; }

            public string Title { get; set; }

        }

    ```

    为了大家看得方便明了,我这里使用winform进行测试  miniexcel 支持.net framework 和.net core 。

    查询就一行代码,简单明了,比Npoi是不是看起来就好多了

    ```

      var rows = MiniExcel.Query<Test>(path).ToList(); 

    uiDataGridView1.DataSource = rows;

    ```

    写入并另存为文件也很简单

     MiniExcel.SaveAs(@"D:\测试文档全部导出.xlsx", rows);

    重写标题另存就需要写一个重写标题的方法

    ```

    private IEnumerable<Dictionary<string, object>> GetOrders(List<Test> test)

            {

                foreach (var item in test)

                {

                    var newCompanyPrepareds = new Dictionary<string, object>();

                    newCompanyPrepareds.Add("Id", item.Id);

                    newCompanyPrepareds.Add("姓名", item.Name);

                    newCompanyPrepareds.Add("职位", item.Title);

                    yield return newCompanyPrepareds;

                }

            }

    ```

    最后再说一下我为什么推荐Minexcel的原因:

    这里我开个小小的车,

    npoi就相当于半老徐娘, minixecel就相当于18岁的姑娘

    且npoi有的我们的miniexcel都有,如果有这两个姑娘让你选择,我现在大家都会选择miniexcel吧

    最后我希望所有neter关注前沿技术,不要故步自封。

    最后大家如果喜欢我的文章,还麻烦给个关注, 希望net生态圈越来越好!

    个人公众号【黑哥聊dotNet】

    b站【黑哥聊编程】

    相关文章

      网友评论

          本文标题:C#不要再使用Npoi啦,使用MiniExcel操作Excel文

          本文链接:https://www.haomeiwen.com/subject/lfqwrrtx.html