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

时间:2015-06-08 03:54:34

标签: 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.

请帮我解释一下代码!谢谢

2 个答案:

答案 0 :(得分:1)

PB似乎默认使用制表符分隔的csv文件(而'csv'中的'c'代表'昏迷'......)。

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

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

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

  1. 你应该总是测试函数调用的返回值,如FileOpen(),以便在不存在/不可读文件的情况下停止处理
  2. 您正在为第一行读取文本文件两次:一次在while之前,另一次在循环内部。或者它可能会忽略带有列标题的第一行?
  3. 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)方法。