Delphi处理EXCEL时遇到#VALUE!
时间:2011-12-02
来源:互联网
各位大侠,我用delphi从excel中获取数据时,遇到了excel单元格中#VALUE!这样的数据,结果程序报错,could not convert variant of type (dispatch) into type (string),请教下有没有好的方法处理?
作者: villaparkhui 发布时间: 2011-12-02
1、在导入时,先手工清除Excel表格的#VALUE值;
2、要么就要绕开这种情况,加一个判断
if ExclApp.ActivexSheet[1].Cells[1,1].value = '#VALUE!' then
3、建议用SQL语句直接从Excel获得数据,
select * from OpenDataSource('Microsoft.Jet.OLEDB.4.0','Data Source=''d:\123.xls'';Extended Properties=''Excel 8.0''')...Sheet1$
这样SQL会处理掉那些无效值!
2、要么就要绕开这种情况,加一个判断
if ExclApp.ActivexSheet[1].Cells[1,1].value = '#VALUE!' then
3、建议用SQL语句直接从Excel获得数据,
select * from OpenDataSource('Microsoft.Jet.OLEDB.4.0','Data Source=''d:\123.xls'';Extended Properties=''Excel 8.0''')...Sheet1$
这样SQL会处理掉那些无效值!
作者: grjs2004 发布时间: 2011-12-02
楼上说第二个方法肯定不行。。。
作者: villaparkhui 发布时间: 2011-12-02
如果是用ado直接读取转换时不要用 .string用.value先判断一下
另外也可以使用active插件逐格获取excel的内容,不过可惜我手里只有c#的代码
另外也可以使用active插件逐格获取excel的内容,不过可惜我手里只有c#的代码
作者: funxu 发布时间: 2011-12-02
用varType判断一下是不是dispatch型:
if varType(Excelapp.Cells[i,j])<>varDispatch then
...
不过,这个不应该是Delphi做的事,你应该想法办排除掉这个错误
if varType(Excelapp.Cells[i,j])<>varDispatch then
...
不过,这个不应该是Delphi做的事,你应该想法办排除掉这个错误
作者: kaikai_kk 发布时间: 2011-12-02
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28