+ -
当前位置:首页 → 问答吧 → Delphi处理EXCEL时遇到#VALUE!

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会处理掉那些无效值!

作者: grjs2004   发布时间: 2011-12-02

楼上说第二个方法肯定不行。。。

作者: villaparkhui   发布时间: 2011-12-02

如果是用ado直接读取转换时不要用 .string用.value先判断一下
另外也可以使用active插件逐格获取excel的内容,不过可惜我手里只有c#的代码

作者: funxu   发布时间: 2011-12-02

用varType判断一下是不是dispatch型:
if varType(Excelapp.Cells[i,j])<>varDispatch then
...

不过,这个不应该是Delphi做的事,你应该想法办排除掉这个错误

作者: kaikai_kk   发布时间: 2011-12-02

热门下载

更多