当前位置: 代码迷 >> PB >> pb的数据窗口导出到Excel出现乱码怎么解决
  详细解决方案

pb的数据窗口导出到Excel出现乱码怎么解决

热度:85   发布时间:2016-04-29 10:11:37.0
pb的数据窗口导出到Excel出现乱码如何解决?
系统:xpsp3+sql2000+pb8.02Build9506
我导出到Excel的语句是:dw_1.SaveAs(ls_fname,HTMLTable!,True),有时正常,有时有乱码,通过上网查找说是pb9用以下语句可以解决dw_1.SaveAs(ls_fname,HTMLTable!,True,EncodingUTF8!),但我的系统是pb8的,改成这条语句后有错误提示:illegal enumerated constant:encodingutf8. 请高手看看是不是pb8无此功能?必须用pb9吗?有没有pb8的补丁程序可以解决呢?谢谢!!

------解决方案--------------------
这个跟数据量有关的吧
------解决方案--------------------
我遇到過相同的問題,測試後發現應該是轉出內容的部分文字導致的。我也不解為什麼?部分文字會導致整個亂碼
------解决方案--------------------
saveasascii()试试
------解决方案--------------------
http://www.gougou.com/search?search=powerbuilder8.0.4&restype=-1&id=10000001&ty=0&pattern=&xmp=0

不过,估计升级补丁应该也解决不了
------解决方案--------------------
探讨
saveasascii()试试

------解决方案--------------------
你看看
dw_1.object.datawindow.data.htmltable
这个属性取得的数据是否有乱码
如果没有的话,你可以考虑用如下步骤来导出数据窗口:
(1)生成一个空的xls文件(可以saveas一个空的数据窗口)
(2)打开xls文件,复制数据,粘贴数据,保存xls文件
C/C++ code
OLEObject  excel  excel  =  CREATE  OLEObject  if  excel.ConnectToObject(docname)  =  0  then         excel.application.DisplayAlerts  =  FALSE         excel.application.workbooks(1).Parent.Windows(excel.application.workbooks(1).Name).Visible  =  True         clipboard(dw_1.object.datawindow.data.htmltable)       excel.application.workbooks(1).ActiveSheet.Paste       clipboard(' ')       excel.application.workbooks(1).saveas(docname,  39)         excel.application.workbooks(1).close()  end  if
------解决方案--------------------
同意6楼观点!
------解决方案--------------------
dw_1.object.datawindow.data.htmltable
这个属性取得的数据如果没有乱码,可以直接将该属性值writefile为excel文件“N:\****\.***.xls”

------解决方案--------------------
用黄大哥那个DW2XLS试试呢 前几天放的DEMO里有针对PB8版本的
------解决方案--------------------
C/C++ code
string ls_htmldatals_htmldata = '<META HTTP-EQUIV="Content-type" Content="text-html;charset=gb2312">'ls_htmldata += '~r~n' + dw_1.object.datawindow.data.htmltable然后通过fileopen, filewrite , fileclose 将ls_htmldata保存到(*.xls)excel文件中
------解决方案--------------------

用 别人的控件不更好 。。。直接调用就好了
------解决方案--------------------
另外导出的xls文件中,经常会出现这样的情况,单元格数据为:01001, 但是导出的xls文件打开时,数据却为:1001。或者单元格数据为:123456789123456789, 导出的xls文件打开后,数据却为:1.23457E+17。这显然是我们所不期望看到的。

这时候你可以这样处理
C/C++ code
string ls_htmldatals_htmldata = dw_1.object.datawindow.data.htmltable//以下函数将ls_htmldata中的第一个'<table'替换为'<table x:str', 函数请自己完善str_replace(ls_htmldata, '<table', '<table x:str')ls_htmldata = '<html xmlns:x="urn:schemas-microsoft-com:office:excel">~r~n' +&           '<META HTTP-EQUIV="Content-type" Content="text-html;charset=gb2312">~r~n' +&           ls_htmldata然后通过fileopen, filewrite , fileclose 将ls_htmldata保存到(*.xls)excel文件中
  相关解决方案