大家好,我是powerbuilder的新手,我使用的是pb11.5
有人知道如何导入逗号分隔的文本文件到数据窗口。
文本文件"1234","20141011","胡安,Delacruz"、"美国"、"001992345456"…
"12345","20141011","弧,伊诺","纽约","005765753256"…
如何导入第三列(全名)和最后一列(账号)?我想把姓名和账号转到我的外部数据窗口。我试图使用ImportString(所有的行都被转移到一列仅)。我有三个字段在我的外部数据窗口。姓名和账号。
下面是代码
ls_File = dw_2.Object.file_name[1]
li_FileHandle = FileOpen(ls_File)
li_FileRead = FileRead(li_FileHandle, ls_Text)
DO WHILE li_FileRead > 0
li_Count ++
li_FileRead = FileRead(li_FileHandle, ls_Text)
ll_row = dw_1.ImportString(ls_Text,1)
Loop.
请帮我写代码!谢谢你
似乎PB期望默认情况下以制表符分隔的csv文件(而'csv'中的'c'代表'coma'…)。
在ImportString()
的参数中添加csv!
枚举值,它应该固定点(它在我的测试框中)。
此外,数据对象中定义的列必须与csv文件中的列匹配(至少对于您感兴趣的第一个列是这样)。如果csv文件中有mode列,它们将被忽略。但是如果你想得到第一列(或第二列)和第三列,你需要定义前三列。如果你不需要#1或#2,你可以隐藏它。
BTW,你的代码有一些问题:
- 你应该总是测试函数调用的返回值,如
FileOpen()
停止处理的情况下不存在/不可读的文件 - 为第一行读取文本文件两次:一次在
while
之前,另一次在循环内部。或者可能是为了忽略第一行的列标题?
FWIF,这是基于你的工作代码:
string ls_file = "c:devpowerbuilderexperimentdata.csv"
string ls_text
int li_FileHandle, li_fileread, li_count
long ll_row
li_FileHandle = FileOpen(ls_File)
if li_FileHandle < 1 then
return
end if
li_FileRead = FileRead(li_FileHandle, ls_Text)
DO WHILE li_FileRead > 0
li_Count ++
ll_row = dw_1.ImportString(csv!,ls_Text,1)
li_FileRead = FileRead(li_FileHandle, ls_Text)//read next line
Loop
fileclose(li_fileHandle)
use datawindow_name.importfile(CSV!,file_path)
method