1.OLEObject ole_object , ole_workbooksole_object = CREATE OLEObjectIF ole_object.ConnectToNewObject("Excel.Application") <> 0 THEN MessageBox('OLE错误','OLE无法连接!')returnEND IFole_object.workbooks.addole_object.Visible = Trueole_workbooks = ole_object.Worksheets(1)ole_workbooks.cells(1,1).value="id" //数据窗口的标题就是表头ole_workbooks.cells(1,2).value="用户名"ole_workbooks.cells(1,3).value="密码"// ole_workbooks.cells(1,4).value="机器号"// ole_workbooks.cells(1,5).value="开始时间"// ole_workbooks.cells(1,6).value="结束时间"long l_rowfor l_row = 1 to dw_1.rowcount()ole_workbooks.cells(l_row+1,1).value=dw_1.getitemnumber(l_row ,1)ole_workbooks.cells(l_row+1,2).value=dw_1.getitemstring(l_row ,2)ole_workbooks.cells(l_row+1,3).value=dw_1.getitemstring(l_row ,3)// ole_workbooks.cells(l_row,4).value=dw_1.getitemnumber(l_row,4)// ole_workbooks.cells(l_row,5).value=dw_1.getitemtime(l_row,5)// ole_workbooks.cells(l_row,6).value=dw_1.getitemtime(l_row,6)nextole_workbooks.SaveAs ("d:\data.xlsx")ole_object.quit()Ole_Object.DisConnectObject()Destroy Ole_Objectdestroy ole_workbooks2PB数据窗口导出到EXCEL函数function f_oletoexcel(adw datawindow,title string,as_file string)Oleobject ole_objectString s_english="ABCDEFGHIJKLMNOPQRSTUVWXYZ"String ls_obj,ls_objs[],ls_objtag[],ls_width[],ls_value,column_name,ls_coltype,ls_range Integer li_ret,i,li_grouprow,li_newgrouprow,j,row,groupflag,detailflag,sumflagLong ll_row,ll_num,ll_column,ll_groupnum,ll_sumrowInt li_rtn=-9dec ld_widthPointer oldpointergroupflag=0detailflag=1sumflag=1/*-------打开EXCELL文档-------*/ole_object = CREATE OLEObjectli_ret = ole_object.ConnectToObject("","Excel.Application")IF li_ret <> 0 THEN/*--如果Excel还没有打开则新建--*/li_ret = ole_object.ConnectToNewObject("Excel.Application")if li_ret <> 0 thenMessageBox('OLE错误','OLE无法连接!错误号:' + string(li_ret))li_rtn = -1goto totheendend ifole_object.Visible = False //一般自动保存时设为不可视END IF/*-------打开文档完毕-------*/oldpointer = SetPointer(HourGlass!)ole_object.Workbooks.Addll_row = 1ll_column =long(adw.Object.DataWindow.Column.Count)ll_num = 1//"#1"可以指向第一列,#2则指向datawindow的第二列FOR i = 1 TO ll_columnIF adw.Describe("#"+String(i)+".Visible")="1" and adw.Describe("#"+String(i)+".Band")="detail" THENyield()ls_obj = adw.Describe("#"+String(i)+".name")ls_objs[ll_num] = ls_objls_objtag[ll_num]=adw.Describe(ls_obj+"_t.text") //字段名称的显示值// messagebox(ls_obj,adw.Describe(ls_obj+"_t.text"))ls_width[ll_num]= adw.Describe(ls_obj + '.width') //每列的宽度ll_num++END IFNEXT//messagebox("",ll_column)ll_column = upperbound(ls_objs)if ll_column <= 26 thenls_range = Char(64+ll_column)elsels_range = char(64+integer((ll_column - 1)/26))+char(64+integer(mod((ll_column - 1),26)+1))end ifIF trim(title)<>"" THENll_row = 2/*-------生成标题-------*/ole_object.Cells(1,1).Value =titleole_object.Range('A1').Selectole_object.Selection.Font.Size =24ole_object.selection.HorizontalAlignment =3ole_object.Range('A1:'+ls_range+'1').Selectole_object.Range('A1:'+ls_range+'1').MergeEND IF/*-------设置标题栏-------*/for i = 1 to ll_columnyield()ls_value = ls_objtag[i]ole_object.cells(ll_row,i).value = ls_value //1if isnull(ls_width[i]) thenld_width=12elseld_width=dec(ls_width[i])/35end ifole_object.Columns(i).ColumnWidth=ld_widthole_object.Columns(i).HorizontalAlignment =3ole_object.Columns(i).Borders.LineStyle= 1ole_object.Columns(i).Font.Bold =TruenextIF groupflag = 1 and detailflag = 0 THENll_row ++END IFli_grouprow = 0ll_groupnum = 0IF groupflag = 1 THENFOR i = 1 to adw.rowcount()li_newgrouprow = adw.findgroupchange(i,1)IF li_newgrouprow = i THENIF li_grouprow > 0 THENrow = i*detailflag + ll_row + ll_groupnumfor j = 1 to ll_columnyield()column_name = ls_objs[j]+"_c"ls_value = adw.Describe("Evaluate('" + adw.Describe(column_name + '.expression') + "',"+string(li_grouprow)+")")ls_coltype=adw.Describe(column_name+'.coltype')IF isnull(ls_value) or ls_value="!" or ls_value = "?" THENls_value = ""END IFif pos(upper(ls_coltype),"CHAR")>0 then //对字符型数据处理ole_object.cells(row,j).NumberFormat ="@"end ifole_object.cells(row,j).Font.Bold =trueole_object.cells(row,j).value = ls_valuenextll_groupnum++li_grouprow = li_newgrouprowELSEli_grouprow = li_newgrouprowEND IFIF detailflag = 1 THENrow = i + ll_row + ll_groupnumfor j = 1 to ll_columnyield()column_name = ls_objs[j]if adw.Describe(column_name + '.type') = 'column' thenls_value = adw.Describe("Evaluate('LookupDisplay("+column_name+")',"+string(i)+")") end ifif adw.Describe(column_name + '.type') = 'compute' thenls_value = adw.Describe("Evaluate('" + adw.Describe(column_name + '.expression') + "',"+string(i)+")")end ifIF isnull(ls_value) or ls_value="!" or ls_value = "?" THENls_value = ""END IFls_coltype=adw.Describe(column_name+'.coltype')if pos(upper(ls_coltype),"CHAR")>0 then //对字符型数据处理ole_object.cells(row,j).NumberFormat ="@"end ifole_object.cells(row,j).Font.Bold =falseole_object.cells(row,j).value = ls_valuenextEND IFELSEIF detailflag = 1 THENrow = i + ll_row + ll_groupnumfor j = 1 to ll_columnyield()column_name = ls_objs[j]if adw.Describe(column_name + '.type') = 'column' thenls_value = adw.Describe("Evaluate('LookupDisplay("+column_name+")',"+string(i)+")")end ifif adw.Describe(column_name + '.type') = 'compute' thenls_value = adw.Describe("Evaluate('" + adw.Describe(column_name + '.expression') + "',"+string(i)+")")end ifIF isnull(ls_value) or ls_value="!" or ls_value = "?" THENls_value = ""END IFls_coltype=adw.Describe(column_name+'.coltype')if pos(upper(ls_coltype),"CHAR")>0 then //对字符型数据处理ole_object.cells(row,j).NumberFormat ="@"end ifole_object.cells(row,j).Font.Bold =falseole_object.cells(row,j).value = ls_valuenextEND IFEND IFNEXTll_sumrow = i*detailflag + ll_row + ll_groupnumIF groupflag = 1 THENrow = i*detailflag + ll_row + ll_groupnumll_sumrow++for j = 1 to ll_columnyield()column_name = ls_objs[j]+"_c"ls_value = adw.Describe("Evaluate('" + adw.Describe(column_name + '.expression') + "',"+string(li_grouprow)+")")ls_coltype=adw.Describe(column_name+'.coltype')IF isnull(ls_value) or ls_value="!" or ls_value = "?" THENls_value = ""END IFif pos(upper(ls_coltype),"CHAR")>0 then //对字符型数据处理ole_object.cells(row,j).NumberFormat ="@"end ifole_object.cells(row,j).Font.Bold =trueole_object.cells(row,j).value = ls_valuenextEND IFELSEFOR i = 1 TO adw.rowcount()for j = 1 to ll_columnyield()column_name = ls_objs[j]if adw.Describe(column_name + '.type') = 'column' thenls_value = adw.Describe("Evaluate('LookupDisplay("+column_name+")',"+string(i)+")") //得到所见字段数据end ifif adw.Describe(column_name + '.type') = 'compute' thenls_value = adw.Describe("Evaluate('" + adw.Describe(column_name + '.expression') + "',"+string(i)+")")//得到所见计算字段数据end ifIF isnull(ls_value) or ls_value="!" or ls_value = "?" THENls_value = ""END IFls_coltype=adw.Describe(column_name+'.coltype')if pos(upper(ls_coltype),"CHAR")>0 then //对字符型数据处理ole_object.cells(ll_row+i,j).NumberFormat ="@"end ifole_object.cells(ll_row+i,j).Font.Bold =falseole_object.cells(ll_row+i,j).value = ls_valuenextNEXTll_sumrow = ll_row + iEND IFdebugbreak()IF sumflag = 1 THENfor j = 1 to ll_columnyield()column_name = ls_objs[j]+"_sum"if adw.Describe(column_name+".Name") <>"!" thenls_value = adw.Describe("Evaluate('" + adw.Describe(column_name + '.expression') + "',"+string(1)+")")ls_coltype=adw.Describe(column_name+'.coltype')IF isnull(ls_value) or ls_value="!" or ls_value = "?" THENls_value = ""END IFif pos(upper(ls_coltype),"CHAR")>0 then //对字符型数据处理ole_object.cells(ll_sumrow,j).NumberFormat ="@"end ifole_object.cells(ll_sumrow,j).Font.Bold =trueole_object.cells(ll_sumrow,j).value = ls_valueend ifnextEND IFif FileExists ( as_file ) thenif messagebox("Microsoft Excel","在当前位置发现已经存在名为"+as_file+" 的文件。