• C# 使用ExcelDataReader读取Excel文件内容


    存在很多优秀的操作Excel文件的库,本次使用ExcelDataReader 库读取Excel中的内容。感觉这个库很容易上手,操作方便,值得介绍一下。

    1. 安装库ExcelDataReader

    安装信息如下:

    正在尝试收集与目标为“.NETFramework,Version=v4.8”的项目“01_ReadExcelDemo”有关的包“ExcelDataReader.3.6.0”的依赖项信息

    收集依赖项信息花费时间1.22 sec

    正在尝试解析程序包“ExcelDataReader.3.6.0”的依赖项,DependencyBehavior 为“Lowest”

    解析依赖项信息花费时间0 ms

    正在解析操作以安装程序包“ExcelDataReader.3.6.0”

    已解析操作以安装程序包“ExcelDataReader.3.6.0”

    正在将包“ExcelDataReader.3.6.0”添加到文件夹“D:\CodeTest\ReadExcelByExcelDataReader\packages”

    已将包“ExcelDataReader.3.6.0”添加到文件夹“D:\CodeTest\ReadExcelByExcelDataReader\packages”

    已将包“ExcelDataReader.3.6.0”添加到“packages.config”

    已将“ExcelDataReader 3.6.0”成功安装到01_ReadExcelDemo

    执行 nuget 操作花费时间23.82 sec

    已用时间: 00:00:25.5807833

    2. 读取Excel文件内容

    将Excel 文件路径出入下参数filePath。

    using (var stream = File.Open(filePath, FileMode.Open, FileAccess.Read))
    {
         //  Auto-detect format, supports:
        //  - Binary Excel files (2.0-2003 format; *.xls)
        //  - OpenXml Excel files (2007 format; *.xlsx, *.xlsb)
        using (var reader = ExcelReaderFactory.CreateReader(stream))
        {
               // Choose one of either 1 or 2:
               // 1. Use the reader methods
               do
              {
                   Console.WriteLine("=========================");
                   Console.WriteLine($"表名称: {reader.Name}");
                   Console.WriteLine("=========================");
                   while (reader.Read()) // 读取Excel文件所有表中得内容
                   {
                         // reader.GetDouble(0);
                         //reader.GetString(1);
                         //var d1 = reader.GetValue(0); //返回Object
                        //var d2 = reader.GetValue(1);
                        //Console.WriteLine($"{d1}  {d2}  ");
                        for (int i = 0; i < reader.FieldCount; i++)
                        {
                            Console.Write($"{reader.GetValue(i)}\\t");
                        }
                         Console.WriteLine();
                      }
                 } while (reader.NextResult());
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28

    读取该Excel文件所有表的内容。

    3. 读取Excel文件表的行列,依据行列遍历
    using (var stream = File.Open(filePath, FileMode.Open, FileAccess.Read))
     {
    
                    using (var reader = ExcelReaderFactory.CreateReader(stream))
                    {
                        Console.WriteLine("==========================================");
                        Console.WriteLine($"工作表的数量:{reader.ResultsCount} ");
                        Console.WriteLine("==========================================");
                        int nums = reader.ResultsCount;
                        for (int i = 0; i < nums; i++)
                        {
                            Console.WriteLine($"当前工作表名:{reader.Name}");
                            Console.WriteLine($"当前工作表列数:{reader.FieldCount}");
                            Console.WriteLine($"当前工作表行数:{reader.RowCount}");
                            int rows = reader.RowCount;
                            int cols = reader.FieldCount;
                            string taName = reader.Name;
                            for (int index = 0; index < rows; index++)
                            {
    
                                reader.Read();//每一行读取一次
                                for (int j = 0; j < cols; j++)
                                {
                                    //var ty = reader.GetFieldType(j);
                                    //Console.WriteLine(ty.Name);
                                    var v = reader.GetValue(j);
                                    Console.Write($"{v}  ");
                                }
                                Console.WriteLine();
                            }
                            reader.NextResult(); //下一张表
                            Console.WriteLine($"===========Above {taName} Data===============");
                        }
                    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34

    获取总表数,获取每张表的行,列数据,再依据行列遍历。

  • 相关阅读:
    语义检索系统【全】:基于Milvus+ERNIE+SimCSE+IBN实现学术文献语义检索系统完整版
    46道史上最全Redis面试题,面试官能问的都被我找到了(含答案)
    辅助笔记-Jupyter Notebook的安装和使用
    互联网大厂测开领域调研
    软件工程与计算总结(十五)详细设计中面向对象方法下的信息隐藏
    动环监控系统什么牌子好?动环监控有哪些厂家
    【数据结构】队列的顺序表实现&&收尾栈和队列
    1116中信笔试
    计算机网络笔记1 概述
    css布局-弹性布局学习笔记
  • 原文地址:https://blog.csdn.net/flysh05/article/details/126414878