当前位置: 首页 > news >正文

C#测试Excel开源组件ExcelDataReader

  使用微软的com组件Microsoft.office.Interop.Excel读写Excel文件虽然可用,但是列多、行多的时候速度很慢,之前测试过Sylvan.Data.Excel包的用法,如果只是读取Excel文件内容的话,还可以使用ExcelDataReader包,后者是C#开源、轻量化、快速的Excel文件读取库,支持读取xlsx、xlsb、xls、csv格式的文件。本文学习并测试ExcelDataReader包的基本用法。
  新建Winform项目,在Nuget包管理器中搜索并安装ExcelDataReader。
在这里插入图片描述
  ExcelDataReader包中最重要的是ExcelReaderFactory类和IExcelDataReader接口,前者根据不同的文件格式创建对应的数据读取类(也即IExcelDataReader接口实现类),后者用于操作excel文件。IExcelDataReader的常用函数或属性如下:

序号函数或属性说明
1Read读取当前工作簿中的一行数据
2NextResult切换到当前文件的下一工作簿
3ResultsCount获取当前文件的工作簿数量
4FieldCount返回当前工作簿中的列数量
5RowCount返回当前工作簿中的行数量
6GetValue获取当前工作簿通过Read函数获取的一行数据中指定列的数据,返回值类型为object,同理还有GetDouble、GetInt32、GetBoolean、GetDateTime、GetString函数,返回指定类型的数据
7GetColumnWidth返回列宽,如果列是隐藏状态,则返回 0
8RowHeight返回行高 ,如果行是隐藏状态,则返回 0

  下方为基本的测试代码,不同于Sylvan.Data.Excel包有专门的函数获取列名,ExcelDataReader需要自己写代码获取列名(其实就是先调用一次Read函数),然后再继续读取下面的数据。

using (var stream = File.Open(txtFileName.Text, FileMode.Open, FileAccess.Read))
{
    using (var reader = ExcelReaderFactory.CreateReader(stream))
    {
        reader.Read();

        for (int i = 0; i < reader.FieldCount; i++)
        {
            DataGridViewTextBoxColumn column = new DataGridViewTextBoxColumn();
            column.HeaderText = reader.GetString(i);
            dgvData.Columns.Add(column);
        }

        while (reader.Read())
        {
            DataGridViewRow dataGridViewRow = new DataGridViewRow();
            dataGridViewRow.CreateCells(dgvData);

            for (int i = 0; i < reader.FieldCount; i++)
            {
                dataGridViewRow.Cells[i].Value = reader.GetValue(i);
            }

            dgvData.Rows.Add(dataGridViewRow);
        }
    }
}

  程序运行时遇到下面的报错,百度该错误,找到参考文献3,其中说到要安装System.Text .Encoding.CodePages包,同时在项目的program文件中增加下面的一行代码,照做后问题解决。
在这里插入图片描述

static void Main()
{
    ApplicationConfiguration.Initialize();
	//增加下面一行代码
    System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance);
    Application.Run(new Form1());
}

  最后是程序运行效果,如下图所示:
在这里插入图片描述

参考文献:
[1]https://zhuanlan.zhihu.com/p/18555606219
[2]https://github.com/ExcelDataReader/ExcelDataReader
[3]https://blog.csdn.net/qq_41545233/article/details/122198747

相关文章:

  • 为什么可视化大屏越来越多应用3D元素呢?
  • Android 11.0 framework中增加开启和关闭飞行模式的接口
  • 使用Redis实现轻量级消息队列
  • C++位运算精要:高效解题的利器
  • Elasticsearch笔记
  • 一个极简的词法分析器实现
  • OpenCV 图形API(6)将一个矩阵(或图像)与一个标量值相加的函数addC()
  • Pycharm(十一):字符串练习题
  • PHP 开发API接口签名验证
  • 翻译: 人工智能如何让世界变得更美好二
  • 链表算法的技巧和方法
  • 移动零+复写零+快乐数+盛最多水的容器+有效三角形的个数
  • 智能导诊系统的技术体系组成
  • PCB钻孔之多边形孔分析
  • Spring Boot 中 JdbcTemplate 处理枚举类型转换 和 减少数据库连接的方法 的详细说明,包含代码示例和关键要点
  • 常见集合篇(三)二叉树
  • Axure疑难杂症:完美解决文本框读取、赋值、计数(玩转文本框)
  • Linux——安装MySQL
  • 【分布式系统】-2-GFS
  • 思维链(Chain of Thought, CoT)
  • 长春行业网站/十大计算机培训机构排名
  • 找外包公司做网站/百度seo营销推广
  • 电商推广方法有哪些/苏州seo网站系统
  • o2o网站设计公司/学新媒体运营最好的培训学校
  • 网站自动下注程序需要怎么做/seo值怎么提高
  • 如何自己做个网站/石家庄新闻网头条新闻