pb导出excel(直接导出)

合集下载

如何将pb的交叉报表转换成excel形式用的办法是写一个

如何将pb的交叉报表转换成excel形式用的办法是写一个

如何将PB 的交叉报表转换成EXCEL 形式,用的办法是写一个通用的转换函数。

主函数部分:(还用到了 PFC 的字串处理的一个函数和在本对象中的一个取值 函数)//=========================================================== =========矚慫润厲钐瘗睞枥庑赖賃軔。

// [P UBLIC] Fu nction uf_data2excel 在 u_data2word in herited from n onv isualobject 聞創沟燴鐺險爱氇谴净祸測。

//- --------------------------------------------- 残骛楼諍锩瀨濟溆塹籟婭骤。

//说明:将数据倒入excel 中,支持计算列及显示格式,要求在题头的计算列要写 tag 值// -------------------------------------------- // 参数 1:[value] datawindow adw //说明:数据窗口// -------------------------------------------- //返回:(INTEGER ) 成功返回1,不成功返回0 // -------------------------------------------- // 作者:cwl 日期:2002.03.18 〃==============================================厦礴恳蹒骈時盡继價骚卺癩。

〃变更日志:020515加入对交叉表倒出的支持(主要是修改了保存题头部分)con sta nt in teger pp LayoutBla nk = OLEObject ole_object ole_object = CREATE OLEObjectin teger li_ret,li_crosstab=O long ll_col nu m,ll_row num stri ng ls_valuestri ng ls_objects,ls_obj,ls_objs[],ls_objtag[] long ll_p os,ll_le n,ll_num = 0 //题头区 long ll_head numstri ng ls_head[],ls_headtag[] //合计区long ll_su mnu m,i=1,start po s=1,e ndp os,li_ posstri ng ls_sum[],ls_sumtag[],ls_bi nd,toke n[],list,ls_te mp,l s_crosstabcol茕桢广鳓鯡选 块网羈泪镀齐。

PB导出EXCEL

PB导出EXCEL

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+" 的文件。

PB中 把DW导出到Excel

PB中 把DW导出到Excel

PB中把DW导出到Excel,与Excel//============================================================================= =// 事件: cb_export::clicked()//------------------------------------------------------------------------------// 描述: 把收费单的内容导入到excel中,Excel为2003//------------------------------------------------------------------------------// 返回值: long//------------------------------------------------------------------------------// 作者: Ran (Sunday_hl) 日期: 2006.04.12-13//------------------------------------------------------------------------------// 修改历史:// 整理时间2006.08.22//=============================================================================String docname,namedString current_dirInteger Value//============================================================================= ===//提示文件保存地点current_dir = GetCurrentDirectory()Value = GetFileSaveName("文件选择",docname,named,"xls","Excel文档(*.xls), *.xls")//恢复路径ChangeDirectory(current_dir)IF Value <> 1 THEN RETURNIF FileExists(docname) THENIF MessageBox("提示信息","“" + docname + "”文档已经存在,~r~n是/否覆盖此文档?",Information!,YesNoCancel!,1) <> 1 THENRETURNEND IFEND IF//============================================================================ //使用ole向excel中倒入数据OleObject uo_world,uo_sheeluo_world = CREATE OleObjectuo_sheel = CREATE OleObjectIF uo_world.ConnectToNewObject("Excel.Application") <> 0 THEN //把ole连接到excel MessageBox('连接到Excel错误','Excel无法连接!请确认是否已经安装了Excel!~r~n或者与管理员联系!',Exclamation!)DESTROY uo_sheelDESTROY uo_worldRETURNEND IF//============================================================================= ===//连接上后,对Excel进行操作TRY //try例行例外控制uo_world.DisplayAlerts = False //强制执行,不用提示uo_world.workbooks.add() //创建一个新的工作薄uo_sheel = uo_world.ActiveSheet() //得到当前工作表uo_sheel.Rows.Font.size = 10 //把默认的字体设为10号uo_sheel.Rows.RowHeight = 15 //把默认的行高设为15uo_sheel.Range("A1:I5").Merge() //合并单元格uo_sheel.Range("A1:I5").Value = "镇江市XXXXXXXXXX检测收费明细" //为单元格赋值uo_sheel.Range("A1:I5").Font.Bold = true //字体显示为粗体uo_sheel.Range("A1:I5").Font.size = 18 //把区域字体定义为18号uo_sheel.Range("A1:I5").HorizontalAlignment = 3 //区域内的字体居中,1是默认2是左对齐,3是居中,4是右对齐uo_sheel.Range("A6:G6").Merge()uo_sheel.Range("H6:I6").Merge()uo_sheel.Range("H6:I6").Value = today()uo_sheel.Range("H6:I6").HorizontalAlignment = 3uo_sheel.Range("A6:I6").Borders[4].LineStyle = 1 //为区域单元格画下画线四个边顺时针旋转,线类型1为实线2为虚线,其他不知道//都差不多了,废话的删除掉了.....................................................uo_sheel.Range("A9:B9").Merge()uo_sheel.Range("A9:B9").Value = "软件流水号:"uo_sheel.Range("A9:B9").HorizontalAlignment = 4uo_sheel.Range("C9:I9").Merge()uo_sheel.Range("C9:I9").NumberFormat = "0" //设置显示格式uo_sheel.Range("C9:I9").WrapText = Trueuo_sheel.Range("C9:I9").value = dw_1.Object.accept_no[dw_1.getrow()]uo_sheel.Range("C9:I9").HorizontalAlignment = 2uo_sheel.Range("A10:B10").Merge()uo_sheel.Range("A10:B10").Value = "备忘录:"uo_sheel.Range("A10:B10").HorizontalAlignment = 4uo_sheel.Range("C10:I10").Merge()uo_sheel.Range("C10:I10").HorizontalAlignment = 2uo_sheel.Range("A11:B11").Merge()uo_sheel.Range("A11:B11").Value = "收费依据:"uo_sheel.Range("A11:B11").HorizontalAlignment = 4uo_sheel.Range("C11:I11").Merge()uo_sheel.Range("C11:I11").Value = "收费依据: <<XXXXX>> 苏价费(1996)~r~n417号,苏财综(96)153号。

PB操作Excel文件

PB操作Excel文件

PB调用EXCEL的操作不失为一种好的报表输出方式2009-05-15 23:17 928人阅读评论(0) 收藏举报对于较为中国化的报表,虽然后dw这个坚强后盾,但是也难不住繁复疲劳的应对。

不过我们可以知道,数据的输出,都是居于table的栏位或者计算字段。

只是很多统计的模式和展现模式不同。

我在一年前作完一个系统,可是客户几乎隔三差五有新的东东要输出报表。

终于我发现。

让客户先在excel里弄好,然后再写程序来输出也是一个不错的方法。

关键是,客户给的东西不必要再进自己的系统,所以数据不会发生什么问题。

如果本身软件有任何问题,那能从excel里的写的结果很容易看得出来。

虽然写excel表格要花很多时间,但是减少了输入导入和输出的一些麻烦。

转载excel操作大全:powerbuilder操作excel命令大全(例子的有些地方不对!)2006-12-04 16:431.创建Excel对象eole=CREATEOBJEC T(′Excel.application′)2.添加新工作簿eole.Workbooks.add3.设置第3个工作表为激活工作表eole.Worksheets(″sheet3″).Activate4.打开指定工作簿eole.Workbooks.Open(″c:/temp/ll.xls″)5.显示Excel窗口eole.visible=.t.6.更改Excel标题栏eole.Caption=″VFP应用程序调用Microsoft Excel″7.给单元格赋值eole.cells(1,4).value=XM(XM为数据库字段名)8.设置指定列的宽度(单位:字符个数)eole.ActiveSheet.Columns(1).ColumnWidth=59.设置指定行的高度(单位:磅)eole.ActiveSheet.Rows(1).RowHeight=1/0.035(设定行高为1厘米,1磅=0.035厘米)10.在第18行之前插入分页符eole.Worksheets(″Sheet1″).Rows(18).P ageBreak=111.在第4列之前删除分页符eole.ActiveSheet.Columns(4).PageBreak=012.指定边框线宽度(Borders参数如下)ole.ActiveSheet.Range(″b3:d3″).Borders(2).Weight=313.设置四个边框线条的类型eole.ActiveSheet.Range(″b3:d3″).Borders(2).LineStyle=1(其中Borders参数:1-左、2-右、3-顶、4-底、5-斜、6-斜/;LineStyle值:1与7-细实、2-细虚、4-点虚、9-双细实线)14.设置页眉eole.ActiveSheet.PageSetup.CenterHeader=″报表1″15.设置页脚eole.ActiveSheet.PageSetup.CenterFooter=″第&P页″16.设置页眉到顶端边距为2厘米eole.ActiveSheet.PageSetup.HeaderMargin=2/0.03517.设置页脚到底边距为3厘米eole.ActiveSheet.PageSetup.FooterMargin=3/0.03518.设置顶边距为2厘米eole.ActiveSheet.PageSetup.TopMargin=2/0.035 19.设置底边距为4厘米eole.ActiveSheet.PageSetup.BottomMargin=4/0.035 20.设置左边距为2厘米veole.ActiveSheet.PageSetup.LeftMargin=2/0.035 21.设置右边距为2厘米eole.ActiveSheet.PageSetup.RightMargin=2/0.035 22.设置页面水平居中eole.ActiveSheet.PageSetup.CenterHorizontally=.t. 23.设置页面垂直居中eole.ActiveSheet.PageSetup.CenterVertically=.t. 24.设置页面纸张大小(1-窄行8 5 11 39-宽行14 11) eole.ActiveSheet.PageSetup.PaperSize=125.打印单元格网线eole.ActiveSheet.PageSetup.PrintGridlines=.t.26.拷贝整个工作表edRange.Copy27.拷贝指定区域eole.ActiveSheet.Range(″A1:E2″).Copy28.粘贴eole.WorkSheet(″Sheet2″).Range(″A1″).PasteSpecial 29.在第2行之前插入一行eole.ActiveSheet.Rows(2).Insert30.在第2列之前插入一列eole.ActiveSheet.Columns(2).Insert31.设置字体eole.ActiveSheet.Cells(2,1)=″黑体″32.设置字体大小eole.ActiveSheet.Cells(1,1).Font.Size=25 33.设置字体为斜体eole.ActiveSheet.Cells(1,1).Font.Italic=.t. 34.设置整列字体为粗体eole.ActiveSheet.Columns(1).Font.Bold=.t. 35.清除单元格公式eole.ActiveSheet.Cells(1,4).ClearContents 36.打印预览工作表eole.ActiveSheet.PrintPreview37.打印输出工作表eole.ActiveSheet.PrintOut38.工作表另为eole.ActiveWorkbook.SaveAs(″c:/temp/22.xls″) 39.放弃存盘eole.ActiveWorkbook.saved=.t.40.关闭工作簿eole.Workbooks.close41.退出Exceleole.quit42 合并string worksheet,beginRowcol,EndRowColMyOLE.ActiveWorkBook.Sheets(worksheet).Range(BeginRowCol ":" EndRowCol).Select MyOLE.ActiveWorkBook.Sheets(worksheet).Range(BeginRowCol ":" EndRowCol).Merge43 sheet改名MyOLE.ActiveWorkBook.Sheets(olename).selectMyOLE.ActiveWorkBook.Sheets(olename).name=newnameMyOLE=Create OLEObjectConnectErr=MyOLE.ConnectToNewObject ("excel.Application")MyOLE.visible=false//打开指定的XLS文件激活workbooksMyOLE.application.workbooks.Open (FilePath)//对XLS文件进行了改动以后,在关闭该文件时是否需要向用户提出警告。

pb与excel之间导入导出处理

pb与excel之间导入导出处理

pb与excel之间导入导出处理gf_save_excel_to_txt(as_excel_filename string,as_text_filename string)//把文件名为as_excel_filename的Excel文件另存为文件名为as_text_filename 的Text文件//返回:另存是否成功//删除Text文件If DeleteFile(as_text_filename) Then//删除存在的Text文件成功OLEObject l_olel_ole = Create OLEObject;If l_ole.ConnectToNewObject("Excel.Application") = 0 Then//连接到Excell_ole.Application.DisplayAlerts = False //关闭警告消息对话框,防止退出Excel时提示l_ole.Application.Workbooks.Open(as_excel_filename) //打开Excel文件l_ole.Application.ActiveWorkbook.SaveAs(as_text_filename,-4158) //把打开的Excel文件另存为Text文件,第二参数表示数据以制表符TAB分隔l_ole.Application.Quit() //退出ExcelElseMessagebox(\'错误\',\'无法建立与Excel的连接!\',StopSign!)Destroy l_oleReturn FalseEnd IfDestroy l_oleReturn TrueElse//无法删除Text文件Return FalseEnd If保存excel文件:要想选择目录可以这样string ls_docname, ls_named //文件路径,文件名integer li_rtli_rt = GetFileSaveName("选择保存路径并输入保存文件名" + string(jj),ls_docname, ls_named, &"Excel", &"Excel Files (*.XLS),*.XLS," + &" TXT Files (*.TXT),*.TXT")if li_rt = 1 then//转存dw_x.saveasascii(ls_docname,"~t","") end if。

在PB中导出Excel表

在PB中导出Excel表

在PB中导出Excel表关于在PB中导出Excel表的问题应该是个老问题了,大家讨论了不知道有多少年了,今天我也遇到了这个问题,上网找了半天大家说什么的都有。

总结了一下,把我看到的都贴出来,呵呵。

一.// ... Init docname// ... GetFileOpenName or any other methodif dw_1.SaveAs(docname, HTMLTable!, True) = -1 thenMessageBox("Warning", "Unable to export data. Error writing to file!", Exclamation!)returnend if// Convert HTML file to Excel native formatOLEObject excelexcel = CREATE OLEObjectif excel.ConnectToObject(docname) = 0 thenexcel.application.DisplayAlerts = FALSEexcel.application.workbooks(1).Parent.Windows(excel.application.workb ooks(1).Name).Visible = Trueexcel.application.workbooks(1).saveas(docname, 39)excel.application.workbooks(1).close()end ifDESTROY excel// done二.支持导出分组带、合计带,并且支持多层嵌套报表导出,基本是所见及所得。

///////////////////////////////////////////////////////////////////// ////////// Parameters : ad_dw : datawindow// as_file : file name// Returns : true/false : boolean// Description : Save the datawindow as a excel file./////////////////////////////////////////////////////////////////////// //////// author : purplekite// date : 2003-01-23///////////////////////////////////////////////////////////////////////////SetPointer(HourGlass!)//declare the local variableslong i, j, li_posstring ls_objects, ls_obj, ls_text, ls_err, ls_sqldatastore lds_saveas //导出数据窗datastore lds_sort //获得根据 object.x 排序的 (band = detail and visible = 1) 的 column/computeboolean lb_return //返回值string ls_pbver //pb 版本信息environment env //环境变量getenvironment(env)ls_pbver = string(env.pbmajorrevision)//创建排序列 datastorelds_sort = create datastorels_sql = 'column=(type=char(1) name = ztext dbname="ztext" )' + '~r~n' + &'column=(type=char(1) name = zcol dbname="zcol" )' + '~r~n' + &'column=(type=long name = zx dbname="zx" )' + '~r~n'ls_sql = 'release ' + ls_pbver + ';~r~ntable(' + ls_sql + ')'lds_sort.create(ls_sql, ls_err)if len(ls_err) > 0 thenlb_return = falsegoto lab1end if//准备数据====================================================//all controlsls_objects = ad_dw.Describe("datawindow.objects")//按~t位置作判断开始循环do while (pos(ls_objects,"~t") > 0)li_pos = pos(ls_objects,"~t")ls_obj = left(ls_objects,li_pos - 1)ls_objects = right(ls_objects,len(ls_objects) - li_pos)//(column or compute ) at detail and visibleIF (ad_dw.Describe(ls_obj+".type") = "column" or &ad_dw.Describe(ls_obj+".type") = "compute" ) AND &(ad_dw.Describe(ls_obj+".band") = "detail" ) AND &(ad_dw.Describe(ls_obj+".visible") = "1" ) THENls_text = ad_dw.describe(ls_obj + '_t.text')if ls_text <> '!' and ls_text <> '?' thenlds_sort.insertrow(0)lds_sort.setitem(lds_sort.rowcount(), 'ztext', ls_text)lds_sort.setitem(lds_sort.rowcount(), 'zcol', ls_obj)lds_sort.setitem(lds_sort.rowcount(), 'zx', long(ad_dw.describe(ls_obj + '.x')))end ifEND IFloop//the last controlls_obj = ls_objectsIF (ad_dw.Describe(ls_obj+".type") = "column" or &ad_dw.Describe(ls_obj+".type") = "compute" ) AND &(ad_dw.Describe(ls_obj+".band") = "detail" ) AND &(ad_dw.Describe(ls_obj+".visible") = "1" ) THENls_text = ad_dw.describe(ls_obj + '_t.text')if ls_text <> '!' and ls_text <> '?' thenlds_sort.insertrow(0)lds_sort.setitem(lds_sort.rowcount(), 'ztext', ls_text)lds_sort.setitem(lds_sort.rowcount(), 'zcol', ls_obj)lds_sort.setitem(lds_sort.rowcount(), 'zx', long(ad_dw.describe(ls_obj + '.x')))end ifEND IF//如果没有列则跳出if lds_sort.rowcount() < 1 then goto lab1//根据 object.x 排序lds_sort.setsort('zx A')lds_sort.sort()//创建导出 datastorelds_saveas = create datastorels_sql = ''for i = 1 to lds_sort.rowcount()ls_obj = lds_sort.getitemstring(i, 'zcol')ls_sql += 'column=(type=char(1) dbname="' + ls_obj + '" )' + '~r~n' nextls_sql = 'release ' + ls_pbver + ';~r~ntable(' + ls_sql + ')'lds_saveas.create(ls_sql, ls_err)if len(ls_err) > 0 thenlb_return = falsegoto lab1//向 lds_saveas 中写数据for i = 1 to ad_dw.rowcount()yield()//释放消息队列, 如果数据量较大, 可以使用这个函数lds_saveas.insertrow(0)for j = 1 to lds_sort.rowcount()ls_obj = lds_sort.getitemstring(j, 'zcol')if ad_dw.describe(ls_obj + '.type') = 'column' thenls_text = ad_dw.describe('evaluate(~'LookUpDisplay(' + ls_obj + ')~', ' + string(i) + ')')elsels_text = ad_dw.describe('evaluate(~'' + ls_obj + '~',' + string(i) + ')') end iflds_saveas.setitem(i, j, ls_text)nextnextlds_saveas.insertrow(1)for i = 1 to lds_sort.rowcount()lds_saveas.setitem(1, i, lds_sort.getitemstring(i, 'ztext'))next//准备数据完毕====================================================//saveas datawindowlb_return = (lds_saveas.saveas(as_file, excel!, false) = 1)lab1:destroy lds_sortdestroy lds_saveasSetPointer(Arrow!)return lb_return支持导出分组带、合计带,并且支持多层嵌套报表导出,基本是所见及所得。

PB报表数据向EXCEL转换的实现

PB报表数据向EXCEL转换的实现

PB报表数据向EXCEL转换的实现
潘宏标;黄福洪
【期刊名称】《农业网络信息》
【年(卷),期】2002(017)005
【摘要】@@ PowerBuilder是一种流行的开发数据库管理信息系统的可视化编程语言.管理信息系统最基本的两个组成部分是数据的输入和输出.
【总页数】3页(P35-37)
【作者】潘宏标;黄福洪
【作者单位】中国农业大学西区信息管理系,北京,100094;中国农业大学西区信息管理系,北京,100094
【正文语种】中文
【中图分类】TP3
【相关文献】
1.PB中借助Excel实现对复杂报表的输出与打印
2.运用PB与Excel自动实现医院统计报表
3.从Powerbuilder数据窗口到Excel报表转换通用函数的实现
4.PB数据窗口与Excel结合实现报表打印的一种方法
5.在PB开发中实现Excel复杂报表的程序设计
因版权原因,仅展示原文概要,查看原文内容请购买。

pb,word,表格

pb,word,表格

竭诚为您提供优质文档/双击可除pb,word,表格篇一:pb数据窗口导出word、excel文档dw2word,dw2xlspb数据窗口数据导出到word,excel,excel可以自定义修改excel文档的列宽对齐方式,字体样式等//dwsave2word调用oleglobaltypegf_exportdata2wordfromfunction_object endtypeforwardprototypesglobalsubroutinegf_exportdata2word(datawindowad_dat awindow)endprototypesglobalsubroutinegf_exportdata2word(datawindowad_dat awindow);stringls_filepathls_filepath=gf_getfilesavename()oleobjectoleobjectwordoleobjectword=createoleobject//连接wordifoleobjectword.connecttonewobject("word.applicatio n")0thenmessagebox("提示","ole连接错误!") returnendifoleobjectword.visible=false//word文档在操作数据过程中是否可见longcol_colnum,col_rownumconstantlongwdtablebehavior=1constantlongwdautoFitFixed=0constantlongwdcell=12stringstr_value//得到数据窗口数据的列数和行数(行数应该是数据行数+1)col_colnum=long(ad_datawindow.object.datawindow.col umn.count)col_rownum=ad_datawindow.rowcount()+1 //先在word文档中画好表格setpointer(hourglass!)oleobjectword.documents.addoleobjectword.activedocument.tables.add(oleobjectwo rd.selection.Range,#+string(i)+".name")+"_t"str_val ue=ad_datawindow.describe(ls_colname+".text") oleobjectword.selection.typetext(str_value)oleobjectword.selection.moveRight(wdcell)nextad_datawindow.setRedraw(false)oleobjectword.selection.moveleft(wdcell)setpointer(hourglass!)fori=2tocol_rownumforj=1tocol_colnumad_datawindow.scrolltorow(i-1)ad_datawindow.setcolumn(j)str_value=ad_datawindow.getitemstring(i-1,j)ifisnull(str_value)thenstr_value=endifoleobjectword.selection.moveRight(wdcell)oleobjectword.selection.typetext(str_value)nextnextad_datawindow.setredraw(true)constantlongwdFormatdocument=0//保存新建的文档oleobjectword.activedocument.saveas(ls_filepath,0,f alse,"",true,"",false,false,false,false,false) booleanlb_existlb_exist=Fileexists(ls_filepath)iflb_existthenmessagebox("提示","数据已经保存到"+ls_filepath) endif//断开ole连接oleobjectword.disconnectobject()destroyoleobjectwordendsubroutine//dwsave2xls调用oleglobaltypegf_dwsavetoexcelfromfunction_objectendtypeforwardprototypesglobalfunctionintegergf_dwsavetoexcel(datawindowadw) endprototypesglobalfunctionintegergf_dwsavetoexcel(datawindowadw );stringxlsname,namedintegervaluestringcol_del,first_delvalue=getFilesavename("另存",xlsname,named,"xls","xlsFiles(*.xls),*.xls")ifval ue=1thenadw.saveas(xlsname,excel!,tRue)elsereturn2endifconstantintegerpplayoutblank=12oleobjectole_objectole_object=cReateoleobjectintegerli_retli_ret=ole_object.connecttoobject("","excel.applica tion")iFli_ret0thenli_ret=ole_object.connecttonewobject("excel.applica tion")iFli_ret0thenmessagebox("ole错误","ole无法连接!~r~n错号:"+string(li_ret))Return0endiFole_object.visible=FalseendiFpointeroldpointeroldpointer=setpointer(hourglass!)ole_object.workbooks.open(xlsname)ole_object.worksheets[1].activatelongcolumncount,rowscountcolumncount=long(adw.object.datawindow.column.count )rowscount=adw.rowcount()+1stringls_colname[],ls_valueintegeri,jlonghandle为误handle=openchannel("excel",xlsname)//将列名转化为中文名称,即标题头名称forj=1tocolumncountls_colname[j]=adw.describe("#"+string(j)+".name")ls_value=adw.describe(ls_colname[j]+"_t"+".text")//ole_object.activesheet.cells[1,j].value=ls_value 开始的方法setRemote("R1c"+stRing(j),ls_value,handle)nextdatawindowchildldw_childlongll_foundForj=1tocolumncount//col_del标识将要删除不可见的列ifadw.describe("#"+string(j)+".visible")="0"then iFinteger(j) //当列小于26时,excel中用a-z表示列号first_del=char(integer(j)+64)else//大于26,小于等于52列时,aa-az,大于52列时可能性不大未做考虑first_del="a"+char(integer(j)+38) endifcol_del=col_del+first_del+":"+first_del+","continueendif//当列可见且为下拉数据窗口时,数据值转化为显示值ifadw.describe("#"+string(j)+".edit.style")=dddwthe nadw.getchild(ls_colname[j],ldw_child)fori=1torowscount-1//"dm","dmyy"是我通常用下拉数据子窗口的值以及显示值//更通用的方法是用dddw.datacolumn,dddw.displaycolumn得到ll_found=ldw_child.Find("dm"+"="+adw.getitemstring( i,j)+"",1,ldw_child.Rowcount())ifll_found>0thensetRemote("R"+stRing(i+1)+"c"+stRing(j),ldw_child.g etitemstring(ll_found,"dmyy"),handle)endif//另外一种方法,数据量大时比现用方法速度慢//setRemote("R"+stRing(i+1)+"c"+stRing(j),adw.descr ibe("evaluate(lookupdisplay(#"+string(j)+"),"+string(i)+")"),handle)nextendifnextclosechannel(handle)ifcol_delthencol_del=leFt(col_del,len(col_del)-2)//删除不可见列ole_object.activesheet.range(col_del).delete endifsetpointer(oldpointer)ole_object.activeworkbook.save()ole_object.application.quit()ole_object.disconnectobject()destroyole_objectReturn1endfunctionstringls_assize,namedintli_value,li_rt,li_rc,li_rt1//li_value=gf_dwsavetoexcel(dw_detail)//ifdw_detail.rowcount()setpointer(hourglass!)li_value=getfilesavename("saveFile",ls_assize,named ,"excel","excelfiles(*.xls),*.xls,"+stringls_filepa thls_filepath=gf_getfilesavename()oleobjectoleobjectwordoleobjectword=createoleobject//连接wordifoleobjectword.connecttonewobject("word.applicatio n")0thenmessagebox("提示","ole连接错误!")returnendifoleobjectword.visible=false//word文档在操作数据过程中是否可见longcol_colnum,col_rownumconstantlongwdtablebehavior=1constantlongwdautoFitFixed=0constantlongwdcell=12stringstr_value//得到数据窗口数据的列数和行数(行数应该是数据行数+1)col_colnum=long(ad_datawindow.object.datawindow.column.count)col_rownum=ad_datawindow.rowcount()+1//先在word文档中画好表格setpointer(hourglass!)oleobjectword.documents.addoleobjectword.activedocument.tables.add(oleobjectword.selection.Range,#+string(i)+".name")+"_t"strvalue=ad_datawindow.describe(ls_colname+".text") oleobjectword.selection.typetext(str_value)oleobjectword.selection.moveRight(wdcell)nextad_datawindow.setRedraw(false)oleobjectword.selection.moveleft(wdcell)setpointer(hourglass!)fori=2tocol_rownumforj=1tocol_colnumad_datawindow.scrolltorow(i-1)ad_datawindow.setcolumn(j)1121。

PB操作Excel详解

PB操作Excel详解

run("notpad.exe") ////pb 运行记事本run("calc.exe") ////pb运行计算器记住:当我们用PB导出数据到EXCEL时,不管是用Saveas 还是clipboard 它输出的数据是定义了字段类型的列的数据,也就是说,不管列是可见还是不可见,只要该列定义了列属性,在查询时主缓冲区中该列有数据,则就会导出出来~用方法得到列名或其他属性也是一样的~及时隐藏了也可以得到当中间的某列给隐藏时,下次打开后它会显示在末尾的位置,但是用Saveas输出数据时,不管它是否隐藏,是否改变了位置,它仍可输出数据而且位置还是不变的~也就是说没有改变数据窗口对象的源,数据窗口对象上显示的列位置只会影响我们在程序界面上看到的位置,而不会影响它在后台存储的实际位置。

但是这样会改变界面显示的位置,记住,没有改变源如何用PB程序在excel画表格边框线,如何改变文字大小1.创建Excel对象eole=CREATEOBJECT(′Excel.application′)2.添加新工作簿eole.Workbooks.add3.设置第3个工作表为激活工作表eole.Worksheets(″sheet3″).Activate4.打开指定工作簿eole.Workbooks.Open(″c:\temp\ll.xls″)5.显示Excel窗口eole.visible=.t.6.更改Excel标题栏eole.Caption=″VFP应用程序调用Microsoft Excel″7.给单元格赋值eole.cells(1,4).value=XM(XM为数据库字段名)8.设置指定列的宽度(单位:字符个数)eole.ActiveSheet.Columns(1).ColumnWidth=59.设置指定行的高度(单位:磅)eole.ActiveSheet.Rows(1).RowHeight=1/0.035(设定行高为1厘米,1磅=0.035厘米)10.在第18行之前插入分页符eole.Worksheets(″Sheet1″).Rows(18).PageBreak=111.在第4列之前删除分页符eole.ActiveSheet.Columns(4).PageBreak=012.指定边框线宽度(Borders参数如下)ole.ActiveSheet.Range(″b3:d3″).Borders(2).Weight=313.设置四个边框线条的类型eole.ActiveSheet.Range(″b3:d3″).Borders(2).LineStyle=1(其中Borders参数:1-左、2-右、3-顶、4-底、5-斜、6-斜/;LineStyle值:1与7-细实、2-细虚、4-点虚、9-双细实线)14.设置页眉eole.ActiveSheet.PageSetup.CenterHeader=″报表1″15.设置页脚eole.ActiveSheet.PageSetup.CenterFooter=″第&P页″16.设置页眉到顶端边距为2厘米eole.ActiveSheet.PageSetup.HeaderMargin=2/0.03517.设置页脚到底边距为3厘米eole.ActiveSheet.PageSetup.FooterMargin=3/0.03518.设置顶边距为2厘米eole.ActiveSheet.PageSetup.TopMargin=2/0.03519.设置底边距为4厘米eole.ActiveSheet.PageSetup.BottomMargin=4/0.03520.设置左边距为2厘米veole.ActiveSheet.PageSetup.LeftMargin=2/0.03521.设置右边距为2厘米eole.ActiveSheet.PageSetup.RightMargin=2/0.03522.设置页面水平居中eole.ActiveSheet.PageSetup.CenterHorizontally=.t.23.设置页面垂直居中eole.ActiveSheet.PageSetup.CenterVertically=.t.24.设置页面纸张大小(1-窄行8511 39-宽行1411) eole.ActiveSheet.PageSetup.PaperSize=125.打印单元格网线eole.ActiveSheet.PageSetup.PrintGridlines=.t.26.拷贝整个工作表edRange.Copy27.拷贝指定区域eole.ActiveSheet.Range(″A1:E2″).Copy28.粘贴eole.WorkSheet(″Sheet2″).Range(″A1″).PasteSpecial 29.在第2行之前插入一行eole.ActiveSheet.Rows(2).Insert30.在第2列之前插入一列eole.ActiveSheet.Columns(2).Insert31.设置字体eole.ActiveSheet.Cells(2,1)=″黑体″32.设置字体大小eole.ActiveSheet.Cells(1,1).Font.Size=2533.设置字体为斜体eole.ActiveSheet.Cells(1,1).Font.Italic=.t.34.设置整列字体为粗体eole.ActiveSheet.Columns(1).Font.Bold=.t.35.清除单元格公式eole.ActiveSheet.Cells(1,4).ClearContents36.打印预览工作表eole.ActiveSheet.PrintPreview37.打印输出工作表eole.ActiveSheet.PrintOut38.工作表另为eole.ActiveWorkbook.SaveAs(″c:\temp\22.xls″)39.放弃存盘eole.ActiveWorkbook.saved=.t.40.关闭工作簿eole.Workbooks.close41.退出Exceleole.quit先把标题放到剪贴板上,再PASTE()到EXCEL中,代码如下:::clipboard(ls_value)ao_object.range(ls_col+string(1)+":"+ls_col+string(1)).select()ao_object.activesheet.Paste()/*************************************************************下面的函数f_excel_hb,可以实现“将工作簿filename_s中的工作表sheetname_s以新的工作表名称sheetname_t,复制到工作簿filename_t的最后”1.public function boolean f_excel_hb (string filename_s, string filename_t, string sheetname_s, string sheetname_t);2.//==========================================================3.// 合并两个工作簿中的某个工作表4.//==========================================================5.// 作者:yyoinge 2011-10-12 18:006.//==========================================================7.// 将工作簿filename_s中的工作表sheetname_s以新的8.// 工作表名称sheetname_t,复制到工作簿filename_t的最后9.//==========================================================10.if not fileexists(filename_s) then11. messagebox('','工作簿【' + filename_s + '】(源)不存在')12.return false13.end if14.if not fileexists(filename_t) then15. messagebox('','工作簿【' + filename_t + '】(目标)不存在')16.return false17.end if18.long ll_val19.//声明ole对象20.oleobject ole_object_s21.//创建ole对象22.ole_object_s=create oleobject23.//连接到excel24.ll_val = ole_object_s.connecttonewobject("excel.application")25.if ll_val <> 0 then26. messagebox('','ole无法连接Excel!')27.goto error28.end if29.//打开源和目标工作簿30.ole_object_s.workbooks.open(filename_s)31.ole_object_s.workbooks.open(filename_t)32.string ls_t33.ls_t = filename_t34.filename_s = of_splitpath(filename_s, 2)35.filename_t = of_splitpath(filename_t, 2)36.//隐藏excel37.ole_object_s.visible = false38.ole_object_s.displayalerts = false39.int n,t40.int li41.boolean isexists=false42.oleobject lworksheet43.//判断源工作簿中的工作表是否存在44.try45. lworksheet = ole_object_s.Workbooks(filename_s).sheets(sheetname_s)46. isexists = true47.catch( oleruntimeerror er)48. isexists = false49.end try50.if isexists=false then51. messagebox('','工作簿【' + filename_s + '】中工作表不存在工作表[' + sheetname_s + ']')52.goto error53.end if54.//当目标工作簿中存在sheet名为sheetname_t的工作表时,为sheetname_t增加后缀(1),然后再重复进行判断,直到表名不存在55.isexists = true56.do while isexists57.try58. lworksheet = ole_object_s.Workbooks(filename_t).sheets(sheetname_t)59. isexists = true60. sheetname_t += '(1)'61.catch( oleruntimeerror er1)62. isexists = false63. end try64.loop65.//进行工作表合并(移到目标工作簿的最后)66.//int li67.setnull(li)68.ole_object_s.workbooks(filename_s).Sheets(sheetname_s).copy(li, ole_object_s.workbooks(filename_t).Sheets(long(ole_object_s.workbooks(filename_t).Sheets.count)))69.//重命名工作表70.ole_object_s.workbooks(filename_t).sheets(long(ole_object_s.workbooks(filename_t).Sheets.count)).name = sheetname_t71.//保存目标工作簿72.isexists = true73.//ole_object_s.visible = true74.//ole_object_s.displayalerts = true75.//messagebox('', '')76.try77. ole_object_s.workbooks(filename_t).save()78.catch( oleruntimeerror er2)79. messagebox('提示', '无法保存工作簿【' + filename_t + '】')80. isexists = false81.end try82.if not isexists then goto error83.//关闭工作簿84.ole_object_s.workbooks(filename_s).close85.ole_object_s.workbooks(filename_t).close86.//退出excel87.ole_object_s.workbooks.close88.ole_object_s.Application.quit();89.//断开连接90.ole_object_s.disconnectobject();91.//注销ole对象92.destroy ole_object_s;93.return true94.error:95.ole_object_s.workbooks(filename_s).close96.ole_object_s.workbooks(filename_t).close97.ole_object_s.workbooks.close98.ole_object_s.Application.quit();99.ole_object_s.disconnectobject();100.destroy ole_object_s;101.return false102.103.104.end function/**********************************************************//*函数名称:uf_dwsaveas_excel功能:将数据窗口数据导出EXCEL文件,并将EXCEL文件默认英文标题替换成中文。

将PB数据窗口数据导出到EXCEL模版

将PB数据窗口数据导出到EXCEL模版

将PB数据窗品导出到EXCEL模版一、建立通信OLEObject ExcelServerInteger li_excelOK,li_rcString ls_path, ls_file,ls_modelExcelServer = CREATE OLEObjectli_ExcelOK = ExcelServer.ConnectToNewObject( "excel.application" )二、输入新文件名li_rc = GetFileSaveName ( "输入新的文件名", &ls_path, ls_file, "XLS", &"XLS Files (*.XLS),*.XLS" , "C:\My Documents", &32770)三、判断文件是否存在If FileExists (ls_path ) ThenFileDelete(ls_path)END IF四、检查给定的文件路径是否可以写入li_rc=FileOpen(ls_path,StreamMode!,Write!,LockWrite!,Replace!)FileClose(li_rc)filedelete(ls_path)五、获到模版文件if FileExists (ls_model ) thenli_rc = FileCopy (ls_model , ls_path, true)if li_rc = 1 thenExcelServer.Workbooks.Open(ls_path)elseExcelServer.workbooks.addExcelServer.Workbooks(1).SaveAs(ls_path)ExcelServer.Workbooks.Open(ls_path)end ifend if六、写入数据窗品数据ExcelServer.application.Sheets(“sheet1”).SelectExcelServer.ActiveSheet.Cells(2,1).value = '制单编号'七、保存EXCEL数据//关闭警告消息对话框,防止退出Excel 时提示ExcelServer.Application.DisplayAlerts = False//保存数据ExcelServer.Application.SaveWorkspace()if f_messagebox('','已成功导出到EXCEL,是否要打开该文件:',2) = 1 then ExcelServer.Application.Visible = trueelseExcelServer.Application.Visible = falseExcelServer.quit()end ifExcelServer.disconnectobject()destroy excelserver。

在powerbuilder中实现excel表格的导入和导出

在powerbuilder中实现excel表格的导入和导出

在powerbuilder 中实现excel表格的导入和导出在为某单位制作一个管理信息系统软件时,用户提出,系统中要能够实现excel 表格的导入和导出。

Excel 软件是专门为处理各式电子表格而设计,它能够非常高效而专业的处理各式表格,在使用这个管理信息系统软件之前,单位的大部分数据都是保存在excel 中的。

系统前台的开发使用的是POWERBUILD,E POWERBUILDER 向对象的数据库开发工具之一,它可以操纵众多大型数据库和桌面数据库,支持多种硬件平台。

但它有一个致命的弱点,就是打印报表非常不方便,打印函数太少,特别是对中国式报表。

而EXCEL制表却非常容易,若把两者结合起来使用则会取长补短。

也就是说我们的这个系统要既能将excel 报表中的内容导入到数据库中,又要能将数据库中的数据导出到excel 中。

PowerBuider 是Sybase 公司推出的一种高级数据库应用程序开发环境,在这个环境中开发数据库应用程序,使用其专利技术DataWindow,可以很轻松的开发出非常专业的数据库应用程序。

此外,PowerBuilder 还支持多种数据库,能够很轻松的与目前流行的MS SQL Server 、Oracle 等企业级数据库建立连接,处理各种事务。

PowerBuilder 中的编程语言被称为脚本(Script ),实际上,使用PowerBuilder 编写的程序也是事件驱动,在界面设计上也完全做到了“所见即所得”,并完全使用面向对象的编程思想,它还提供了对OLE、DDE、Automation 等技术的支持,下面我们就先来看一下如何将excel 报表通过powerbuilder 导入到数据库中。

首先,声明一个OLE M象,如下:OLEObject ExcelServer其次,创建该OLE对象,如下:ExcelServer =Create OLEObject然后,使用PowerBuilder 中的ConnectToNewObject 函数来创建一个新的OLE对象,并且连接到该对象上,如下:ExcelServer. ConnectToNewObject ("excel.Application") 调用该函数时,如果成功的话,返回值是0,否则就意味着调用失败。

将PB数据窗口中的数据导出到EXCEL文件

将PB数据窗口中的数据导出到EXCEL文件

PB】将PB数据窗口中的数据导出到EXCEL文件我设计中只用过两种方法。

第一种:导出到默认的路径(代码中固定好的)。

核心代码是:long dwcontrol.SaveAsAscii(string filename,[string separatorcharacter(可选项,以该种格式来分隔数据,如果省略则默认为tab,)],)实例如下:if dw_1.saveasascii("C:\缺陷查询结果.xls"," ","")=1 thenmessagebox("提示信息","数据导出成功!! 文件路径为C:\缺陷查询结果.xls!")elsemessagebox("提示信息","数据导出失败!")end if第二种:这种方法要事先在指定路径建立起要导出的EXCEL文件。

下面代码是打开该文件并保存进去。

long numcols,numrows,c,rOLEObject xlapp,xlsubint ret//定义变量numcols=long(dw_1.Object.DataWindow.Column.Count)//设置行号和列号numrows=dw_1.RowCount()//获得行数xlApp=Create OLEObject//创建OLE对象ret=xlApp.ConnectToNewObject("Excel.Sheet")if ret<0 thenmessagebox("连接Excel程序失败!",string(ret))returnend if//连接Excel,并检验返回值xlApp.Application.Workbooks.Open("C:\缺陷查询结果.xls") //打开一个特定的Excel文件xlApp.Application.Visible=true//使该Excel文件可视xlsub=xlApp.Application.ActiveWorkbook.Worksheets[1]//确定第一个工作薄for c=1 to numcolsfor r=1 to numrowsxlsub.cells[r,c]=dw_1.object.data[r,c]nextnext//循环发送数据xlApp.DisConnectObject()Destroy xlApp。

PB数据窗口导出excel

PB数据窗口导出excel

PB数据窗口导出excel,修改第一行英文标题为中文标题,计算合计值分类:PB 2013-11-05 13:01 712人阅读评论(0) 收藏举报pb数据窗口导出excel中文标题计算合计值1.PB数据窗口导出excel利用dw.saveas(filename,Excel5!,true)方法先导出带英文标题的excel。

int li_retstring ls_filename,ls_pathnameboolean lb_existif dw.rowcount()=0 thenmessagebox("提示","无可保存的数据!")return;end ifli_ret = GetFileSaveName("保存文件",ls_pathname,ls_filename,"xls","Excel文件(*.xls),*.xls")if li_ret=1 thenlb_exist = FileExists(ls_pathname)IF lb_exist THENli_ret = MessageBox("保存", ls_pathname+"已经存在,是否覆盖?",Exclamation!, YesNo!) end ifif li_ret=1 thenli_ret = dw.saveas(ls_pathname,EXCEL5!, true)//此处必须为true,后面要修改第一行。

if li_ret=1 then//修改标题头,计算合计gf_set_title_sum(dw,ls_pathname)messagebox('提示','保存成功!')end ifend ifend if2.修改第一行英文标题为中文标题,计算合计值gf_set_title_sum(datawindow dw,string vs_filename)函数如下:int li_retlong ll_column,ll_num,ll_dwrowcountlong ll_xlsrowcount//excel的行数string ls_objtag[]//标题string ls_width[]//每列宽度string ls_obj,ls_valuestring ls_objs[]int i,jString ls_english = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"string ls_colname//操作excelPointer oldpointerOLEObject ole_objectole_object = CREATE OLEObject//修改标题头,计算合计li_ret = ole_object.ConnectToNewObject("Excel.Application")IF li_ret <> 0 THENMessageBox('打开错误','无法连接EXCEL!是否已经安装了EXCEL?错误号:' +String(li_ret))RETURNEND IFole_object.Visible = false //ole应用服务是否显示oldpointer = SetPointer(HourGlass!)ole_object.application.workbooks.open(vs_filename)//打开文件//获取标题ll_column = Long(dw.Object.DataWindow.Column.Count) //取得字段总数i = 0FOR ll_num = 1 TO ll_columnIF dw.DESCRIBE("#"+String(ll_num)+".Visible") = "1" THEN //列标志为nun_Visible的不显示i = i+1ls_obj = dw.DESCRIBE("#"+String(ll_num)+".name") //字段名称的实际存储值ls_objs[i] = ls_objls_objtag[i] = dw.DESCRIBE(ls_obj + "_t.text") //字段名称的显示值ls_width[i] = dw.DESCRIBE(ls_obj + '.width') //每列的宽度END IFNEXT//开始修改标题头for j=1 to upperbound(ls_objtag)ole_object.Cells(1,j).value=ls_objtag[j]next//标题一行居中ole_object.rows(1).HorizontalAlignment = 3//居中//计算合计值ll_dwrowcount=dw.rowcount()//行数ll_xlsrowcount=ll_dwrowcount+1//除了合计之外的行数ole_object.cells(ll_xlsrowcount+1,1).value='合计'for j=2 to ll_columnls_colname=Mid(ls_english,j,1)//获取列名Bole_object.Range(ls_colname+'2:'+ls_colname+string(ll_xlsrowcount)).Select//选中B2:B4ole_object.Range(ls_colname+string(ll_xlsrowcount+1)).Activate//将B5设为活动单元格 ole_object.ActiveCell.FormulaR1C1 ="=SUM(R[-"+string((ll_xlsrowcount+1)-2)+"]C:R[-1]C)"//计算从第二行到倒数第二行的和值nextole_object.application.workbooks(1).worksheets(1).cells.EntireColumn.AutoFit //自适应列宽,行的话换EntireRowole_object.application.workbooks(1).save()//保存ole_object.application.quit()//退出ole_object.disconnectobject()//断开连接destroy ole_object//销毁连接3.总结:其中关于excel操作的部分代码,可以使用excel里面的宏录制功能,查看对应操作的代码。

PB对excel的操作

PB对excel的操作

PB对excel的操作Pb中对Excel文件的应用Oleobject ole_object//建立OLE对象ole_object=create oleobject//创建对象integer li_retli_ret=ole_object.connecttoobject( " ", "Excel.Application ")//建立连接if li_ret <> 0 then//如果Excel还没有打开,则新建。

li_ret=ole_object.ConnectToNewObject( "Excel.Application ") if li_ret <> 0thenmessagebox( "OLE错误", "OLE无法连接!错误号:"+string(li_ret))returnend ifole_object.Visible=trueend ifpointer oldpointer//设置鼠标oldpointer=setpointer(HourGlass!)ole_object.Workbooks.Add//新建工作薄ole_object.Application.DisplayAlerts=False//关闭警告消息对话框,防止提示ole_object.Application.Workbooks.Open(as_exccccccccccccc cccccccccccccccccccccel_filename)/ /打开Excel文件//ole_object.Application.ActiveWorkbook.SaveAs(as_text_fil ename,-4158)//把打开的Excel文件另存为//Text文件,第二参数表示数据以制表符TAB分隔ole_object.Application.Quit()//退出Excelole_object.activeworkbook.saved=true//放弃存盘ole_object.workbooks.close//关闭工作簿ole_object.Cells(1,1).Value=reptitleole_object.Range( 'A1 ').Selectole_object.Selection.Font.Size=24ole_object.selection.HorizontalAlignment=3//水平对齐方式: ole_object.Range( 'A1: '+f_columname(ll_colnum)+ '1 ').Selectole_object.Range( 'A1: '+f_columname(ll_colnum)+ '1 ').Mergeole_object.Columns(i).ColumnWidth=ld_widthole_object.Columns(i).HorizontalAlignment=3ole_object.Columns(i).Borders.LineStyle=1ole_object.Columns(i).Font.Bold=Trueole_object.cells(i,j).NumberFormat= "@ "ole_object.cells(i,j).Font.Bold=falseole_object.cells(i,j).value=ls_valueOLE_/doc/1517083172.html,edRange.Rows. CountSheets.Add基本操作:Ole_object.Workbooks.add//新建一个Excel文件Ole_object.Workbooks.Open( "FileName ")//打开一个已存在Excel文件Ole_object.ActiveWorkBook.Sheets( "SheetName ").Select//选择文件中一个工作表Ole_object.Application.Run( "MacroName ")//运行宏Ole_object.Application.Visible=TRUE//Excel文件可见Ole_object.Application.ScreenUpdating=true//设置可见属性②格式设置Ole_object.ActiveSheet.Columns( "A:U ").AutoFit//列宽自动调整Ole_object.ActiveSheet.Columns( "A:Z ").ColumnWidth=6.75//列宽Ole_object.ActiveSheet.Rows( "1:100 ").RowHeight=12//行高Ole_object.Application.StandardFont= "ArialNarrow ";//设置字体Ole_object.Application.StandardFontSize= "8 "//设置字号Ole_object.ActiveSheet.Font.Size= "8 "//设置字号Ole_object.ActiveSheet.Font.Bold=True//粗体Ole_object.ActiveSheet.Font.Italic=True//斜体Ole_object.ActiveSheet.Font.Underline=True//下划线Ole_object.ActiveSheet.Font.StrikeThrough=True//删除线Ole_object.ActiveSheet.HorizontalAlignment=3//水平:4靠右;3居中;2靠左Ole_object.ActiveSheet.VerticalAlignment=2//垂直:3靠下;2居中;1靠上Ole_object.ActiveSheet.cells(2,1).f/doc/1517083172.html,=?黑体?//设置字体Ole_object.ActiveSheet.cells(2,1).font.size=25//设置字体大小③工作区域操作:Ole_object.ActiveSheet.Range( "A1:Z10 ").Property=value//设置一个工作区域内的属性值Ole_object.ActiveSheet.Range( "A1:Z10 ").Merge//合并单元格Ole_object.ActiveSheet.Range( "A1:Z10 ").WrapText=False//自动换行禁止Ole_object.ActiveSheet.Range( "A1:Z10 ").Borders(b_type).Weight=i_val//b_type:1左边界;2右边界;3上边界;4下边界;5左上倾斜;6右上倾斜(以上为对单元格的操作)7左边界;8上边界;9下边界;10右边界;11内部垂直边界;12内部水平边界(以上为对区域的操作)//i_val:0无边界线;然后1,2,3。

PB中借助Excel实现对复杂报表的输出与打印

PB中借助Excel实现对复杂报表的输出与打印

PB中借助Excel实现对复杂报表的输出与打印
孙步鲜;何月顺
【期刊名称】《科技广场》
【年(卷),期】2008(000)001
【摘要】PowerBuilder利用它的数据窗口(DataWindow)技术可以生成各种统计报表,但其制作复杂报表的功能还是不强,难以满足中国式报表的要求.本文通过一个实例介绍了一种借助于Excel实现对这类报表的输出与打印的方法,并给出了部分源代码.
【总页数】3页(P96-98)
【作者】孙步鲜;何月顺
【作者单位】东华理工大学,江西,抚州,344000;东华理工大学,江西,抚州,344000【正文语种】中文
【中图分类】TP311
【相关文献】
1.巧用VB调用Excel实现复杂报表设计与打印 [J], 畅育超
2.利用Excel模板实现复杂报表-证书的打印 [J], 公志波;巫世晶;程怀舟
3.PB数据窗口与Excel结合实现报表打印的一种方法 [J], 张涛
4.在PB开发中实现Excel复杂报表的程序设计 [J], 黄清;许鹰
5.用双数据窗口实现中国式复杂报表的打印——PowerBuilder中国式复杂报表的显示与打印技术之一 [J], 谢延东;卢东;谢彦华
因版权原因,仅展示原文概要,查看原文内容请购买。

PB对excel的操作

PB对excel的操作

PB对excel的操作随着科技的发展,电子表格软件已经成为了工作和学习中不可或缺的工具。

而Excel作为最常用的电子表格软件之一,在个人和企业的日常操作中扮演着重要的角色。

本文将介绍PB(Peanut Butter)对Excel 的操作,包括基本操作、数据处理与分析、图表制作、公式运用等内容。

一、基本操作1. 打开与关闭工作簿PB可通过点击文件选项卡,选择“打开”命令来打开Excel工作簿。

在使用完成后,点击右上角的“关闭”按钮即可关闭工作簿。

2. 插入与删除工作表PB可在Excel中插入新的工作表,点击工作表选项卡后,在“工作表组”中选择“插入工作表”即可。

要删除工作表,PB只需选中要删除的工作表,然后点击右键选择“删除”。

3. 数据输入与编辑PB可将数据直接输入到单元格中,通过使用方向键或鼠标切换到需要编辑的单元格,然后键入相应的数据。

若需要编辑已有的数据,PB只需选中要编辑的单元格,然后直接键入新的数据。

二、数据处理与分析1. 数据筛选与排序PB可使用Excel提供的筛选功能,选择需要操作的数据范围,在“数据”选项卡中选择“筛选”按钮,然后根据需要进行筛选条件的设置。

对于数据排序,PB可通过选择需要排序的数据范围,在“数据”选项卡中选择“排序”按钮,按照指定的排序规则进行排序。

2. 数据透视表的制作PB需首先选中所要制作透视表的数据范围,然后在“插入”选项卡中点击“透视表”按钮。

在弹出的对话框中,PB可选择需要作为行、列和数据的字段,从而生成需要的透视表。

三、图表制作1. 制作柱状图PB需选中需要制作柱状图的数据范围,然后在“插入”选项卡中点击“柱状图”按钮。

在弹出的图表类型中,PB可选择适合的柱状图样式,并对图表效果进行调整。

2. 制作折线图PB需选中需要制作折线图的数据范围,然后在“插入”选项卡中点击“折线图”按钮。

在弹出的图表类型中,PB可选择适合的折线图样式,并进行必要的调整和编辑。

pb导出excel(直接导出)

pb导出excel(直接导出)

基本操作:Ole_object.Workbooks.add//新建一个Excel文件Ole_object.Workbooks.Open("FileName")//打开一个已存在Excel文件Ole_object.ActiveWorkBook.Sheets("SheetName").Select//选择文件中一个工作表Ole_object.Application.Run("MacroName")//运行宏Ole_object.Application.Visible=TRUE//Excel文件可见Ole_object.Application.ScreenUpdating=true//设置可见属性②格式设置Ole_object.ActiveSheet.Columns("A:U").AutoFit//列宽自动调整Ole_object.ActiveSheet.Columns("A:Z").ColumnWidth=6.75//列宽Ole_object.ActiveSheet.Rows("1:100").RowHeight=12//行高Ole_object.Application.StandardFont="ArialNarrow";//设置字体Ole_object.Application.StandardFontSize="8"//设置字号Ole_object.ActiveSheet.Font.Size="8"//设置字号Ole_object.ActiveSheet.Font.Bold=True//粗体Ole_object.ActiveSheet.Font.Italic=True//斜体Ole_object.ActiveSheet.Font.Underline=True//下划线Ole_object.ActiveSheet.Font.StrikeThrough=True//删除线Ole_object.ActiveSheet.HorizontalAlignment=3//水平:4靠右;3居中;2靠左Ole_object.ActiveSheet.VerticalAlignment=2//垂直:3靠下;2居中;1靠上Ole_object.ActiveSheet.cells(2,1)=’黑体’//设置字体Ole_object.ActiveSheet.cells(2,1).font.size=25//设置字体大小③工作区域操作:Ole_object.ActiveSheet.Range("A1:Z10").Property=value//设置一个工作区域内的属性值Ole_object.ActiveSheet.Range("A1:Z10").Merge//合并单元格Ole_object.ActiveSheet.Range("A1:Z10").WrapText=False//自动换行禁止Ole_object.ActiveSheet.Range("A1:Z10").Borders(b_type).Weight=i_val//b_type:1左边界;2右边界;3上边界;4下边界;5左上倾斜;6右上倾斜(以上为对单元格的操作)7左边界;8上边界;9下边界;10右边界;11内部垂直边界;12内部水平边界(以上为对区域的操作)//i_val:0无边界线;然后1,2,3。

PB数据窗口导出word、excel文档

PB数据窗口导出word、excel文档

adw.GetChild( ls_colname[j], ldw_child )
for i=1 to rowscount - 1
//"dm","dmyy"是我通常用下拉数据子窗口的值以及显示值
//更通用的方法是用DDDW.DataColumn,DDDW.DisplayColumn得到
ll_found = ldw_child.Find("dm" +"= '"+adw.getitemstring(i,j)+"'", 1, ldw_child.RowCount())
end prototypes
global function integer gf_dwsavetoexcel (datawindow adw); string xlsname, named
integer value
string col_del,first_del
str_value=ad_datawindow.GetItemstring(i - 1,j)
if isnull(str_value) then
str_value=''
end if
OleObjectWord.Selection.MoveRight(wdCell)
Constant Long wdAutoFitFixed=0
Constant Long wdCell=12
String str_value
// 得到数据窗口数据的列数和行数(行数应该是数据行数+1)
col_colnum=Long(ad_datawindow.object.datawindow.column.count)

PB中将dw导出为EXCEL函数

PB中将dw导出为EXCEL函数

PB中将dw导出为EXCEL函数PB中将dw导出为EXCEL函数ue_saveas(us_flag)if gs_right.sexp <> '1' thenmessagebox(f_getchinese(1,'msg01'),f_getchinese(1,'msg74'))//--你没有导出权,请与系统管理员联系returnend ifint value,li_column_count,ll_i,ll_rowcount,ll_k,m_ret,i,j,k,li_colyuan[]string table_cname,ls_path,ls_colname,ls_head[],ls_coltype[]ulong l_bufstring ls_workdir,ls_default,ls_mess,ls_htmlstring ls_colnames[],ls_templong ll_width[],ll_tabid[]l_buf = 100 //⽂件名ls_workdir = space(100)GetCurrentDirectoryA(l_buf,ls_workdir)table_cname = mid(dw_1.dataobject,3,5)ls_mess = f_getchinese(1,'msg75')//'保存失败!'//------------------------------------------------------------------if us_flag='TXT' thenvalue = GetFilesaveName('Save AS',table_cname,table_cname,"txt","Txt File (*.txt),*.txt") IF VALUE=1 THENdw_1.saveas(table_cname,text!,false)ls_mess = f_getchinese(1,'msg76')//' 保存成功!'f_addlogitem('export')end ifmessagebox("information",table_cname+ls_mess)end if//-------------------------------------------------------------------if us_flag='XLS' thenll_rowcount=dw_1.rowcount()if pos(dw_1.dataobject,'d_kq026')>0 thenwf_savekq026()returnend ifif pos(dw_1.dataobject,'d_hr002')>0 thenwf_savehr002()returnend ifif ll_rowcount>5000 thenwf_saveexcel()returnend ifoleobject ole_object,ole_workbooksole_object=create oleobjectif ole_object.ConnectToNewObject("excel.application")<>0 thenmessagebox("question!","connect error!")returnend ifole_object.workbooks.addole_object.visible=falseole_workbooks=ole_object.worksheets(1)li_column_count = Integer(dw_1.Describe("DataWindow.Column.Count"))/*for ll_i = 1 to li_column_countls_colname=dw_1.Describe("#"+string(ll_i)+".Name")ls_coltype[ll_i] = dw_1.Describe(ls_colname+".ColType")ls_head[ll_i]=dw_1.Describe(ls_colname+"_t.text")ole_workbooks.cells(1,ll_i).value=ls_head[ll_i]next*/k = 1//下⾯for语句只保存列名号列的实际排列顺序for j = 1 to li_column_countls_colnames[k]=dw_1.Describe("#"+string(j)+".Name")ls_colname = ls_colnames[k]ll_tabid[k] = long(dw_1.Describe(ls_colname +".TabSequence")) //将列的实际序号保存起来ll_width[j] = long(dw_1.describe(ls_colname + ".width")) //栏⽬宽度if ll_width[j] <> 0 then //只有当列的宽度不为零的才保存,因为隐藏的列不要保存,隐藏的列的宽度也为0。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基本操作:
Ole_object.Workbooks.add//新建一个Excel文件
Ole_object.Workbooks.Open("FileName")//打开一个已存在Excel文件
Ole_object.ActiveWorkBook.Sheets("SheetName").Select//选择文件中一个工作表
Ole_object.Application.Run("MacroName")//运行宏
Ole_object.Application.Visible=TRUE//Excel文件可见
Ole_object.Application.ScreenUpdating=true//设置可见属性
②格式设置
Ole_object.ActiveSheet.Columns("A:U").AutoFit//列宽自动调整
Ole_object.ActiveSheet.Columns("A:Z").ColumnWidth=6.75//列宽
Ole_object.ActiveSheet.Rows("1:100").RowHeight=12//行高
Ole_object.Application.StandardFont="ArialNarrow";//设置字体
Ole_object.Application.StandardFontSize="8"//设置字号
Ole_object.ActiveSheet.Font.Size="8"//设置字号
Ole_object.ActiveSheet.Font.Bold=True//粗体
Ole_object.ActiveSheet.Font.Italic=True//斜体
Ole_object.ActiveSheet.Font.Underline=True//下划线
Ole_object.ActiveSheet.Font.StrikeThrough=True//删除线
Ole_object.ActiveSheet.HorizontalAlignment=3//水平:4靠右;3居中;2靠左
Ole_object.ActiveSheet.VerticalAlignment=2//垂直:3靠下;2居中;1靠上
Ole_object.ActiveSheet.cells(2,1)=’黑体’//设置字体
Ole_object.ActiveSheet.cells(2,1).font.size=25//设置字体大小
③工作区域操作:
Ole_object.ActiveSheet.Range("A1:Z10").Property=value//设置一个工作区域内的属性值
Ole_object.ActiveSheet.Range("A1:Z10").Merge//合并单元格
Ole_object.ActiveSheet.Range("A1:Z10").WrapText=False//自动换行禁止
Ole_object.ActiveSheet.Range("A1:Z10").Borders(b_type).Weight=i_val//b_type:1左边界;2右边界;3上边界;4下边界;5左上倾斜;6右上倾斜(以上为对单元格的操作)7左边界;8上边界;9下边界;10右边界;11内部垂直边界;12内部水平边界(以上为对区域的操作)//i_val:0无边界线;然后1,2,3。

依次边界线加粗
Ole_object.ActiveSheet.Range("A1:Z10").Borders(b_type).linestyle=1//1与7—细实、2—细虚、4—点虚、9—双细实线
④赋值操作
O le_object.ActiveSheet.range("A1:Z10").Cells.value=“姓名”
Ole_object.ActiveSheet.range("A1:Z10").Cells.value=1
Ole_object.ActiveSheet.range("A1:Z10").Cells.value=“2003-01-01”
Ole_object.ActiveSheet.Range("A1:Z10").Cells(1,2).value=“年龄”//区域内一个单元格的赋值Ole_object.ActiveSheet.Range("A1:Z1").Cells(1,1).value=“SUM(RC[-9]:RC[-1])”
方法2
OleObject Loo_Excel
Loo_Excel=create oleobject
if Loo_Excel.ConnectToNewObject("Excel.Application") <> 0 then
messagebox('提示','系統未安裝Excel,無法運行此操作!')
return
end if
Loo_Excel.Application.Workbooks.Add()
Loo_Excel.Application.Workbooks(1).worksheets(1)
Loo_Excel.Application.Visible = True
Loo_Excel.Application.ScreenUpdating = false
//'正在處理表頭......'
Loo_Excel.Range("A1:AB1").Select
Loo_Excel.Selection.MergeCells = True
Loo_Excel.Selection.HorizontalAlignment = 3
Loo_Excel.Selection.VerticalAlignment = 3
Loo_Excel.Selection.Font.Bold = True
Loo_Excel.Selection.Font.Size = 14
Loo_Excel.Selection.RowHeight = 28.50
Loo_Excel.ActiveCell.FormulaR1C1 = dw_3.describe("ls_title"+".text")
///写标头
Loo_Excel.application.workbooks(1).worksheets(1).cells(3, 1 ).value = "排單號碼"
// dw_2.describe("po_no"+".name"+"_t.text")
Loo_Excel.application.workbooks(1).worksheets(1).cells(3, 2 ).value = "客人款號"
Loo_Excel.application.workbooks(1).worksheets(1).cells(3, 3 ).value
= dw_2.describe("cust_nam_t.text")
///内容
for i=1 to dw_2.rowcount()
Loo_Excel.application.workbooks(1).worksheets(1).cells(3+i, 1).value
= string( dw_2.object.po_no[i] )
next
Loo_Excel.application.ActiveWorkbook.SaveAs(ls_filename)
Loo_Excel.Application.ScreenUpdating = True
Loo_Excel.DisconnectObject()
上面的处理方法中可能会遇到datetime类型的导出到excel后出现乱玛,我的做法是: 在visible里面写代码判断其中为空的不显示,如果日期时间值为空,肯定=1900-01-01。

相关文档
最新文档