各位前辈请赐教!!!如何将一个数据窗口内的数据原封不动的导出成EXCEL表。

benneng 2002-12-05 05:41:51
我将一个数据窗口内的数据已经导出成了EXCEL表了(利用模板)但是,在EXCEL中显示的中文却都是乱码。这是怎么回事?请问各位有什么好的解决方法请指点。
注:别惦着用saveas()函数了,我的数据窗口内有几列是合计(做成分组了),我已经试过好多回了,SAVEAS()无法导出合计值,而且,标题也导不出来。
...全文
82 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
sdav 2002-12-17
  • 打赏
  • 举报
回复
本来都很简单的问题,但是你却搞的好复杂呀!!dw_1.saveasascii()就行了,参数看参考手册!
benneng 2002-12-12
  • 打赏
  • 举报
回复
都不可以
ice2water 2002-12-06
  • 打赏
  • 举报
回复
http://chinee.kimkee.com/download/downlaod.htm
booksfount 2002-12-06
  • 打赏
  • 举报
回复
to :wu_07(BLUETLCK) 我现在用的也是你的办法,效果还可以,美中不足的是6。5的版本出现空行,奇数行都是空的,看着总有些不太美观,不知你是如何解决的。
还有我在网上看到了另外一种存储为excel的方法,用的是filewrite(pbhome上).我不知道,如果数据量大的话,这两种方法哪一种效率高。目前情况,数据量少,filewrite明显快于用ole的方法。但数据量大会如何呢???
bill_lt 2002-12-06
  • 打赏
  • 举报
回复
如果不是嵌套的datawindow可以用Saveasascii(),导出来跟所看到的一样的
dongquestion 2002-12-06
  • 打赏
  • 举报
回复
你可以用dw_1.saveasascii()函数试试
wu_07 2002-12-06
  • 打赏
  • 举报
回复
这个可以么??try

Converting DataWindow to Excel file
// ... Init docname
// ... GetFileOpenName or any other method

if dw_1.SaveAs(docname, HTMLTable!, True) = -1 then
MessageBox("Warning", "Unable to export data. Error writing to file!", Exclamation!)
return
end if


// Convert HTML file to Excel native format
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
excel.application.workbooks(1).saveas(docname, 39)
excel.application.workbooks(1).close()
end if

DESTROY excel
// done
htp_htp 2002-12-06
  • 打赏
  • 举报
回复
saveasascii
benneng 2002-12-05
  • 打赏
  • 举报
回复
to szpq:你的程序导出的EXCEL是空的,打开以后没有数据!
xlhl 2002-12-05
  • 打赏
  • 举报
回复
SAVEAS()多方便啊
888888888888 2002-12-05
  • 打赏
  • 举报
回复
分组表格有点难!我帮你看看。
szpqq 2002-12-05
  • 打赏
  • 举报
回复
string docname, named
integer value,li_excelok
if dw_print.rowcount()<1 then return
value = GetFileSaveName("Select File", &
docname, named, "DOC", &
"Text Files (*.TXT),*.TXT," + &
" Doc Files (*.DOC), *.DOC,"+" Excel Files (*.XLS), *.XLS,"+&
" DBF Files (*.DBF), *.DBF")

IF value = 1 THEN
dw_print.SaveAsAscii(docname)
else
return
end if
if messagebox("ÐÅÏ¢","ÏÖÔÚÐèÒªÓÃExcel±à¼­¸ÃÎĵµÂð£¿",question!,yesno!,2) = 2 then return
OLEObject ExcelServer
ExcelServer = CREATE OLEObject
li_excelok = ExcelServer.ConnectToNewObject( "excel.application" )
ExcelServer.Visible = True //excel??
ExcelServer.Workbooks.Open(docname)
蝈蝈太阳 2002-12-05
  • 打赏
  • 举报
回复
高手!
flyhot 2002-12-05
  • 打赏
  • 举报
回复
代码廖出来看看!
realfool 2002-12-05
  • 打赏
  • 举报
回复
用DDE一个单元格一个单元格的导吧。
我更愿意SAVEAS()后用OLE加计算列。
benneng 2002-12-05
  • 打赏
  • 举报
回复
以下是我的程序:
string ywry1,sffdw1,djhm1,lgrq1,chm1,hc1,tdh1,portd1,rpw1,compute1,compute2
string ls_model_path,ls_model_file,k
oleobject excelserver
integer count,ret,i,j,pd
long row=1
real sumje
ls_model_path = gs_model_path + '1.xls'
ls_model_file = '1.xls'
count=dw_1.rowcount()
ret = getfileopenName('',ls_model_path,ls_model_file,'xls','Excel 文档,*.xls')
if ret<>1 then
messagebox('警告','没有找到模板文件!')
return
end if
excelserver=create oleobject
ret=excelserver.connecttonewobject("excel.application")
if ret<0 then
messagebox('错误',"不能启动EXCEL!")
excelserver.disconnectobject()
destroy excelserver
return
end if
ExcelServer.Visible = TRUE
excelserver.application.workbooks.add(ls_model_path)
if isnull(excelserver) then
return
end if
string ls_ywry,ls_ywry_s,ls_dw,ls_dw_s
string ls_djhm,ls_lgrq,ls_chm,ls_hc,ls_tdh,ls_portd,ls_sf
long ll_add
decimal ldec_usb,ldec_rmb,ldec_usb_hj,ldec_rmb_hj,ldec_usb_hj1,ldec_rmb_hj1
decimal ldec_usb_hj2,ldec_rmb_hj2,ldec_usb_hj3,ldec_rmb_hj3

ls_ywry = ''
ls_ywry_s = ''
ls_dw = ''
ls_dw_s = ''
ldec_usb = 0
ldec_rmb = 0
ldec_usb_hj = 0
ldec_rmb_hj = 0
ldec_usb_hj1 = 0
ldec_rmb_hj1 = 0
ldec_usb_hj2 = 0
ldec_rmb_hj2 = 0
ldec_usb_hj2 = 0
ldec_rmb_hj2 = 0
ldec_usb_hj3 = 0
ldec_rmb_hj3 = 0
ll_add = 0

for i = 1 to count
ls_ywry = trim(dw_1.getitemstring(i,'ywry'))
ls_dw = trim(dw_1.getitemstring(i,'sffdw'))
ls_djhm = trim(dw_1.getitemstring(i,'djhm'))
ls_lgrq = trim(dw_1.getitemstring(i,'lgrq'))
ls_chm = trim(dw_1.getitemstring(i,'chm'))
ls_hc = trim(dw_1.getitemstring(i,'hc'))
ls_tdh = trim(dw_1.getitemstring(i,'tdh'))
ls_portd = trim(dw_1.getitemstring(i,'portd'))
ls_sf = trim(dw_1.getitemstring(i,'row_column'))
ldec_usb = dw_1.getitemnumber(i,'compute_0011_1')
if isnull(ldec_usb) then
ldec_usb = 0
end if
ldec_rmb = dw_1.getitemnumber(i,'compute_0011')
if isnull(ldec_rmb) then
ldec_rmb = 0
end if

if i <> 1 then
if ls_dw_s <> ls_dw then
ExcelServer.Application.ActiveSheet.Cells(i + ll_add + 1,2).value = ls_dw_s
ExcelServer.Application.ActiveSheet.Cells(i + ll_add + 1,9).value = ldec_rmb_hj1
ExcelServer.Application.ActiveSheet.Cells(i + ll_add + 1,10).value = ldec_usb_hj1
ldec_usb_hj1 = 0
ldec_rmb_hj1 = 0
ll_add = ll_add + 1
end if
if ls_ywry_s <> ls_ywry then
ExcelServer.Application.ActiveSheet.Cells(i + ll_add + 1,1).value = ls_ywry_s
ExcelServer.Application.ActiveSheet.Cells(i + ll_add + 1,9).value = ldec_rmb_hj2
ExcelServer.Application.ActiveSheet.Cells(i + ll_add + 1,10).value = ldec_usb_hj2
ldec_usb_hj2 = 0
ldec_rmb_hj2 = 0
ll_add = ll_add + 1
end if
end if

if ls_sf = '收' then
ldec_usb_hj = ldec_usb + ldec_usb_hj
ldec_usb_hj1 = ldec_usb + ldec_usb_hj1
ldec_usb_hj2 = ldec_usb + ldec_usb_hj2
ldec_usb_hj3 = ldec_usb + ldec_usb_hj3
ldec_rmb_hj = ldec_rmb + ldec_rmb_hj
ldec_rmb_hj1 = ldec_rmb + ldec_rmb_hj1
ldec_rmb_hj2 = ldec_rmb + ldec_rmb_hj2
ldec_rmb_hj3 = ldec_rmb + ldec_rmb_hj3
else
ldec_usb_hj = (-1) * ldec_usb + ldec_usb_hj
ldec_usb_hj1 = (-1) * ldec_usb + ldec_usb_hj1
ldec_usb_hj2 = (-1) * ldec_usb + ldec_usb_hj2
ldec_usb_hj3 = (-1) * ldec_usb + ldec_usb_hj3
ldec_rmb_hj = (-1) * ldec_rmb + ldec_rmb_hj
ldec_rmb_hj1 = (-1) * ldec_rmb + ldec_rmb_hj1
ldec_rmb_hj2 = (-1) * ldec_rmb + ldec_rmb_hj2
ldec_rmb_hj3 = (-1) * ldec_rmb + ldec_rmb_hj3
end if

ExcelServer.Application.ActiveSheet.Cells(i + ll_add + 1,1).value = ls_ywry
ExcelServer.Application.ActiveSheet.Cells(i + ll_add + 1,2).value = ls_dw
ExcelServer.Application.ActiveSheet.Cells(i + ll_add + 1,3).value = ls_djhm
ExcelServer.Application.ActiveSheet.Cells(i + ll_add + 1,4).value = ls_lgrq
ExcelServer.Application.ActiveSheet.Cells(i + ll_add + 1,5).value = ls_chm
ExcelServer.Application.ActiveSheet.Cells(i + ll_add + 1,6).value = ls_hc
ExcelServer.Application.ActiveSheet.Cells(i + ll_add + 1,7).value = ls_tdh
// ExcelServer.Application.ActiveSheet.Cells(i + ll_add + 1,8).value = ls_portd
ExcelServer.Application.ActiveSheet.Cells(i + ll_add + 1,8).value = ls_sf
ExcelServer.Application.ActiveSheet.Cells(i + ll_add + 1,9).value = ldec_rmb
ExcelServer.Application.ActiveSheet.Cells(i + ll_add + 1,10).value = ldec_usb


ls_ywry_s = ls_ywry
ls_dw_s = ls_dw
next
ExcelServer.Application.ActiveSheet.Cells(i + ll_add + 1,2).value = ls_dw_s
ExcelServer.Application.ActiveSheet.Cells(i + ll_add + 1,9).value = ldec_rmb_hj1
ExcelServer.Application.ActiveSheet.Cells(i + ll_add + 1,10).value = ldec_usb_hj1
ExcelServer.Application.ActiveSheet.Cells(i + ll_add + 2,1).value = ls_ywry_s
ExcelServer.Application.ActiveSheet.Cells(i + ll_add + 2,9).value = ldec_rmb_hj2
ExcelServer.Application.ActiveSheet.Cells(i + ll_add + 2,10).value = ldec_usb_hj2
ExcelServer.Application.ActiveSheet.Cells(i + ll_add + 3,1).value = 'Total'
ExcelServer.Application.ActiveSheet.Cells(i + ll_add + 3,9).value = ldec_rmb_hj3
ExcelServer.Application.ActiveSheet.Cells(i + ll_add + 3,10).value = ldec_usb_hj3

excelserver.disconnectobject()
destroy excelserver

611

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder DataWindow
社区管理员
  • DataWindow社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧