excel导入数据库的一点小问题

做了一个将EXCEL表格内容导入数据库的功能,但是在运行时出了点问题。

在导入第一张表时成功了,然后将第二张表再导入,报出“由于将在索引、主关键字、或关系中创建重复的值,请求对表的改变没有成功”的错误,而且数据库的表中多了一行内容全是空的数据。但是第二张表和第一张表中没有重复内容,所以错误其实是,导入时将EXCEL中的空行当做数据多次导入时报错了。

可是为什么,会将空行当做数据呢?

 string strConn = "Provider=Microsoft.ACE.OLEDB.12.0;" + 
                "Data Source=" + fileName + ";" +                 
                "Extended Properties='Excel 12.0 Xml;HDR=Yes;IMEX=1;'";    //各版本号很重要
 OleDbDataAdapter da = new OleDbDataAdapter("SELECT * FROM [sheet1$]", strConn);
 DataTable dt = new DataTable();  
 da.Fill(dt);
我是将EXCEL中表格存入DataTable,再将DataTable打入数据库。

可是第一张表导入时,并没有将空行也导进去,所以问题是在第二张表。

原来问题在于,我的第二张表是第一张表复制过去,然后删改了其中的数据得到的,所以看上去为空行的内容,程序也认为它是有数据的存入了DataTable中。

我重新建了张EXCEL,一行行添加,再导入时就没有了空行的问题。然后我又多添加了几行数据再删除,又出现了空行数据。所以问题就是你所看到的空行并没有数据,但是程序认为是有数据的。

所以为了避免这种问题,只要判断下数据是否为空就好,为空则不进行添加。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值