C#无法从Excel文件获取完整的数据表
当我试图从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
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$]