hur.cn - 华软网

 热门搜索

谁能帮我看看怎么使用这段代码(关于数据导出到Excel)

  作者:未知    来源:网络    更新时间:2019/12/1
为什么在我这里不能实现啊?这个函数怎么创建?

//函数功能:导出EXCEL文档

//函数名:f_outputtoexcel_new

//输入: adw - datawindow,指定的数据窗口

//前往值: Integer

constant integer ppLayoutBlank = 12

OLEObject ole_object

ole_object = CREATE OLEObject


integer li_ret


li_ret = ole_object.ConnectToObject("","Excel.Application")

IF li_ret <> 0 THEN

//如果Excel还没有打开,则新建。

li_ret = ole_object.ConnectToNewObject("Excel.Application")

if li_ret <> 0 then

MessageBox('OLE毛病','OLE没法连接!毛病号:' + string(li_ret))

return 0

end if

ole_object.Visible = True

END IF


pointer oldpointer


oldpointer = SetPointer(HourGlass!)


ole_object.Workbooks.Add


long ll_colnum,ll_rownum

string ls_value

string ls_objects,ls_obj,ls_objs[],ls_objtag[]

long ll_pos,ll_len,ll_num = 0

ls_objects = trim(adw.Describe('datawindow.Objects'))

do while (pos(ls_objects,"~t") > 0)

ll_pos = pos(ls_objects,"~t")

ll_len = ll_pos - 1

ls_obj = left(ls_objects,ll_len)

if (adw.Describe(ls_obj + '.type') = 'column' or &
adw.Describe(ls_obj + '.type') = 'compute') and &
(adw.Describe(ls_obj + '.band') = 'detail') and (ls_obj <> "asd") then
ll_num += 1
ls_objs[ll_num] = ls_obj
ls_objtag[ll_num] = adw.Describe(ls_obj + '.tag')
end if
ls_objects = right(ls_objects,len(ls_objects) - ll_pos)
loop


//获得数据窗口数据的列数与行数(行数应该是数据行数 + 1)

ll_colnum = ll_num

ll_rownum = adw.rowcount() + 1


string ls_colname

integer i,j,k

for i = 1 to ll_colnum

//获得题目头的名字

ls_value = ls_objtag[i]

ole_object.cells(1,i).value = ls_value

next


string column_name

for i = 2 to ll_rownum

for j = 1 to ll_colnum

column_name = ls_objs[j]

if adw.Describe(column_name + '.type') = 'column' then

ls_value = adw.Describe("Evaluate('LookupDisplay("+column_name+")',"+string(i - 1)+")")

end if

if adw.Describe(column_name + '.type') = 'compute' then

ls_value = adw.Describe("Evaluate('" + adw.Describe(column_name + '.expression') + "',"+string(i - 1)+")")

end if

ole_object.cells(i,j).value = ls_value

next

next


SetPointer(oldpointer)


ole_object.disconnectobject()

DESTROY ole_object


return 1
------华软网友回答------
有个简单的方法!
好像是DW导出Html资料,再用Excel打开就能够了!
------华软网友回复------
能不能给我一段详细代码啊?我不知道怎么弄。
------华软网友回复------
dw_1.SaveAsAscii('d:\yb\科室费用月报表.txt')
OLEObject ole_object
ole_object = CREATE OLEObject

integer li_ret

li_ret = ole_object.ConnectToObject("d:\yb\科室费用月报表.txt",'excel.Application')
IF li_ret <> 0 THEN
//如果Excel还没有打开,则新建。
li_ret = ole_object.ConnectToNewObject("excel.Application")
if li_ret <> 0 then
MessageBox('OLE毛病','OLE没法连接!毛病号:' + string(li_ret))
ole_object.disconnectobject()
DESTROY ole_object

end if
ole_object.Visible = true
END IF

ole_object.workbooks.open('d:\yb\科室费用月报表.txt')
------华软网友回复------
这个绝对能够用的,
string str_savename,named,s_grxh
int  excelok,li_net
long li_count,i

oleobject excelserver
excelserver=create oleobject 
excelok=excelserver.connecttonewobject("excel.application") 

//检查前往值,以保证已成功地连接到了Excel
if excelok <> 0 then 
 messagebox("信息提醒","连接EXCEL失利,请检查计算机中是否装置了EXCEL!") 
 return -1
end if 
li_net = GetFileOpenName("选择资料", str_savename,named,"xls","Excel资料(*.xls),*.xls") 
if li_net > 0 then
 if str_savename = "" then  return -1
 //删除打印机清点表
 DELETE FROM Erp_pp_qt_jsj_dyjpd using sqlca ;
 if sqlca.sqlcode<>0 then
rollback using sqlca;
messagebox('毛病提醒','删除打印机清点表失利!')
return 0
 end if 
 commit using sqlca;
 dw_2.reset()
 excelserver.workbooks.open(str_savename) 
 excelserver.activesheet.cells.copy
 li_count = dw_2.importclipboard(2)  //导入数据 
 clipboard("") 

 excelserver.quit() 
 excelserver.disconnectobject() 
 destroy excelserver 
 integer i_rowscount
i_rowscount=dw_2.rowcount()
st_record.text='当前记录数:'+string(i_rowscount)
 return 1
else
 messagebox('信息提醒','没有指定导入资料!')
 return -1
end if
------华软网友回复------
301的代码我能用。谢谢!1020的我也试了,可你的是导出Excel。不过也一样谢谢你!      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。