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

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,与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的操作不失为一种好的报表输出方式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之间导入导出处理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表的问题应该是个老问题了,大家讨论了不知道有多少年了,今天我也遇到了这个问题,上网找了半天大家说什么的都有。
总结了一下,把我看到的都贴出来,呵呵。
一.// ... 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转换的实现
潘宏标;黄福洪
【期刊名称】《农业网络信息》
【年(卷),期】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、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详解
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模版一、建立通信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。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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。