簡體   English   中英

C#將Excel導入到Datagridview

[英]C# import excel to datagridview

我想將Excel文件導入到datagridview1,並且出現此錯誤。 我該如何解決這個錯誤?

錯誤CS1061'IExcelDataReader'不包含'IsFirstRowAsColumnNames'的定義,並且找不到擴展方法'IsFirstRowAsColumnNames'接受類型為'IExcelDataReader'的第一個參數(您是否缺少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();
        }
    }

}

聽起來您正在遇到這里提到的同一件事: 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();
            }
        }

    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM