【问题标题】:C# import excel to datagridviewC#将excel导入datagridview
【发布时间】:2017-11-03 04:27:29
【问题描述】:

我想将 excel 文件导入 datagridview1,但出现此错误。 我该如何解决这个错误?

错误 CS1061“IExcelDataReader”不包含“IsFirstRowAsColumnNames”的定义,并且找不到接受“IExcelDataReader”类型的第一个参数的扩展方法“IsFirstRowAsColumnNames”(您是否缺少 using 指令或程序集引用?)

private void dosyasec_Click(object sender, EventArgs e)
{
    using (OpenFileDialog ofd = new OpenFileDialog() { Filter = "Excel Workbook|*.xlsx*", ValidateNames = true })
    {
        if (ofd.ShowDialog() == DialogResult.OK)
        {
            FileStream fs = File.Open(ofd.FileName, FileMode.Open, FileAccess.Read);
            IExcelDataReader reader = ExcelReaderFactory.CreateOpenXmlReader(fs);
           // DataSet result = reader.AsDataSet();
            reader.IsFirstRowAsColumnNames = true;
            result = reader.AsDataSet();
            comboBox1.Items.Clear();
            foreach (DataTable dt in result.Tables)
                comboBox1.Items.Add(dt.TableName);
            reader.Close();
        }
    }

}

【问题讨论】:

  • 我猜你从库中下载了最新版本,但仍然使用旧代码示例。

标签: c# excel datagridview


【解决方案1】:

听起来你遇到了这里提到的同样的事情:https://github.com/ExcelDataReader/ExcelDataReader/issues/261

基本上,现在读取器配置信息的设置有所不同。也许您要么从过时的示例中获取代码,要么这是现有代码并且最近更新了阅读器库。无论如何,我认为您需要做的就是使用链接中提到的方法:

var result = reader.AsDataSet(new ExcelDataSetConfiguration()
{
    ConfigureDataTable = (_) => new ExcelDataTableConfiguration() {
        UseHeaderRow = true
    }
});

除非我真的搞砸了,否则你现有的方法会变成这样:

  private void dosyasec_Click(object sender, EventArgs e)
    {
        using (OpenFileDialog ofd = new OpenFileDialog() { Filter = "Excel Workbook|*.xlsx*", ValidateNames = true })
        {
            if (ofd.ShowDialog() == DialogResult.OK)
            {
                FileStream fs = File.Open(ofd.FileName, FileMode.Open, FileAccess.Read);
                IExcelDataReader reader = ExcelReaderFactory.CreateOpenXmlReader(fs);
                var result = reader.AsDataSet(
                    new ExcelDataSetConfiguration()
                    {
                        ConfigureDataTable = (_) => new ExcelDataTableConfiguration()
                        {
                            UseHeaderRow = true
                        }
                    }
                );
                comboBox1.Items.Clear();
                foreach (DataTable dt in result.Tables)
                    comboBox1.Items.Add(dt.TableName);
                reader.Close();
            }
        }

    }

【讨论】:

    猜你喜欢
    • 2018-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多