Jey*_*Bel 5 csv import powerbuilder datawindow
大家好,我对powerbuilder很新,我正在使用PB 11.5
有人知道如何将逗号分隔的文本文件导入数据窗口.
示例文本文件
"1234","20141011","Juan,Delacruz","Usa","001992345456"......
"12345","20141011","Arc,Ino","Newyork","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.
Run Code Online (Sandbox Code Playgroud)
请帮我代码!谢谢
看来 PB 默认需要一个制表符分隔的 csv 文件(而“csv”中的“c”代表“coma”...)。
csv!
在 的参数中添加ImportString()
枚举值,它应该修复该点(在我的测试框中确实如此)。
此外,数据对象中定义的列必须与 csv 文件中的列匹配(至少对于您感兴趣的第一列)。如果 csv 文件中有模式列,它们将被忽略。但如果你想获得第一(或第二)和第三列,你需要定义前3列。如果不需要,您可以随时隐藏 #1 或 #2。
顺便说一句,您的代码有一些问题:
FileOpen()
在文件不存在/不可读的情况下停止处理while
另一次在循环内部。或者也许它打算忽略带有列标题的第一行?FWIF,这是基于您的工作代码:
string ls_file = "c:\dev\powerbuilder\experiment\data.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)
Run Code Online (Sandbox Code Playgroud)