回 帖 发 新 帖 刷新版面

主题:请教如何将没有分隔符的文本导入数据表中?

文本没有数据分隔符号,但有列的形式存在,是从另一个软件里面导出来的,请教导入VF数据表的代码?请高手赐教!!!感谢!

回复列表 (共22个回复)

沙发

列只要有规律,(也就是你用眼能看出来)就用 FileToStr("文件名") 来进行字符处理即可。具体要看你的文本内容才能写出“字符处理”表达式。如果“标示”条件太多就建个库来处理!如有可能,你发两三行“标本数据”我帮你分析吧。。。。。

板凳

对了,文件有多大,如果太大,就用低级函数来做.....

3 楼


用excel打开此文本文件,选取固定宽度,另存为 DBF 4。

4 楼

表的格式如下:

          装配件     1   89.20   3210   
1     XXX   XXXX     4   23.1    58.4  XXX
2     XXX   XXXX     3   28      89    XXXX
2/1   XXX   XXXX     1           40   
3     XXX   XXXX     5   69      79.2  XXXX


请高手帮我分析下,改天发个原版的数据上来!

5 楼

希望用一个按钮代码把文本导入VF数据表

6 楼

把文本文件发Email:sywzs@163.com

用你给的格式保存为NN.TXT ,编了如下代码,仅供参考。
SET PATH TO D: &&文本文件所在文件夹
STORE FOPEN('nn.txt') TO nFileHandle
STORE FSEEK(nFileHandle, 0, 2) TO nEnd
STORE FSEEK(nFileHandle, 0) TO nTop
IF nEnd <= 0
    WAIT WINDOW '文件是空的!' NOWAIT
ELSE
    IF !FILE("NN.dbf")
        CREA TABLE NN(A01 C(5),A02 C(10),A03 N(5),A04 N(7,2),A05 N(7,1),A06 C(8))
    ELSE
        USE NN IN 0
        SELE NN
        DELE ALL
        PACK
    ENDIF
    FOR I=0 TO nEnd
        cString = FGETS(nFileHandle, nEnd)
        I=FSEEK(nFileHandle, 0,1)
        APPE BLAN
        REPL A01 WITH LEFT(cString,5),A02 WITH SUBS(cString,7,10),A03 WITH VAL(SUBS(cString,18,5)),A04 WITH VAL(SUBS(cString,24,7)),A05 WITH VAL(SUBS(cString,32,7)),A06 WITH SUBS(cString,40)
    NEXT
ENDIF
= FCLOSE(nFileHandle)
BROW
RETURN

7 楼

文本文件已经发给你了,请查收!
另外,文本文件导入数据表以后,格式怎么转换?文本文件是字符型的,有些内用需要转换为数值型的

8 楼

下面的代码是根据 '6HS01.txt'编写的,其实与6楼的代码没什么太大的区别,你可以分析一下。用 VAL()函数就可以把文本转换成数值型了。如有问题再联系。

SET PATH TO D:\   &&文本文件所在文件夹
STORE FOPEN('6HS01.txt') TO nFileHandle
STORE FSEEK(nFileHandle, 0, 2) TO nEnd
STORE FSEEK(nFileHandle, 0) TO nTop
IF nEnd <= 0
    WAIT WINDOW '文件是空的!' NOWAIT
ELSE
    IF !FILE("AA.dbf")
        CREA TABLE AA(A01 C(5),A02 C(14),A03 C(18),A04 C(40),A05 N(6),A06 C(20),A07 N(12,5),A08 N(12,3),A09 C(40))
    ELSE
        USE AA IN 0
        SELE AA
        DELE ALL
        PACK
    ENDIF
    FOR I=0 TO nEnd
        cStr = FGETS(nFileHandle, nEnd)
        I=FSEEK(nFileHandle, 0,1)
        APPE BLAN
        REPL A01 WITH LEFT(cStr,5),A02 WITH SUBS(cStr,6,14),A03 WITH SUBS(cStr,20,18),A04 WITH SUBS(cStr,38,40),A05 WITH VAL(SUBS(cStr,78,6)),A06 WITH SUBS(cStr,84,20),A07 WITH VAL(SUBS(cStr,104,8)),A08 WITH VAL(SUBS(cStr,112,8)),A09 WITH SUBS(cStr,120)
    NEXT
ENDIF
= FCLOSE(nFileHandle)
BROW
RETURN

9 楼

非常感谢楼上的代码,有个问题没解决或者我没说明
SET PATH TO D:\   &&文本文件所在文件夹
STORE FOPEN('6HS01.txt') TO nFileHandle
这两句,第1句是指定文件路径,第2句是赋变量
在第2句中的6HS01.txt是个文本文件,我电脑上很多这样的文件,请问我要导入其他文件怎么办?(不是每次都要该下这个代码吧?)
我希望从路径当中获取文本文件的名称。。。。这样每次都能正常导入文件了,谢谢!

10 楼

用一下语句替换,输入时可以不输入文件扩展名,但文件的数据格式必须与 6HS01.TXT相同。

ACCEPT "请输入文本文件名(包含路径):" TO WJM
IF LOWER(RIGHT(WJM,4))<>".txt"
    WJM=WJM+".txt"
ENDIF
STORE FOPEN(WJM) TO nFileHandle

我来回复

您尚未登录,请登录后再回复。点此登录或注册