读取excel,遇到空cell的问题

cooljw 2008-06-18 03:01:38
如果所读取的excel中,某一行中包含 空cell,那么这个空值不会读取到myDataSet2中去。请问如何解决??(excel表的数据量较大)
例:如下excel
A1 B1 C1 D1
A2 C2 D2

我读到myDataSet2中的内容就是
A1 B1 C1 D1
A2 C2 D2

以下是我读取excel的代码
string strCon = " Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source ="+strExcelFileName+";Extended Properties='Excel 8.0;HDR=No;IMEX=1;'" ;
OleDbConnection myConn = new OleDbConnection(strCon);
string strSelectcmd = "select *";
strSelectcmd=strSelectcmd+" FROM [Sheet1$] ";

try
{
myConn.Open();
OleDbDataAdapter myCommand = new OleDbDataAdapter(strSelectcmd,myConn);
myDataSet2 = new DataSet() ;
myCommand.Fill(myDataSet2,"[Sheet1$]");

}
catch(Exception e)
{
MessageBox.Show(e.Message);
}
finally
{
myConn.Close();
}
...全文
254 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
cooljw 2008-07-15
  • 打赏
  • 举报
回复
还没解决的问题呢,大家赶紧帮忙看一下吧……
问题又重新描述了,谢谢各位


如果所读取的excel中,某一行中包含 空cell,那么这个空值不会读取到myDataSet2中去。请问如何解决??(excel表的数据量较大)
例:如下excel
A1 B1 C1 D1
A2 C2 [] D2

---------------------------------[]处就是是空格,论坛对空格自动缩进

我读到myDataSet2中的内容就是
A1 B1 C1 D1
A2 C2 D2

以下是我读取excel的代码
string strCon = " Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source ="+strExcelFileName+";Extended Properties='Excel 8.0;HDR=No;IMEX=1;'" ;
OleDbConnection myConn = new OleDbConnection(strCon);
string strSelectcmd = "select *";
strSelectcmd=strSelectcmd+" FROM [Sheet1$] ";

try
{
myConn.Open();
OleDbDataAdapter myCommand = new OleDbDataAdapter(strSelectcmd,myConn);
myDataSet2 = new DataSet() ;
myCommand.Fill(myDataSet2,"[Sheet1$]");

}
catch(Exception e)
{
MessageBox.Show(e.Message);
}
finally
{
myConn.Close();
}
NetColorWolf 2008-07-10
  • 打赏
  • 举报
回复
跟踪一下,看下myDataSet2.Tables[0].Rows[0]中相应字段的值吧
cooljw 2008-07-10
  • 打赏
  • 举报
回复
up~~~up~~~~
cooljw 2008-07-01
  • 打赏
  • 举报
回复
能否给段示例代码?
如何在COM中调用这个DBNull呢?
JustLovePro 2008-07-01
  • 打赏
  • 举报
回复
我之前遇到到这种情况,后来没办法是让user必须填写完整excel。
不知道谁有好的解决方案??
qiuming0306 2008-07-01
  • 打赏
  • 举报
回复
是System.DBNull值
对DBNull的解释:
该类用于指示不存在某个已知值(通常在数据库应用程序中)。

在数据库应用程序中,空对象是字段的有效值。该类区分空值(空对象)和未初始化值(DBNull.Value 实例)。例如,表可以包含具有未初始化字段的记录。默认情况下,这些未初始化字段具有 DBNull 值。

该类还可以用于在 COM Interop 中区分 VT_NULL 变量(与空对象关联)和 VT_EMPTY 变量(与 DBNull.Value 实例关联)。

DBNull 从不等于任何值。

DBNull 是一个单独的类,这意味着该类只能存在一个实例。这个唯一的实例是 DBNull.Value。

访问 SQL 数据库的数据密集应用程序必须使用 System.Data.SqlTypes 类,这些类对空值具有内在支持。

-----------------------------------------------------------------------------------------------------------------

DBNull在DotNet是单独的一个类型,该类只能存在唯一的实例,DBNULL.Value,DBNull唯一作用是可以表示数据库中的字符串,数 字,或日期,为什么可以表示原因是DotNet储存这些数据的类(DataRow等)都是以 object 的形式来储存数据的。对于 DataRow , 它的 row[column] 返回的值永远不为 null , 要么就是具体的为column 的类型的值 。 要么就是 DBNull 。 所以 row[column].ToString() 这个写法永远不会在ToString那里发生NullReferenceException。DBNull 实现了 IConvertible 。但是,除了 ToString 是正常的外,其他的ToXXX都会抛出不能转换的错误。
cooljw 2008-07-01
  • 打赏
  • 举报
回复
up
cooljw 2008-06-18
  • 打赏
  • 举报
回复
各位大侠帮忙看看哈~~~自己顶一下^_^

110,561

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧