Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将任何Excel电子表格导入DataGridView-C_C#_Excel_Datagridview_Dataset - Fatal编程技术网

C# 将任何Excel电子表格导入DataGridView-C

C# 将任何Excel电子表格导入DataGridView-C,c#,excel,datagridview,dataset,C#,Excel,Datagridview,Dataset,我有一个将excel电子表格导入datagridview的程序。我将代码编写如下: try { OleDbConnectionStringBuilder connStringBuilder = new OleDbConnectionStringBuilder(); connStringBuilder.DataSource = file; conn

我有一个将excel电子表格导入datagridview的程序。我将代码编写如下:

try
                {
                    OleDbConnectionStringBuilder connStringBuilder = new OleDbConnectionStringBuilder();
                    connStringBuilder.DataSource = file;
                    connStringBuilder.Provider = "Microsoft.Jet.OLEDB.4.0";
                    connStringBuilder.Add("Extended Properties", "Excel 8.0;HDR=NO;IMEX1");

                    DbProviderFactory factory = DbProviderFactories.GetFactory("System.Data.OleDb");

                    DbDataAdapter adapter = factory.CreateDataAdapter();

                    DbCommand selectCommand = factory.CreateCommand();
                    selectCommand.CommandText = "SELECT * FROM [All Carpets to Excel$]";

                    DbConnection connection = factory.CreateConnection();
                    connection.ConnectionString = connStringBuilder.ConnectionString;

                    selectCommand.Connection = connection;

                    adapter.SelectCommand = selectCommand;

                    data = new DataSet();

                    adapter.Fill(data);

                    dataGridView1.DataSource = data.Tables[0].DefaultView;

                }
                catch (IOException)
                {

                }

行selectCommand.CommandText=SELECT*FROM[All地毯to Excel$];从具有该名称的工作表中获取数据。我想知道如何让这个程序以任何工作表名称打开excel文档。一个我可能不知道的名字。

你可以像这样得到所有工作表的名字

public string[] GetExcelSheetNames(string excelFileName)
{
        OleDbConnection con = null;
        DataTable dt = null;
        String conStr = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + excelFileName + ";Extended Properties=Excel 8.0;";
        con= new OleDbConnection(conStr);
        con.Open();
        dt = con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);

        if (dt == null)
        {
            return null;
        }

        String[] excelSheetNames = new String[dt.Rows.Count];
        int i = 0;

        foreach (DataRow row in dt.Rows)
        {
            excelSheetNames[i] = row["TABLE_NAME"].ToString();
            i++;
        }

        return excelSheetNames;
}

excel文件有多个工作表。我想可能是foreach语句。当我调试时,它似乎完全跳过了foreach语句,只返回了一个空字符串[]。。。隐马尔可夫模型。。。