• C# 读取Excel,一波华丽的操作


    C# 读取Excel,其实有很多方法。但是今天要来一波华丽的操作。

    先看效果:

    以上这波操作使用了 ExcelDataReader 和 ExcelDataReader.DataSet 完成的。

    ExcelDataReader 是一个快速读取 Excel 的 C# 库。使用简单,读取速度比较快,感觉比 NPOI 快一点。但是遗憾的是只能读 Excel 没有写的操作。

    以上这波操作的全部代码:

    using ExcelDataReader;
    using System;
    using System.IO;
    using System.Windows.Forms;
    
    namespace ExcelFastRead
    {
        public partial class FrmMain : Form
        {
            public FrmMain()
            {
                InitializeComponent();
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                OpenFileDialog dialog = new OpenFileDialog();
                dialog.Filter = "(Excel 97-03)|*.xls|(Excel 2007)|*.xlsx|ALL|*.*";
                if (DialogResult.OK != dialog.ShowDialog())
                {
                    return;
                }
    
                string strFileName = dialog.FileName;
                if (string.IsNullOrWhiteSpace(strFileName))
                {
                    return;
                }
    
                using (var stream = File.Open(strFileName, FileMode.Open, FileAccess.Read))
                {
    
                    // Auto-detect format, supports:
                    //  - Binary Excel files (2.0-2003 format; *.xls)
                    //  - OpenXml Excel files (2007 format; *.xlsx)
                    using (var reader = ExcelReaderFactory.CreateReader(stream))
                    {
    
                        // Choose one of either 1 or 2:
    
                        // 1. Use the reader methods
                        do
                        {
                            while (reader.Read())
                            {
                                // reader.GetDouble(0);
                            }
                        } while (reader.NextResult());
    
                        ExcelDataSetConfiguration configuration = new ExcelDataSetConfiguration()
                        {
    
                            // Gets or sets a value indicating whether to set the DataColumn.DataType 
                            // property in a second pass.
                            //UseColumnDataType = true,
    
                            // Gets or sets a callback to obtain configuration options for a DataTable. 
                            ConfigureDataTable = (tableReader) => new ExcelDataTableConfiguration()
                            {
    
                                // Gets or sets a value indicating the prefix of generated column names.
                                //EmptyColumnNamePrefix = "Column",
    
                                // Gets or sets a value indicating whether to use a row from the 
                                // data as column names.
                                UseHeaderRow = true,
    
                                // Gets or sets a callback to determine which row is the header row. 
                                // Only called when UseHeaderRow = true.
                                //ReadHeaderRow = (rowReader) => {
                                //    // F.ex skip the first row and use the 2nd row as column headers:
                                //    rowReader.Read();
                                //},
    
                                // Gets or sets a callback to determine whether to include the 
                                // current row in the DataTable.
                                //FilterRow = (rowReader) => {
                                //    return true;
                                //},
    
                                // Gets or sets a callback to determine whether to include the specific
                                // column in the DataTable. Called once per column after reading the 
                                // headers.
                                //FilterColumn = (rowReader, columnIndex) => {
                                //    return true;
                                //}
                            }
                        };
                        var result = reader.AsDataSet(configuration);
    
                        // 2. Use the AsDataSet extension method
                        //var result = reader.AsDataSet();
    
                        dgvList.DataSource = result.Tables[0];
    
                        // The result of each spreadsheet is in result.Tables
                    }
                }
    
            }
        }
    }

    ExcelDataReader 项目地址

    ExcelDataReader nuget包管理

    ExcelDataReader.DataSet nuget包管理

  • 相关阅读:
    输入框只能输入正数且保留小数后2位数字,正则
    vscode安装ESlint配置
    kubreretes && docker 模块
    python3安装sqlite3库
    dokcerfile 制作Msql镜像
    前端模板
    Python SMTP发送邮件
    k8s-api
    openpyxl
    k8s mysql主从
  • 原文地址:https://www.cnblogs.com/hjsstudio/p/9817960.html
Copyright © 2020-2023  润新知