美文网首页
C# 使用ExcelDataReader读取Excel文件内容

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

作者: Ritchie_Li | 来源:发表于2022-08-18 22:10 被阅读0次

    存在很多优秀的操作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());

    读取该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===============");

                        }

                    }

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

    相关文章

      网友评论

          本文标题:C# 使用ExcelDataReader读取Excel文件内容

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