Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/321.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.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文件获取完整的数据表_C#_Excel_Dataset_Oledbdataadapter - Fatal编程技术网

C#无法从Excel文件获取完整的数据表

C#无法从Excel文件获取完整的数据表,c#,excel,dataset,oledbdataadapter,C#,Excel,Dataset,Oledbdataadapter,当我试图从excel文件中提取数据表时,如下所示: public void CopyTable(string filename) { var connectionString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0; data source={0}; Extended Properties=Excel 8.0;", filename); var adapter = new OleDbDataAdapter("SELEC

当我试图从excel文件中提取数据表时,如下所示:

public void CopyTable(string filename)
{
    var connectionString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0; data source={0}; Extended Properties=Excel 8.0;", filename);

    var adapter = new OleDbDataAdapter("SELECT col_1,   col_2,  col_3,  col_4,  col_5,  col_6    FROM[Sheet1$]", connectionString);
    var ds = new DataSet();

    adapter.Fill(ds, "ReadData");
    m_mainDt = ds.Tables["ReadData"].Copy();
}
我正在获取除第5-6列之外的所有数据。 我得到的是标题,但不是数据

excel文件是.xls

当我使用此查询时,也会发生这种情况:

文件已损坏。
我已将所有表格复制到另一个文件中,并且工作正常

电子表格中是否隐藏了任何列?如果两列被隐藏,那么第5列和第6列实际上是第7列和第8列。我按名称获取列,因此顺序和隐藏列不应中断,尽管没有隐藏列您有标题行吗?第5列第一行有数据吗?Oledb是哑巴。实际上,是Jet很笨(或太聪明),它才是真正的excel数据库。Jet试图猜测数据类型和结构,经常出错。这就是为什么使用常规格式时整数变成日期,日期变成整数的根本原因。此外,如果列中没有数据,则会发生有趣的事情。我有一个标题行,但所有其他列的行为似乎都正常。也许有其他方法可以提取excel表格?您确定获得了正确的excel工作簿/工作表吗?我会在Fill()方法后面加一个断点。然后将鼠标悬停在ds变量上。您将看到一个向下箭头。点击数据集可视化。您可以从下拉列表中查看所有表(工作表)。
SELECT *  FROM[Sheet1$]