手机微网站系统,湖州长兴县建设局网站,前端个人介绍网站模板下载,女生做网站主题有哪些使用微软的com组件Microsoft.office.Interop.Excel读写Excel文件虽然可用#xff0c;但是列多、行多的时候速度很慢#xff0c;之前测试过Sylvan.Data.Excel包的用法#xff0c;如果只是读取Excel文件内容的话#xff0c;还可以使用ExcelDataReader包#xff0c;后者是C#开… 使用微软的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返回列宽如果列是隐藏状态则返回 08RowHeight返回行高 如果行是隐藏状态则返回 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