大家好,我对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.
请帮我解释一下代码!谢谢
答案 0 :(得分:1)
PB似乎默认使用制表符分隔的csv文件(而'csv'中的'c'代表'昏迷'......)。
在csv!
的参数中添加ImportString()
枚举值,它应该固定点(它在我的测试框中确实)。
此外,数据对象中定义的列必须与csv文件中的列匹配(至少对于您感兴趣的第一列)。如果csv文件中有模式列,则会忽略它们。但是如果要获得第1列(或第2列),则需要定义前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)
答案 1 :(得分:-1)
使用datawindow_name.importfile(CSV!,file_path)
方法。