【问题标题】:How to save an excel file as a text in powerbuilder 6.5如何在powerbuilder 6.5中将excel文件另存为文本
【发布时间】:2014-07-12 04:40:18
【问题描述】:

问题是如何在 powerbuilder 6.5 中打开 .xls 文件并将其另存为 .txt。

例如,以下内容不起作用,我被卡在了开头:

oleobject testexcel
testexcel= Create oleobject
testexcel.ConnectToNewObject("excel.application")
testexcel.workbooks.Open("something.xls")
testexcel.ActiveWorkbook.saveas("something.txt")
testexcel.disconnectobject() 
Destroy testexcel

【问题讨论】:

    标签: excel powerbuilder


    【解决方案1】:

    如果您需要自动化流程,OLE 解决方案是您的不二之选。 如果您正在进行数据操作(一次),而不是简单地打开 excel 和 saveas(txt、csv 等),然后执行 dw_1.importfile(xxxx) 以导入您从 Excel 创建的临时文件。

    我怀疑您正在寻找第一个解决方案,因为第二个解决方案更明显 - 我认为这就是 Matt 的答案。

    找到另一个类似的 StackOverflow 问题,在这里得到了回答:How to import Excel file into DataWindow

    这里有一些代码,这不是你想要的,但可以修改它来工作......

    string                ls_pathname, ls_filename
    long                        ll_rc
    oleobject        loo_excel
    
    IF GetFileOpenName ( "Open File", ls_pathname, ls_filename, "XLS", "Excel (*.xls),*.xls" ) < 1 THEN Return
    
    loo_excel = CREATE OLEObject
    loo_excel.ConnectToNewObject( "excel.application" )
    loo_excel.visible = false
    loo_excel.workbooks.open( ls_pathname )
    loo_excel.ActiveCell.CurrentRegion.Select()
    loo_excel.Selection.Copy()
    ll_rc = dw_1.ImportClipBoard ( 2 )
    ClipBoard('')
    loo_excel.workbooks.close()
    loo_excel.disconnectobject()
    DESTROY loo_excel
    

    剪贴板看起来有点绕,但我能在短时间内找到它。祝你好运

    【讨论】:

    • 我看过上面的例子。这就是我试图用我的代码做的事情。但是,loo_excel.workbooks.open( ls_pathname ) 中的 open 功能似乎在 powerbuilder 6 中不存在。
    • Alex,你说函数在 PB6 中不存在,但这是不正确的,当你使用 OLE 对象时,就像使用“对象”,编译器会让你输入任何你想要的,期待功能将在运行时可用。因此,要么您对 Excel 版本使用了错误的语法,要么该函数在 EXCEL 中不存在,因为 oleobject 右侧的任何内容都特定于 OLE 对象而不是 PB。这有意义吗?所以..查看 Microsoft Docs 以了解您在故障机器上拥有的确切版本的 excel。 connecttonewobject 有错误吗?
    • Alex,也从 connecttoobject 获取返回值并在其后添加它.. if li_rtn 0 then ls_errorMessage = "Error running MS Excel api" li_rtn = -1 else
    • 谢谢。文件名错误的 open 函数似乎给出了一个描述不好的错误:error calling external object function open。否则它会起作用。
    • 在 PowerBuilder 中使用 OLE 是非常无情的。您确实需要检查返回代码,并且最好使用 try catch 块来防止在您的 OLE 代码错误时应用程序崩溃。很高兴你成功了!
    【解决方案2】:

    您可以将其保存为与文本基本相同的csv文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-01
      • 2020-05-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多