如何将逗号分隔的文本文件导入datawindow(powerbuilder 11.5)

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)

请帮我代码!谢谢

Sek*_*eki 1

看来 PB 默认需要一个制表符分隔的 csv 文件(而“csv”中的“c”代表“coma”...)。

csv!在 的参数中添加ImportString()枚举值,它应该修复该点(在我的测试框中确实如此)。

此外,数据对象中定义的列必须与 csv 文件中的列匹配(至少对于您感兴趣的第一列)。如果 csv 文件中有模式列,它们将被忽略。但如果你想获得第一(或第二)和第三列,你需要定义前3列。如果不需要,您可以随时隐藏 #1 或 #2。

顺便说一句,您的代码有一些问题:

  1. 您应该始终测试函数调用的返回值,例如FileOpen()在文件不存在/不可读的情况下停止处理
  2. 您正在为第一行读取文本文件两次:一次在 之前,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)