Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.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# 使用c读取同一工作表中具有可变行长的多个excel表格_C#_.net_Excel_Datatables_Worksheet - Fatal编程技术网

C# 使用c读取同一工作表中具有可变行长的多个excel表格

C# 使用c读取同一工作表中具有可变行长的多个excel表格,c#,.net,excel,datatables,worksheet,C#,.net,Excel,Datatables,Worksheet,因此,我有一个excel文件,其中包含一个包含4个表的工作表 我希望能够将所有这些表分离到单独的dataTable,因为知道行的长度可以更改,行可以添加或删除 我曾尝试使用oleDb,它可以很好地处理工作表中的第一个表,但当我尝试通过指定起始行来获取第二个表时,它会将第二个表与一个datatable中的所有其他表一起提供给我:/ 这是我的密码: public static System.Data.DataTable getTableSelection(string file, string

因此,我有一个excel文件,其中包含一个包含4个表的工作表

我希望能够将所有这些表分离到单独的dataTable,因为知道行的长度可以更改,行可以添加或删除

我曾尝试使用oleDb,它可以很好地处理工作表中的第一个表,但当我尝试通过指定起始行来获取第二个表时,它会将第二个表与一个datatable中的所有其他表一起提供给我:/ 这是我的密码:

 public static System.Data.DataTable getTableSelection(string file, string sheet, string starting = "", string finish = "")
    {
        string ConStr;
        string HDR;
        HDR = "YES";
        ConStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source="
            + file + ";Extended Properties=\"Excel 12.0;HDR=" + HDR + ";IMEX=0\"";
        OleDbConnection cnn = new OleDbConnection(ConStr);
        string query = "select * from ["
                            + sheet + "$" + (starting != "" ? starting + ":" + finish : "") + "]";
        Console.WriteLine(query);
        OleDbCommand oconn = new OleDbCommand(query, cnn);
        OleDbDataAdapter adp = new OleDbDataAdapter(oconn);
        System.Data.DataTable dt = new System.Data.DataTable();
        adp.Fill(dt);
        cnn.Close();
        return dt;
    }
对不起,我的英语不好,希望你能理解!!
我喜欢StackOverflow,所以我找到了一个解决方案,它包括连接我的所有表,以获得我需要的所有字段,然后使用oleDb查询将其转换为数据表;我的查询如下所示:从[Sheet1$A:D9]上的[Sheet1$A:D9]内部联接[Sheet1$A14:D21]中选择*。primaryKey=[Sheet1$A14:D21]。primaryKey=[Sheet2$A26:M33]上的primaryKey内部联接[Sheet2$A26:M33]。primaryKey=[Sheet1$A14:D21]。primaryKey


但是,如果不指定表的结束位置,我仍然无法获取该表:/

为什么在变量finish之后有冒号?@jdweng例如,如果我使用此参数Tools调用该方法。getTableSelectionG:\\Classeur.xlsx,Produits,A14,D;我从[Produits$A14:D]中得到这个查询:select*from