标题:怪事:excel表格单元空白时,数据读取的判断?
只看楼主
琅拿度
Rank: 1
等 级:新手上路
帖 子:148
专家分:5
注 册:2016-4-7
结帖率:84.62%
已结贴  问题点数:17 回复次数:8 
怪事:excel表格单元空白时,数据读取的判断?
怪事1:表格单元空白时,isnull()不一定为“T”allt()不一定为“==''”,所以要两个同时判断;

怪事2: 表格不为空白时:比如有的日期 isnull()=.T. and allt()==''=.t. 却成立所以又加入Type('')<>"T"一起判断)  

搞不明白
搜索更多相关主题的帖子: excel表格 
2016-04-13 20:38
琅拿度
Rank: 1
等 级:新手上路
帖 子:148
专家分:5
注 册:2016-4-7
得分:0 
摸索了一下,好像解决方法是:
ISNULL(excelapp.cells(x,y).value) && 这个能判断单元是否为空,不能用ISNULL(excelapp.cells(x,y).text)空单元也返回.f.

2016-04-14 00:18
wengjl
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:108
帖 子:2175
专家分:3785
注 册:2007-4-27
得分:4 
=.null.

empty()

只求每天有一丁点儿的进步就可以了
2016-04-14 08:01
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:396
帖 子:11713
专家分:43267
注 册:2006-5-13
得分:4 
也可以先测试取到数据的类型再作判断。

活到老,学到老! http://www. E-mail:hu-jj@
2016-04-14 08:06
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:4 
以下是引用琅拿度在2016-4-14 00:18:18的发言:

摸索了一下,好像解决方法是:
ISNULL(excelapp.cells(x,y).value) && 这个能判断单元是否为空,不能用ISNULL(excelapp.cells(x,y).text)空单元也返回.f.

可能 excelapp.cells(x,y).text 不是NULL,
如果 excelapp.cells(x,y).text 为NULL,EMPTY(excelapp.cells(x,y).text) 应返回.F.。
2016-04-14 08:17
琅拿度
Rank: 1
等 级:新手上路
帖 子:148
专家分:5
注 册:2016-4-7
得分:0 
多谢大家,目前要判断单元是否为空,用混合条件效果不错(注意.value与.text,这两个不能乱用,目前好像是100%成功率的):

IF ISNULL(excelapp.selection.value)=.t. AND empty(excelapp.selection.text)=.t.  && 不知道单独使用empty()是否已足够?
   MESSAGEBOX('空')
endi
2016-04-14 09:10
琅拿度
Rank: 1
等 级:新手上路
帖 子:148
专家分:5
注 册:2016-4-7
得分:0 
以下是引用hu9jj在2016-4-14 08:06:09的发言:

也可以先测试取到数据的类型再作判断。


试了一下:
如果type(.value), 可以返回单元的数据类型,但空白的单元不返回,所以:

是不是用 empty(type('excel.selection.value'))=.t.  就能100%判断单元为空呢?

答案是不行: 因为type(.value), 可以返回单元的数据类型,但空白的单元有时返回“C”有时返回null

[此贴子已经被作者于2016-4-14 10:43编辑过]

2016-04-14 09:21
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
用NVL()判断看看有无不同
2016-04-14 10:05
琅拿度
Rank: 1
等 级:新手上路
帖 子:148
专家分:5
注 册:2016-4-7
得分:0 
以下是引用琅拿度在2016-4-14 09:10:35的发言:

多谢大家,目前要判断单元是否为空,用混合条件效果不错(注意.value与.text,这两个不能乱用,目前好像是100%成功率的):

IF ISNULL(excelapp.selection.value)=.t. AND empty(excelapp.selection.text)=.t.  && 不知道单独使用empty()是否已足够?
   MESSAGEBOX('空')
endi


不可以这样,因为当单元为空时ISNULL(excelapp.selection.value)返回值不一定为.t.

所以暂时用:

IF ISNULL(excelapp.selection.value)=.t. or empty(excelapp.selection.text)=.t.  && 只要满足其一条件就认为是空单元
   MESSAGEBOX('空')
endi
2016-04-14 10:45



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-463610-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.059538 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved