excel 转换成DBF 但是时间型的数据居然全乱套了,求救

youanchundan 2007-01-06 08:44:11
我把一个EXCEL转换成DBF
具体EXCEL格式如下
内容 时间 百分比
aaaa 22:00 0.05
bbbb 22:30 0.6
(cc)cc 大约19:00 0.2
建了一个DBF
结构是 内容 C 20
时间 C 10
百分比 n 5,2
但是在导入数据后,发现时间列全部不对(除了以中文开头的)
然后显示成12/30的内容;
另外内容列带()的居然变成null
我晕啊
求高手
大豆、花生、狐狸都好,谢谢
...全文
1659 33 打赏 收藏 转发到动态 举报
写回复
用AI写文章
33 条回复
切换为时间正序
请发表友善的回复…
发表回复
十豆三 2007-01-13
  • 打赏
  • 举报
回复
可以直接对比:

?"2:25">"2:30"
youanchundan 2007-01-12
  • 打赏
  • 举报
回复
十豆三我是用您的办法解决的
呵呵所以你好人帮到底
怎么解决一下比较时间的问题呢
2:25和2:30是不是有什么函数
还是用字符串的比较哦
老猫咪也很谢谢你你也是高手啊其他的也多谢多谢
youanchundan 2007-01-12
  • 打赏
  • 举报
回复
谢谢似乎解决了
顺便再问一句
怎么比较时间呢
就是比较时间的大小怎么比较啊
justonce 2007-01-10
  • 打赏
  • 举报
回复
上面命令有误:
APPEND FROM test DELIMITED WITH TAB
justonce 2007-01-10
  • 打赏
  • 举报
回复
我有个办法能够解决,
先将Excel源文件test.xls另存为"文本文件(制表符分隔)(*.txt)" test.txt
然后再用append from test sdf 导入数据表即可!
cnszyuxin 2007-01-10
  • 打赏
  • 举报
回复
你上句作用还是起到读取EXCEL内容的作用么?

是的.

lcTime = loSheet.Cells[I,4].Value
lcTime = loSheet.Cells[I,4].Text

就是这两句的区别,.Value所读取的是带有格式的Excel的数据.
.Text秉承Microsoft的一贯方法,读取的是文本.因此,用Text
可以读出完整的12:30,但用Value读的时候,Excel是将内容作为
时间来读的.因此就成了 0.877777777775

在后来的.Net中,控件的Caption属性和Value属性大多被Text属
性所代替.





zhlovers 2007-01-10
  • 打赏
  • 举报
回复
留个脚印
用得着再来
十豆三 2007-01-10
  • 打赏
  • 举报
回复
接上:只能用上面方法。
十豆三 2007-01-10
  • 打赏
  • 举报
回复
我的方法是:

1、先建一个空表
2、将XLS转成TXT
3、导入TXT

其实你的时间列一开始就不要用时间或者自定义格式,直接常规或文本,然后就可以直入导入或追加。

只不过你现在用了这个时间或者自定义格式,再想改回常规或文本,数据就不对了,所以就你目前的EXCEL
十豆三 2007-01-10
  • 打赏
  • 举报
回复

Create Table MyTest (FL1 C(20),FL2 C(20),FL3 C(20),FL4 C(20))
lcSourceFile='C:\时间转换数据.xls'
LOCAL EOLE
EOLE=CREATEOBJECT("Excel.application")
EOLE.Workbooks.OPEN("&lcSourceFile")
EOLE.Worksheets(1).ACTIVATE
EOLE.DisplayAlerts = .F.
EOLE.ActiveWorkBook.SAVEAS('C:\TIME.TXT',3)
EOLE.Workbooks.CLOSE
EOLE.QUIT
RELEASE EOLE
SELECT MyTest
APPEND FROM C:\TIME.TXT DELI WITH TAB
GO TOP
browse
justonce 2007-01-09
  • 打赏
  • 举报
回复
'22:30
justonce 2007-01-09
  • 打赏
  • 举报
回复
加个分号绝对行啊"'" 注意是半角不是全角的分号
cnszyuxin 2007-01-09
  • 打赏
  • 举报
回复
相关话题
0.877777777775
0.456666666663
0.355555555555
这些数据并不是乱七八糟的东西,是Excel在时间和文本之间转换的
数据,目前支持从0到0.99999999,表示为一天的时间,0.52083333表
示的就是中午12:30,如果是中午12:00,那么转换的结果就是0.5 .
各位有兴趣的话,可以去看一下关于TimeValue()函数[Excel]中的
相关说明.也可以研究一下相关的转换方法.也满有趣的.
cnszyuxin 2007-01-09
  • 打赏
  • 举报
回复
呵呵,好吧,老猫眯就实践一下.
将那一列更改为时间格式: 13:30
然后根据上面我的方法去读,注意以下语句变更

lcTime = loSheet.Cells[I,4].Text &&假设数据是在第四列

再不对,再来责怪老猫眯. (:
十豆三 2007-01-09
  • 打赏
  • 举报
回复
你的Excel样表上传到
http://www.access911.net/CSDN/

我们来导试试
youanchundan 2007-01-09
  • 打赏
  • 举报
回复
加分号是可以
但是如果上万条数据怎么加啊
一条一条加么,批量加是没有这个函数的
因为这些是时间型的,不能用EXCEL自带的字符串函数比如concatenate
起到把两个字符串连成一个的作用
youanchundan 2007-01-09
  • 打赏
  • 举报
回复
不管怎么样我还是很谢谢大家
真的
apple_8180(十豆三) 文档我已经传上去了谢谢您
cnszyuxin(老猫) ( ) 我也很谢谢你
你上句作用还是起到读取EXCEL内容的作用么
十豆三 2007-01-08
  • 打赏
  • 举报
回复
建个与EXCEL一样结构的DBF表,
把这个Excel另个为5.0格式,
然后打开DBF,用APPEND FROM EXCEL表名.XLS TYPE XL5
youanchundan 2007-01-08
  • 打赏
  • 举报
回复
lao 老猫没有实践就没有发言权
你去试一下看看如果把13:00一个时间格式的在EXCEL文档里直接就转换格式转换成文本型看看好了肯定是类似0.736111111的数据!!
十三豆的最后一句是我白痴了点,不过总是要调剂调剂吧
我是个初学者,所以才问问题啊

另外不能导不能抱怨数据源吧
十三豆说的用append from我实验过了出来的效果是加了年月日
而且一律都是12小时的了
比如17:00
变成了12/30/99 05:00:00


cnszyuxin 2007-01-08
  • 打赏
  • 举报
回复
这应该不算是个问题.很容易解决的.而且应该在Excel中解决会简单得多.
十豆三上面的代码,是让你用程序去更改那一列的数据类型.其实你自己
多改一改,如果不出差错的话,应该很容易.也可能根本是你的数据的问题.

RELEAE EOLE这句提示出错,是因为十豆三少写了一个字母,如果你不是VFP
的程序员,倒也罢了. RELEASE EOLE .

另外既然是时间列全不对,其他列都对的话,说明时间列的格式设置始终是
有问题,如果尝试将:号改变或前面全部加上一个字符号如:T20:30,然后再
尝试.如果能正常地读出数据,再导是没有问题的.

加载更多回复(13)

2,727

社区成员

发帖
与我相关
我的任务
社区描述
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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