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文件进行了改动以后,在关闭该文件时是否需要向用户提出警告。
PowerBuilder中数据窗口使用技巧
PowerBuilder中数据窗口使用技巧PowerBuilder中数据窗口使用技巧PowerBuilder(以下简称PB)是一个非常优秀的数据库前端开发工具,其数据窗口(DataWindow)控件充分体现了PB与数据库系统的紧密结合,堪称前端工具的典范。
本文介绍了使用PB设计数据窗口的一些小窍门,希望能对使用PB的开发者有所帮助。
一、校验表达式(Validation Expression)的设置校验表达式是PB 提供的一个优良特性。
但您是否觉得表达式的输入过于烦琐呢?一般而言,校验表达式的输入和修改要经历下面4步:1. 选取要编辑的列(Column);2. 按鼠标右键,选择"Properties",将弹出"Column Object"窗口;3. 在窗口中选择"V alidation"标签,输入所需的校验表达式;4. 输入完毕后,按"OK"按钮。
这种输入方式有两个缺点:1. 过于烦琐,每输入一个表达式都要经过4步。
这一点在每列的校验表达式都基本相同时尤其明显。
2. 无法统一查看和对比各列的校验表达式,不利于查错。
其实PB提供了一个更加灵活的,专门用于输入校验表达式的工具。
在编辑数据窗口时,选择"rows"菜单的"Column Specifications"项,将会弹出"Column Specifications"窗口。
在窗口中,可以直接设置每一列的校验表达式二、"选择工具"的使用在数据窗口中,有时需要修改所有列的颜色或字体,一般的操作都是一个一个选取。
其实PB提供了一个非常好的选择工具,用来选择数据窗口中的对象。
这个工具位于"Edit"菜单下的"Select"项中.选择工具一共有7个功能,其中前5个适合用热键直接操作选项功能三、多用户安全访问数据库的实现大多数情况下,您的应用程序将在网络环境下运行。
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_exccccccccccccccccccccccccccccccccccel_filename)/ /打开Excel文件//ole_object.Application.ActiveWorkbook.SaveAs(as_text_filename,-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_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 =‟黑体‟//设置字体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 dynamic用法
pb dynamic用法
PB dynamic 是 PowerBuilder 12.0 版本引入的一个概念,它是一种动态语言环境,可以在运行时动态地加载和卸载对象。
相对于传统的 PowerBuilder 语言,PB dynamic 提供了更多的灵活性和可扩展性。
使用 PB dynamic,用户可以在运行时动态地创建、加载和卸载对象。
为了实现这一点,用户需要将需要动态加载的对象嵌入到 PB dynamic 环境中。
具体来说,需要将对象的引用存储在一个 PB dynamic 对象中,然后在需要使用该对象时,通过调用 PB dynamic 对象的方法和属性来动态地加载和卸载该对象。
例如,假设用户需要动态地创建一个 Excel 对象,并将其加载到 PB dynamic 环境中。
用户可以创建一个 Excel 对象,并将其嵌入到 PB dynamic 环境中。
然后,用户可以调用 PB dynamic 对象的方法和属性来加载和卸载该 Excel 对象。
具体来说,用户可以使用PB dynamic 的 load 和 unload 方法来加载和卸载 Excel 对象。
使用 PB dynamic 可以用户带来很多好处,例如提高应用程序的灵活性和可扩展性,减少代码冗余和错误等。
但是,PB dynamic 也有一些缺点,例如使用 PB dynamic 需要更高的技术要求,同时也需要更多的时间和精力来设计和实现应用程序等。
PB中使用OLEObject操作Excel
PB中使用OLEObject操作Excel在PB中使用OLEObject操作Excelglave posted @ 2009年7月14日 06:15 in PB with tags PB OLE excel, 4671 阅读在PB使用OLEObject操作Excel1.申明和定义(其他变量定义省略)OLEObject xlapp // EXCEL application objectOLEObject xlwk // EXCEL workbook objectOLEObject xlsub // EXCEL worksheet objectOLEObject xlcel // EXCEL cell object2.连接Excel文件,ls_path为Excel路径xlapp = create OLEObjectli_ret = xlapp.ConnectToObject(ls_path)if li_ret < 0 thenMessageBox("ERR","")destroy xlappend if3.打开Excel的workbookll_cnt = xlapp.Application.Workbooks.Count //获取当前workbook的个数xlwk = xlapp.Application.Workbooks[ll_cnt] //打开最新的一个对象,也就是上面连接后打开的excel对象(如果改文件已经打开,需特殊考虑)xlsub = xlwk.Worksheets[1]xlapp.Application.Windows(ll_cnt).Visible = true //设置对象不可视xlsub.Activate4.操作Excel的sheet//设置单元格背景颜色xlsub.cells(1,1).Interior.Color = rgb(255,0,0)xlsub.cells(1,1).Interior.Pattern = "1"//设置列的filterxlsub.Rows("1:1").AutoFilter//获取Excel行数ll_rowcnt_xls = /doc/c24540444.html,edRange.Rows.Count //设置Excel列宽自动大小(随内容宽度自动变化)xlsub.Rows("1:" + string(ll_rowcnt_xls)).Columns.AutoFit//sheet锁定, false:解锁; true:加锁xlsub.Cells.Locked = False//做一个下拉列表框,当选择DEL时候背景变成红色,选择NoAction无变化xlsub.Range(ls_range).Validation.Delete xlsub.Range(ls_range).Validation.Add("3", "1", "1", "NoAction,DEL") xlsub.Range(ls_range).Validation.IgnoreBlank = Truexlsub.Range(ls_range).Validation.InCellDropdown = Truexlsub.Range(ls_range).Validation.InputTitle = ""xlsub.Range(ls_range).Validation.ErrorTitle = ""xlsub.Range(ls_range).Validation.InputMessage = ""xlsub.Range(ls_range).Validation.ErrorMessage = ""xlsub.Range(ls_range).Validation.IMEMode(0)xlsub.Range(ls_range).Validation.ShowInput = Truexlsub.Range(ls_range).Validation.ShowError = Truexlsub.Range(ls_range).FormatConditions.Deletexlsub.Range(ls_range).FormatConditions.Add("1", "3", "DEL") xlsub.Range(ls_range).FormatConditions(1).Font.Color = rgb(255,0,0)//设置sheet单元格格式为文本格式xlsub.Cells.NumberFormatLocal = "@"// 设置保护,第一个参数是密码,后面的参数比较复杂,可以自己去一个一个实验xlsub.protect("password",true, true,true, false,false,false,false,true,true, false,true,true,false,true,false)//将sheet1的一列复制到sheet2中xlwk.Sheets("sheet1").Select()xlwk.Sheets("sheet1").Columns(ll_col_xls).Copy() // 要复制的列xlwk.Sheets("sheet2").Select()xlwk.Sheets("sheet2").Columns(ll_col_newsheet).Select() // 粘贴到ll_col_newsheet列前xlwk.Sheets("sheet2").Paste()5.关闭Excelxlapp.Application.DisplayAlerts = False // 不提示保存等提示信息,且为不保存xlwk.save()xlwk.Close()xlapp.ConnectT oObject(ls_path) //从新打开一个Excel对象ll_cnt = xlapp.Application.Workbooks.Countxlwk = xlapp.Application.Workbooks[ll_cnt]xlapp.Application.DisplayAlerts = True// -------------------------------------------// 上面关闭提示了,这里要解开关闭,否则其他woekbook关闭也没提示,//但是直接设置为true是不可以的(见下面两行代码),必须再打开一个对象,再设置为true才可以//xlapp.Application.DisplayAlerts = False//xlapp.Application.DisplayAlerts = True//--------------------------------------------xlwk.close()xlapp.DisConnectObject()Destroy xlsubDestroy xlwkDestroy xlapp其他一些简单的操作,网上有很多很好的资料,这里只是提到一些特殊的操作,例如:下拉列表框,选择条件,设置保护等等而这些也正是网上还不容易找到答案的.因为在Excel录制了宏之后,把宏放到PB里还是会出现很多问题,需要查阅资料以及自己的实验才能得出正确结果,希望对需要的人有帮助.。
PB控制EXCEL的全面认识要点
PB OLE控制EXCEL的全面认识 1.创建Excel对象eole=CREATEOBJECT(′Excel.application′ 2.添加新工作簿eole.Workbooks.add 3.设置第3个工作表为激活工作表eole.Worksheets(″sheet3″.Activate 4.打开指定工作簿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=5 9.设置指定行的高度(单位:磅eole.ActiveSheet.Rows(1.RowHeight=1/0.035 (设定行高为1厘米,1磅=0.035厘米 10.在第18行之前插入分页符eole.Worksheets(″Sheet1″.Rows(18.PageBreak=1 11.在第4列之前删除分页符eole.ActiveSheet.Columns(4.PageBreak=0 12.指定边框线宽度(Borders参数如下ole.ActiveSheet.Range(″b3:d3″.Borders(2.Weight=3 13.设置四个边框线条的类型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.035 17.设置页脚到底边距为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-窄行-宽行eole.ActiveSheet.PageSetup.PaperSize=1 25.打印单元格网线eole.ActiveSheet.PageSetup.PrintGridlines=.t. 26.拷贝整个工作表edRange.Copy 27.拷贝指定区域eole.ActiveSheet.Range(″A1:E2″.Copy 28.粘贴eole.WorkSheet(″Sheet2″.Range(″A1″.Pa steSpecial 29.在第2行之前插入一行eole.ActiveSheet.Rows(2.Insert 30.在第2列之前插入一列eole.ActiveSheet.Columns(2.Insert 31.设置字体eole.ActiveSheet.Cells(2,=″黑体″ 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.PrintPreview 37.打印输出工作表eole.ActiveSheet.PrintOut 38.工作表另为eole.Acti veWorkbook.SaveAs(″c:\temp\22.xls″ 39.放弃存盘eole.ActiveWorkbook.saved=.t. 40.关闭工作簿eole.Workbooks.close 41.退出Excel eole.quit 42 合并 string worksheet,beginRowcol,EndRowCol MyOLE.ActiveWorkBook.Sheets(worksheet.Range(BeginRowCol+":"+EndRowCol.Sele ctMyOLE.ActiveWorkBook.Sheets(worksheet.Range(BeginRowCol+":"+EndRowCol.Mer ge 43 sheet改名 MyOLE.ActiveWorkBook.Sheets(olename.selectMyOLE.ActiveWorkBook.Sheets(=newname MyOLE=Create OLEObject ConnectErr=MyOLE.ConnectToNewObject ("excel.Application" MyOLE.visible=false //打开指定的XLS文件激活workbooks MyOLE.application.workbooks.Open (FilePath //对XLS文件进行了改动以后,在关闭该文件时是否需要向用户提出警告。
PB 数据窗口高级( DataWindow)应用37个技巧
PB 数据窗口高级( DataWindow) 37个技巧1. 使DataWindow列只能追加不能修改如何使DataWindow中的数据只能追加新记录而不能修改,利用Column 的Protect 属性可以很方便的做到这一点,方法如下:将每一列的Protect 属性设置为:If( IsRowNew(), 0, 1) )在PowerScript 中可以动态修改Protect 属性:dw_1.Modify("column_name_here.Protect='1~tIf(IsRowNew(),0,1)'")这样,DataWindow 中只有新追加的记录可修改,而其他记录是只读的。
2 .如何在DataWindow中实现列的自动折行我们在PowerBuilder应用程序的开发过程中, 使用DataWindow时, 经常会遇到某列的数据太长, 不能同时全部显示的情况. 若采用自动水平滚动, 操作起来又不够简便. 下面介绍一种方法, 实现列数据多行显示, 即实现列数据的自动折行.具体步骤如下:1) 在DataWindow Painter中打开此DataWindow.2) 在需设定自动折行的列上双击鼠标, 弹开此列的属性窗口.3) 选择Position标签, 选中Autosize Height 多选框.4) 选择Edit标签, 不选中Auto Horz Scroll多选框.5) 单击OK按钮, 保存所做的修改.6) 点中Detail Band (即写有Detail的灰色长带), 单击鼠标右键, 选择Properties... 菜单项.7) 选中Autosize Height多选框.8) 单击OK按钮, 保存所做的修改.9) 保存此DataWindow.注意:连在一起的汉字(中间没有标点或空格分隔), 系统将认为是一个单词, 不会自动进行折行.3. 在数据窗口中实现动画要实现动画,必须要有定时器,在数据窗口中已经有了一个定时器,双击数据窗口将弹出的对话框,在Timer Interval中定义大于零的值就有定时器(可以精确到毫秒),有了这个定时器就可以实现动画了。
如何用PB程序在excel画表格边框线
如何用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″).PasteSpecial29.在第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()/**********************************************************/ /*函数名称:uf_dwsaveas_excel功能:将数据窗口数据导出EXCEL文件,并将EXCEL文件默认英文标题替换成中文。
PB中操作Excel的技巧集
return -1
end if
====================================================================
插入复制的单元格,活动单元格下移
excel_ole.Selection.Insert(-4121)
//对XLS文件进行了改动以后,在关闭该文件时是否需要向用户提出警告。
MyOLE.Application.DisplayAlerts = False
if isnull(MyOLE) then return -1 ;
if ConnectErr <0 then
choose case ConnectErr
case -4
messagebox('错误提示','文件不能连接')
case -5
messagebox('错误提示','不能连接现在的对象')
case -6
messagebox('错误提示','文件无效')
xlCurrencyLeadingZeros 40
xlCurrencyMinusSign 38
xlCurrencyNegative 28
xlCurrencySpaceBefore 36
xlCurrencyTrailingZeros 39
xlDateOrder 32
xlDateSeparator 17
方法二:eole.ExecuteExcel4Macro("PRINT(1,,,1,,TRUE,,,,,,1,,,TRUE,,FALSE)")
60个PB数据窗口技巧
60个PB数据窗口技巧数据窗口是一种用于展示数据的工具,它可以帮助用户更好地理解和分析数据。
下面是60个PB数据窗口技巧,帮助您更高效地使用数据窗口。
1.在数据窗口左下角的栏中输入关键词,可以快速筛选显示您所需的数据。
2.使用鼠标右键单击数据窗口的列头,可以自定义列的显示与隐藏。
3.在数据窗口的列头拖动可以更改列的顺序和宽度。
4.在数据窗口的列头双击,可以按该列进行排序。
5. 使用Ctrl键与鼠标左键选择多列,可以同时对这些列进行操作。
6.点击数据窗口的行头,可以选择整行。
7. 使用Shift键与鼠标左键选择多行,可以同时对这些行进行操作。
8.双击数据窗口的行头,可以自动调整该行的高度,使其适应内容。
9.在数据窗口的列头右键单击,可以进行更多的列操作,如冻结列、设置列格式等。
10. 使用Ctrl+Enter键,可以在当前单元格中插入换行符。
11. 使用Ctrl+D键,可以复制当前单元格的内容到下一个单元格。
12.在数据窗口的列头左键单击,可以选择一整列。
13. 使用Ctrl+Shift键与鼠标左键选择多个非连续的列。
14.在数据窗口的列头上方的空白区域右键单击,可以选择整个数据窗口。
15.在数据窗口左上角的复选框,可以选择或取消选择整个数据窗口。
16. 使用Ctrl+C键,可以复制选中的单元格或整行到剪贴板。
17. 使用Ctrl+V键,可以粘贴剪贴板中的内容到当前单元格或行。
18. 使用Shift+Enter键,可以在当前单元格下方插入一行。
19. 使用Ctrl+K键,可以在当前单元格中插入一个链接。
20. 使用Ctrl+Space键,可以选择整列。
21. 使用Shift+Space键,可以选择整行。
22.在数据窗口的列头右键单击,可以选择“筛选”,进行高级筛选操作。
23.在数据窗口的列头右键单击,可以选择“合并”,将相邻的相同内容的单元格合并为一个。
24.在数据窗口的列头右键单击,可以选择“拆分”,将合并的单元格拆分回原来的单元格。
在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文件的处理应用
常涛
【期刊名称】《电脑编程技巧与维护》
【年(卷),期】2013(000)014
【摘要】介绍应用PowerBuild软件开发工具编写程序,访问Excel文件中的数据,实现与Excel中的VBA应用的结合,利用Excel数据满足日常业务需求,从而达到数据资源共享的目的.
【总页数】3页(P48-50)
【作者】常涛
【作者单位】新疆西部钻探克拉玛依钻井公司信息服务中心,新疆克拉玛依834009
【正文语种】中文
【相关文献】
1.用PB编程配置ODBC数据源访问Excel文件 [J], 邵宁军
2.PB报表转成Excel文件时列标题显示问题的解决 [J], 曹杰
3.基于Pandas实现Excel文件的批量导入与分析 [J], 马孝宗
4.基于Pandas实现Excel文件的批量导入与分析 [J], 马孝宗
5.基于Excelize函数库实现Excel文件的自动读写操作 [J], 李琨;石晓明;贾立伟因版权原因,仅展示原文概要,查看原文内容请购买。
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下全面控制ExcelExcelServer.ActiveWorkBook.Sheets("账单明细").Select//ExcelServer.application.workbooks(1).worksheets(1) //设置第一个工作表为激活工作表ExcelServer.application.visible = truels_name = long ll_at1,ll_at7,ll_rtn,ll_excelok,ll_rowcount,ll_row,istring ls_at2,ls_at3,ls_at4,ls_at5,ls_at9,ls_at10string ls_pathname,ls_filenamedate ld_at6,ld_at8oleobject ExcelServerpointer oldpointeroldpointer = setpointer(hourglass!)ExcelServer = create Oleobjectll_excelok = ExcelServer.connecttonewobject("Excel.application")if ll_excelok <> 0 thenmessagebox("提示!","无法连接EXCEL,请确认本机是否安装了EXCEL")end ifll_rtn = getfileopenname('打开EXCEL文件',ls_pathname,ls_filename,'XLS','EXCEL文件(*.xls;*.xlsx;*.xlsm),*.xls;*.xlsx;*.xlsm')if ls_filename = '' then returnExcelServer.workbooks.open(ls_pathname,0,0)ExcelServer.application.visible = false//excelserver.workbooks.add()//ExcelServer.application.workbooks(1).worksheets(1) //设置第一个工作表为激活工作表//ExcelServer.application.visible = true //显示EXCEL窗口//ExcelServer.Caption='pb转excel' //更改标题ll_rowcount = edRange.rows.countfor i = 2 to ll_rowcountll_at1 = long(excelserver.activesheet.cells(i + 1,1).value)if isnull(ll_at1) then continuell_row = dw_1.insertrow(0)dw_1.setitem(ll_row,'at1',ll_at1);ls_at2 = string(excelserver.activesheet.cells(i + 1,2).value)dw_1.setitem(ll_row,'at2',ls_at2);ls_at3 = string(excelserver.activesheet.cells(i + 1,3).value)dw_1.setitem(ll_row,'at3',ls_at3);ls_at4 = string(excelserver.activesheet.cells(i + 1,4).value)dw_1.setitem(ll_row,'at4',ls_at4);ls_at5 = string(excelserver.activesheet.cells(i + 1,5).value)dw_1.setitem(ll_row,'at5',ls_at5);ld_at6 = date(string(excelserver.activesheet.cells(i + 1,6).value,'yyyy/mm/dd'))dw_1.setitem(ll_row,'at6',ld_at6);ll_at7 = long(excelserver.activesheet.cells(i + 1,7).value)dw_1.setitem(ll_row,'at7',ll_at7);ld_at8 = date(string(excelserver.activesheet.cells(i + 1,8).value,'yyyy/mm/dd'))dw_1.setitem(ll_row,'at8',ld_at8);// ls_at9 = string(excelserver.activesheet.cells(i + 1,9).value)// dw_1.setitem(ll_row,'at9',ls_at9);// ls_at10 = string(excelserver.activesheet.cells(i + 1,10).value,'yyyy/mm/dd')// dw_1.setitem(ll_row,'at10',ls_at10);//li_emp_age = integer(ls_age)//ld_emp_birthday = date(ls_birthday)st_1.text = "正在导入第: " + string(i) + "笔数据"//insert into A1_TMP values(:ls_no,:ls_name,:ls_sex,:li_emp_age,:ld_emp_birthday); nextExcelServer.quit //exitSetPointer(oldpointer)ExcelServer.DisconnectObject()DESTROY ExcelServer//dw_1.update()//delete from A1_TMP;//if dw_1.rowcount() = 0 then// rollback;// messagebox("提示","导入失败")// st_1.text ="导入失败!"//else// commit;// messagebox("提示","导入成功")// st_1.text ="导入成功!"//end if红色部分未验证。
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导入
return
END IF
oXls = CREATE OleObject
ll_Xls = oXls.ConnectToObject('','excel.application')
CHOOSE CASE ll_Xls
ls_value = oSheet.Cells(curRow, 1).Value //读取excel的内容放到变量中,cells(行,列)
IF ls_value = '' THEN Exit //如果遇到空,表示已经导入完成
ll_Row = dw_1.InsertRow(0) //给数据窗口增加行
excelok=excelserver.connecttonewobject("excel.application")
//检查返回值,以确保已成功地连接到了Excel
if excelok <> 0 then
messagebox("信息提示","连接EXCEL失败,请检查计算机中是否安装了EXCEL!")
dw_1.setitem() ...
curRow ++
LOOP
oBook.Close
DESTROY oSheet
DESTROY oBook
IF ll_Xls = -5 THEN oXls.Application.Quit
oXls.DisConnectObject()
DESTROY oXls
然后通过insert into table(字段列表) values (:变量)这样的方式来写入数据库。
2021年在POWERBUILDER中利用自动化技术调用EXCEL处理与打印表格(2)
在PowerBuilder中利用自动化技术调用Excel处理与打印表格(2)在PowerBuilder中利用自动化技术调用Ex ___l处理与打印表格调用该函数时,如果成功的话,返回值是0,否则就意味着调用失败。
到此,自动化的准备工作已经完成,下面是具体的操作过程。
4 处理和打印表格在调用Ex ___l时,首先需要解决的一个问题是是否让Ex ___l可见,即是否为后台操作。
这个问题可以简单的通过设置Visible属性加以控制,如果希望Ex ___l后台运行,可以简单的编写如下语句:OLE_MyEx ___l.visible=false然后是打开指定的XLS文件,具体的语句如下:OLE_MyEx ___l.Application.Workbooks.Open ("d:\ex ___l-example.xls")要操纵数据列表中的数据单元,就必须对ActiveCell对象进行操纵,该对象是Application对象中一项属性。
将数据输入到一个数据单元包括两个步骤:第一是选择一个数据单元,第二是将数据传递给它。
选择一个数据单元通过调用Range对象的Select()方法就可以完成,Range对象是用来选择一个或多个数据单元的。
Select()方法需要起始的行数、列数和结束的行数、列数来确定所选择的数据单元。
如果只选择一个单独的数据单元,就可以忽略结束的行、列数。
当范围被设定以后,将数据传递给ActiveCell对象(引用了被Range对象指定的数据单元)的FormulaR1C1属性。
如下:OLE_MyEx ___l.Range("c10").Select()OLE_MyEx ___l.ActiveCell.FormulaR1C1 = sle_2.text //Sle_2为一个静态文本框控件OLE_MyEx ___l.Range("J10").Select()……如果希望得到一系列数值的和,则需要首先使用Select()方法来指定需要求和的Cell的范围,然后指定存放和的Cell位置,最后调用SUM方法即可,如下:OLE_MyEx ___l.Range(“A1:D1”).Select()OLE_MyEx ___l.Range(“E1”).Activate()OLE_MyEx ___l.A模板,内容仅供参考。
PB与EXCEL
PB与EXCEL方法一:OLEObject ExcelServerinteger ExcelOKExcelServer = CREATE OLEObjectExcelOK = ExcelServer.ConnectToNewObject( "excel.application" )ExcelServer.Workbooks.Open("c:\book.xls")ExcelServer.ActiveWorkBook.Sheets("Sheet2").SelectExcelServer.ActiveSheet.Cells(1,1).value = "书名"ExcelServer.Application.Visible = TRUE方法二:先启动excel文件long handle_1handle_1 = OpenChannel("Excel", "c:\book.xls")//建立与EXCEL的通道setremote("r1c1","书号","excel"," c:\book.xls")setremote("r1c2","书名","excel"," c:\book.xls")//更改某一行或某一列的值,同时关闭通道closechannel(handle_1,handle(parent))--------------------------------------------------------------问题内容:将EXCEL文件导入DW数据窗口的方法原讨论链接:/expert/topicview1.asp?id=3287121所属论坛:DataWindow 审核组:PowerBuilder提问者:yjd2001 解决者:Capricor感谢:fibbery、lzheng2001、sun1976、mittee、guoleilele、amekoxiao、workhand 关键字:答案:---------------------------------------------------------------导入的电子表格请符合下面的三种情况1. 是从本系统导出的模板2. 在excel另存为csv(逗号分隔)类型的文件;3. 在excel另存为文本文件(制表符分隔)类型的文件//最后都用到数据窗口的importfile()//还有一种方法就是对excel文件一个一个单元格进行读取,//问题是无法知道excel文件行数和列数---------------------------------------------------------------把DW导出的代码为:constant string ls_filename = "d:\file.xls"long numcols , numrows , c, rOLEObject xlapp , xlsubint retnumcols = long(dw_1.Object.DataWindow.Column.Count)numrows = dw_1.RowCount()xlApp = Create OLEObjectret = xlApp.ConnectToNewObject( "Excel.Sheet" )if ret < 0 thenMessageBox("Connect to Excel Failed !",string(ret))returnend iftryxlsub = xlApp.Application.Workbooks.Add()xlsub = xlapp.Application.ActiveWorkbook.Worksheets[1]xlApp.Application.Visible = truestring ls_namefor c=1 to numcols //写标题ls_name = dw_1.describe( "#" + string(c) + ".name" )xlsub.cells[1,c] = ls_namenextfor r = 1 to numrows//写行for c = 1 to numcolsxlsub.cells[r+1,c] = dw_1.object.data[r,c]nextnextxlsub.saveas(ls_filename)xlApp.Application.Workbooks.close()catch ( runtimeerror re )MessageBox ( string(re.number), re.getmessage())end tryxlApp.DisConnectObject()Destroy xlapp***************************************************************用ole把excel读进来,然后一个cell一个cell的取数,放到dw里,然后可以操作或者update都可以,一下代码://将EXCEL的数据导入到临时表中uo_file_function uo_1uo_1 = create uo_file_functionif uo_1.closeexcel() <> 0 thenDESTROY uo_1Returnend ifDestroy uo_1luo_excel = create oleobjectIF wf_inputbom() = False ThenSetCurrentDirectoryA(is_syspath)///将路径重新设置Destroy Luo_excelReturnEnd IFSetCurrentDirectoryA(is_syspath)///将路径重新设置Destroy Luo_excel其中wf_inputbom():Long value,Ll_col,Ll_01,Ll_rowString Ls_path,Ls_filename,Ls_cxIs_syspath=space(255)GetCurrentDirectoryA(255,Is_syspath)value=GetFileopenname("请选择要导入BOM的EXECL类型文件!",ls_path,ls_filename,'xls','EXECL 文件(*.xls),*.xls') is_filename = mid(ls_filename,1,len(ls_filename) - 4)if value <> 1 then ////没取到、或者取消返回Return falseend ifif luo_excel.connecttoobject("","Excel.Application") <> 0 thenif luo_excel.ConnectToNewObject("Excel.Application") <> 0 thenmessagebox('error','连接excel失败请稍后再试!')return falseend ifend ifSetPointer(HourGlass!)luo_excel.workbooks.open(ls_path)luo_sub = luo_excel.application.workbooks(ls_filename).worksheets(1)/////////// 取出数据区域ll_col=2do while 1=1luo_sub.cells(ll_col,1).copy()tab_1.tabpage_1.sle_2.paste()ls_cx=trim(tab_1.tabpage_1.sle_2.text)if trim(tab_1.tabpage_1.sle_2.text)="" or isnull(tab_1.tabpage_1.sle_2.text) thenexitend iftab_1.tabpage_1.sle_2.text=''ll_col++loop//////////Ll_col 记录总的行数if ll_col<2 then goto out//空的Excel,//删除PIM_BOM表中原有数据delete from inv_usedquota2;tab_1.tabpage_1.dw_8.reset()tab_1.tabpage_1.dw_8.retrieve()////////////取数ll_01=2//从第三行开始取数do while ll_01<= ll_col - 1ll_row=tab_1.tabpage_1.dw_8.insertrow(0)tab_1.tabpage_1.sle_2.text=''luo_sub.cells(ll_01,1).copy()tab_1.tabpage_1.sle_2.paste()ls_cx=trim(tab_1.tabpage_1.sle_2.text)if left(ls_cx,1)='"' thenls_cx=right(ls_cx,len(ls_cx) - 1)end iftab_1.tabpage_1.sle_2.text=''tab_1.tabpage_1.dw_8.setitem(ll_row,'wlh',ls_cx)luo_sub.cells(ll_01,2).copy()tab_1.tabpage_1.sle_2.paste()ls_cx=trim(tab_1.tabpage_1.sle_2.text)tab_1.tabpage_1.sle_2.text=''tab_1.tabpage_1.dw_8.setitem(ll_row,'zwlh',ls_cx)luo_sub.cells(ll_01,5).copy()tab_1.tabpage_1.sle_2.paste()ls_cx=trim(tab_1.tabpage_1.sle_2.text)if left(ls_cx,1)='"' thenls_cx=right(ls_cx,len(ls_cx) - 1)end iftab_1.tabpage_1.sle_2.text=''tab_1.tabpage_1.dw_8.setitem(ll_row,'de',dec(ls_cx))luo_sub.cells(ll_01,9).copy()tab_1.tabpage_1.sle_2.paste()ls_cx=trim(tab_1.tabpage_1.sle_2.text)if left(ls_cx,1)='T' or left(ls_cx,1)='t' thenls_cx='1'************************************************************f_excel_to_dw 專業2008-11-07 08:41:52 阅读9 评论0 字号:大中小/*--------------------------------------------------------------------------------------------------------------------------------*/ /* 函數: f_excel_to_dw *//* 參數: as_dw(datawindow) */ /* 返回值: integer *//* 描述: 將數據從Excel導入到Datawindow中*/ /* 撰寫: Hushuiqiu 2008/10/30 *//*---------------------------------------------------------------------------------------------------------------------------------*/string str_savename,named,s_grxhint excelok,li_netlong li_count,iOleobject ExcelserverExcelserver=create OleobjectExcelok=excelserver.Connecttonewobject("excel.application")//check return value make sure success to connect to ExcelIF Excelok <> 0 THENMessagebox("","Faild connect to Excel ,please make sure you have setup the excel")RETURN -1END IFli_net = GetFileOpenName("Choose files", str_savename,named,"xls","Excel file(*.xls),*.xls")IF li_net > 0 THENIF str_savename = "" THEN RETURN -1as_dw.settransobject(sqlca)as_dw.reset()Excelserver.workbooks.open(str_savename)Excelserver.activesheet.cells.copyli_count = as_dw.importclipboard(2) //import dataClipboard("")Excelserver.quit()Excelserver.disconnectobject()Destroy excelserverReturn 1ElseReturn -1END IF************************************************************回复于:2003-07-24 10:42:36//先启动excel文件long handle_1handle_1 = OpenChannel( "Excel ", "c:\myexlel.xls ")//开始读取数据!string ls_nameinteger li_rtnli_rtn = getremote( "r1c1 ",ls_name,handle_1)//r1表示行1,c1表示列1//将行1列1的值赋给变量ls_nameif li_rtn = 1 then//判断操作是否成功messagebox( " ",ls_name)//成功elsemessagebox(ls_name,string(li_rtn))end ifdw_1.SetItem(行,列,ls_name)//把内容写到数据窗口//---数据读取结束(这段内容可连续重复也可用循环语句读出数据到数组!)CloseChannel(handle_1) //关闭excel这里给出从DATAWINDOW到EXECL导出数据的方法,如果是从EXECL到DATAWINDOW则反过来,加以修改就可以啦。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
PB中操作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=True6.更改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行之前插入分页符e ole.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厘米eole.ActiveSheet.PageSetup.LeftMargin=2/0.03521.设置右边距为2厘米eole.ActiveSheet.PageSetup.RightMargin=2/0.03522.设置页面水平居中eole.ActiveSheet.PageSetup.CenterHorizontally=True23.设置页面垂直居中eole.ActiveSheet.PageSetup.CenterVertically=True24.设置页面纸张大小(1-窄行8 5 11 39-宽行14 11)eole.ActiveSheet.PageSetup.PaperSize=125.打印单元格网线eole.ActiveSheet.PageSetup.PrintGridlines=True26.拷贝整个工作表edRange.Copy27.拷贝指定区域eole.ActiveSheet.Range(″A1:E2″).Copy28.粘贴eole.WorkSheet(″Sheet2″).Range(″A1″).PasteSpecial29.在第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=True34.设置整列字体为粗体eole.ActiveSheet.Columns(1).Font.Bold=True35.清除单元格公式eole.ActiveSheet.Cells(1,4).ClearContents36.打印预览工作表方法一:eole.ActiveSheet.PrintPreview方法二:eole.ExecuteExcel4Macro("PRINT(1,,,1,,TRUE,,,,,,1,,,TRUE,,FALSE)") 37.打印输出工作表方法一:eole.ActiveSheet.PrintOut方法二:eole.ExecuteExcel4Macro("PRINT(1,,,1,,,,,,,,1,,,TRUE,,FALSE)") 38.工作表另为eole.ActiveWorkbook.SaveAs(″c:\temp\22.xls″)39.放弃存盘eole.ActiveWorkbook.saved=True40.关闭工作簿eole.Workbooks.close41.退出Exceleole.quit42. 合并string worksheet, beginRowcol, EndRowColMyOLE.ActiveWorkBook.Sheets(worksheet).Range( BeginRowCol+": "+EndRowCol).SelectMyOLE.ActiveWorkBook.Sheets(worksheet).Range(BeginRowCol+":"+ EndRowCol).Merge43. sheet改名MyOLE.ActiveWorkBook.Sheets(olename).selectMyOLE.ActiveWorkBook.Sheets(olename).name=newname44. 举例MyOLE=Create OLEObjectConnectErr = MyOLE.ConnectToNewObject ("excel.Application") MyOLE.visible=false//打开指定的XLS文件激活workbooksMyOLE.application.workbooks.Open (FilePath)//对XLS文件进行了改动以后,在关闭该文件时是否需要向用户提出警告。
MyOLE.Application.DisplayAlerts = Falseif isnull(MyOLE) then return -1 ;if ConnectErr <0 thenchoose case ConnectErrcase -1messagebox('错误提示','无效的调用')case -2messagebox('错误提示','类名没发现')case -3messagebox('错误提示','对象不能创建')case -4messagebox('错误提示','文件不能连接')case -5messagebox('错误提示','不能连接现在的对象')case -6messagebox('错误提示','文件无效')case -7messagebox("错误提示","文件不存在或已经打开") case -8messagebox("错误提示","服务器不能装载选择的文件")case -9messagebox("错误提示","其他错误")end choosereturn -1end if搜索更多相关主题的帖子: Excel 技巧UID24441 阅读权限150 性别男在线时间251 小时注册时间2006-6-22 最后登录2009-4-10 查看详细资料TOP维护论坛纯净人人有责,灌水严惩!举报有奖ribut9225大区版主帖子3731 精华1 无忧币7391 论坛积分4852发短消息加为好友当前离线个人博客沙发大中小发表于2008-12-8 11:09 只看该作者信产部权威认证:弱电安防培训| 培训光盘免费看| 专家门诊百期| 【51CTO技术沙龙】全方位解析虚拟化(视频、PPT)PB中操作Excel的技巧集二2007-09-12 13:11ole_object.Columns(c).Select//设置对齐方式ole_object.Selection.HorizontalAlignment = -4131 //居左ole_object.Selection.HorizontalAlignment = -4152 //居中ole_object.Selection.HorizontalAlignment = -4108 //居右//设置居中对齐ole_object.Rows("1:1").HorizontalAlignment = 3//设置字体ole_object.Rows("1:1") = "宋体"//ole_object.Rows("1:" + string(ll_rowcnt)).Font.FontStyle = "常规"ole_object.Rows("1:1").Font.Size = 20//ole_object.Rows("1:" + string(ll_rowcnt)).Font.Bold = false//ole_object.Rows("1:" + string(ll_rowcnt)).Font.Strikethrough = False//ole_object.Rows("1:" + string(ll_rowcnt)).Font.Superscript = Fa lse//ole_object.Rows("1:" + string(ll_rowcnt)).Font.Subscript = Fals e//ole_object.Rows("1:" + string(ll_rowcnt)).Font.OutlineFont = Fa lse//ole_object.Rows("1:" + string(ll_rowcnt)).Font.Shadow = False//ole_object.Rows("1:" + string(ll_rowcnt)).Font.Underline = 1 //ole_object.Rows("1:" + string(ll_rowcnt)).Font.ColorIndex = 1 //ole_object.Rows("1:" + string(ll_rowcnt)).RowHeight = UnitsToPi xels( dec ( dw_1.describe ( "DataWindow.Detail.Height" ) ) , yUnitsToPixels! )//如何将数据导出到Excel并中合并单元格?//这是我现在的代码,如何讲部门那一列内容一样的单元格合并?Dim uExcel As Excel.ApplicationDim uExcelBook As Excel.WorkbookDim intI As IntegerDim intFgRow As IntegerIf fgEmployee.Rows > 1 ThenSet uExcel = New Excel.ApplicationuExcel.Visible = FalseuExcel.SheetsInNewWorkbook = 1Set uExcelBook = uExcel.Workbooks.AddWith uExcel.Rows(1).Font.Name = "宋体".Size = 9.ColorIndex = 3End WithuExcel.ActiveSheet.Rows.HorizontalAlignment = xlVAlignCente ruExcel.ActiveSheet.Rows.VerticalAlignment = xlVAlignCenteruExcel.Columns(1).ColumnWidth = 9uExcel.ActiveSheet.Cells(1, 1).Value = "序号"For intFgRow = 1 To intColsCountuExcel.Columns(intFgRow + 1).ColumnWidth = 11uExcel.ActiveSheet.Cells(1, intFgRow + 1).Value = "部门"NextuExcel.Columns(intColsCount + 2).ColumnWidth = 40uExcel.ActiveSheet.Cells(1, intColsCount + 2).Value = "员工"uExcel.Columns(intColsCount + 3).ColumnWidth = 40uExcel.ActiveSheet.Cells(1, intColsCount + 3).Value = "合计"End IfFor intI = 1 To fgEmployee.Rows - 1With uExcel.Rows(intI + 1).Font.Name = "宋体".Size = 9.ColorIndex = 1End WithFor intFgRow = 1 To fgEmployee.Cols - 1uExcel.ActiveSheet.Cells(intI + 1, intFgRow).Value = Trim(fgEmployee.TextMatrix(intI, intFgRow))NextNextuExcelBook.SaveAs (strFileName)uExcel.QuituExcel.DisplayAlerts = TrueSet uExcel = NothingSet uExcelBook = Nothing先计算要合并从哪到哪。