如何导入逗号分隔的文本文件到数据窗口(powerbuilder 11.5)



大家好,我是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,你的代码有一些问题:

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

最新更新