我这儿有两种方法,一种是比较笨的,另一种是网上找到的. 我是在vb6中做的,使用的ado和adox版本是2.6第一种: dim varTemp 这个变量在程序运行中不赋任何值,它的值就是一个null值 dim varVal dim destVal varVal=xlsheet.cells(1,1) destVal=iff(varVal=varTemp,0,varVal) 这句的意思是,如果varVal和varTemp相等时,即是空值时,则iif返加0,否则返加varVal第二种(标准方法): dim cat as new adox.catalog dim tbl as new adox.tabletbl.columns.append "abc" tbl.columns("abc").properties("NullAble")=true tbl.columns("abc").Properties("Jet OLEDB:Allow Zero Length") = True这样在拷贝数据时就不会聚错了.
• 在被扫描的八 (8) 行中,如果该列包含三 (3) 个数字值和五 (5) 个文本值,则提供程序将返回三 (3) 个空值和五 (5) 个文本值。
• 在被扫描的八 (8) 行中,如果该列包含四 (4) 个数字值和四 (4) 个文本值,则提供程序将返回四 (4) 个数字和四 (4) 个空值。
因此,如果列中包含不同类型的值,唯一的解决方法是将该列中的数字值存储为文本,然后在需要时使用 Visual Basic VAL 函数或等效的函数在客户端应用程序中将其转换回数字。对于只读数据,若要解决此问题,可在连接字符串的“Extended Properties”部分设置“IMEX=1”,启用导入模式。这将强制使用ImportMixedTypes=Text 注册表设置。但在此模式下,执行更新操作时可能会出现意外的结果。 有关此设置的其他信息,请单击下面的文章编号,查看 Microsoft 知识库中相应的文章:
194124 PRB:Excel Values Returned as NULL Using DAO OpenRecordset(使用 DAO OpenRecordset 时,返回的 Excel 值为 NULL)链接串写成:string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\\1.xls;Extended Properties='Excel 8.0;IMEX=1;'";
我是在vb6中做的,使用的ado和adox版本是2.6第一种:
dim varTemp 这个变量在程序运行中不赋任何值,它的值就是一个null值
dim varVal
dim destVal
varVal=xlsheet.cells(1,1)
destVal=iff(varVal=varTemp,0,varVal) 这句的意思是,如果varVal和varTemp相等时,即是空值时,则iif返加0,否则返加varVal第二种(标准方法):
dim cat as new adox.catalog
dim tbl as new adox.tabletbl.columns.append "abc"
tbl.columns("abc").properties("NullAble")=true
tbl.columns("abc").Properties("Jet OLEDB:Allow Zero Length") = True这样在拷贝数据时就不会聚错了.