代码如下:
string myString = "Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source = " + savePath + fileName + ";Extended Properties=Excel 8.0";
OleDbConnection oconn = new OleDbConnection(myString);
oconn.Open();
DataSet ds = new DataSet();
OleDbDataAdapter oda = new OleDbDataAdapter("select * from [Sheet1$]", oconn);
oda.Fill(ds);
oconn.Close();
问题1:Excel表中只有1条数据,导入Sql后有很多的空白行,原因是Excel滴问题,应该是曾经写过 24 行数据,后来删除了 22 行,而Excel会自动记录最后数据行的位置(类似一个单向指针),怎么过滤这些空白行
select * from [Sheet1$] where [A] <> '' 这样的写法好像不对(A为Excel列名),正确的写法应该怎样写?问题2:怎么防止重复导入的数据?
string myString = "Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source = " + savePath + fileName + ";Extended Properties=Excel 8.0";
OleDbConnection oconn = new OleDbConnection(myString);
oconn.Open();
DataSet ds = new DataSet();
OleDbDataAdapter oda = new OleDbDataAdapter("select * from [Sheet1$]", oconn);
oda.Fill(ds);
oconn.Close();
问题1:Excel表中只有1条数据,导入Sql后有很多的空白行,原因是Excel滴问题,应该是曾经写过 24 行数据,后来删除了 22 行,而Excel会自动记录最后数据行的位置(类似一个单向指针),怎么过滤这些空白行
select * from [Sheet1$] where [A] <> '' 这样的写法好像不对(A为Excel列名),正确的写法应该怎样写?问题2:怎么防止重复导入的数据?
conn.Open();
DataSet ds = new DataSet();
OleDbDataAdapter odda = new OleDbDataAdapter("select * from [" + sheet + "]", conn);
odda.Fill(ds);
return ds;你看看有啥不同,以前做过,,,
2、选中Excel最后多出来的空行,大概选中100多行,删除掉空白行,而不是清空。代码判断下空行
DataSet 删除数据
打开excel遍历判断是否为空
把空白行也一起导入到 DataTable 中。
然后,对DataTable进行过滤,就可以了啊。
这个建议很好,但我想如果在查询Excel的时候就过滤掉,效率应该会高一些
你的excel里面,以前有24行数据,应该是删除的时候只是把下面的行的数据值删除了,而行没有删除,
你试一试把下面的那20多行整个区域都删除了,在测试看看!
if (dr["商品编号"].ToString().Trim() == string.Empty)
{
continue;
}