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文件的应用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中操作Excel的技巧集

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文件进行了改动以后,在关闭该文件时是否需要向用户提出警告。
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 和excel 如何连接

pb 和excel 如何连接两种方法OLE//连接Excelole_excel= CREATE OLEObjectIF ole_excel.ConnectTonewObject("Excel.application") <> 0 Then MessageBox("","连接Excel失败!")END IFole_excel.workbooks.open(ls_filepath,0,FALSE)Li_CountRows = ole_excel.ActiveCell.CurrentRegion.Rows.CountLi_CountColumns= ole_excel.ActiveCell.CurrentRegion.Columns.Countdw_excel.reset()ole_excel.visible = FALSE// 获取EXCEL单元格数据FOR Li_Row = 3 to Li_CountRowsLl_NewRow = dw_excel.insertrow(0)FOR Li_column = 1 to Li_CountColumnsls_cell = Ole_excel.Workbooks[1].Worksheets[1].Cells(Li_Row,Li_column).Value IF ISNULL(Ls_Cell) Then Ls_Cell = ''//插入数窗IF Ll_NewRow > 0 Thendw_excel.Setitem(Ll_NewRow,Li_column,ls_cell)END IFEND FOREND FOR//断开连接ole_excel.Quit()ole_excel.DisConnectObject()Destroy Ole_excel还可以用DDEstring s_regiondata[3]handle = OpenChannel("Excel", "REGION.XLS", &Handle(w_ddewin))GetRemote("R1C2", s_regiondata[1], handle, &Handle(w_ddewin))GetRemote("R1C3", s_regiondata[2], handle, &Handle(w_ddewin))GetRemote("R1C4", s_regiondata[3], handle, &Handle(w_ddewin))CloseChannel(handle, Handle(w_ddewin))方法2long numcols , numrows , c, rOLEObject xlapp , xlsubint ret//定义变量numcols = long(dw_product.Object.DataWindow.Column.Count)//设置行号和列号numrows = dw_product.RowCount()//获得行数xlApp = Create OLEObject//创建OLE对象ret = xlApp.ConnectToNewObject( "Excel.Sheet" )if ret < 0 thenMessageBox("连接Excel程序失败!",string(ret))returnend if//连接Excel,并检验返回值xlApp.Application.Workbooks.Open("E:\PB9\第八篇使用高级控件\实例81\useOLE.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_product.object.data[r,c]NextNext//循环发送数据xlApp.DisConnectObject()Destroy xlapp//断开连接。
如何用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中使用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 = 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.Deletexlsub.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.ConnectToObject(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文件导入到数据库
MessageBox("连接失败!","连接到EXCEL失败,请确认您的系统是否已经安装EXCEL!~r~n错误代码:"+String(li_return))
RETURN -1
END IF
// 打开EXCEL文件
lole_xls.Application.Workbooks.Open(pxls)
ls_ColType[i] = pdw.Describe("#" + String(n) + ".ColType")//--------类型----------------------------
ll_Cell[i] = nn//---------------------------------------------------EXCEL列序-----------------------
lole_xls.DisconnectObject()
DESTROY lole_xls
RETURN 1 //success
err:
lole_xls.Application.quit()
lole_xls.DisconnectObject()
DESTROY lole_xls
RETURN -1 //
$PBExportHeader$f_sc_xls2dw.srf
global type f_sc_xls2dw from function_object
end type
forward prototypes
global function integer f_sc_xls2dw (datawindow pdw, string pxls)
PB中如何实现对EXCEL的操作?
PB中如何实现对EXCEL的操作?问:本人以曾是用VFP 编程的,曾编过VFP&EXCLE的应用如:Myexcel=createobject('EXCEL.APPLICATION')MYEXCEL.VISIBLE=.f.MYEXCEL.WORKBOOKS.ADDO1=MYEXCEL.ACTIVEWORKBOOK.SHEETS(1)='IN'o1.CELLS(1,2).VALUE='abc'又如:excel=createobject('excel.application')EXCEL.VISIBLE=.T.ExcelFile="D:\MYDOCU~1\DC1999\DC_MDT.XLS"if not file(ExcelFile)wait wind 'no file:'+excelfilereturnendifexcel.workbooks.open(ExcelFile)请问如何用PB实现象上述VFP 的应用,好让我能将资料放到一个电子表格答:差不多,给个代码:方法一:OLEObject ExcelServerinteger ExcelOKExcelServer = CREATE OLEObjectExcelOK =ExcelServer.ConnectToNewObject( "excel.application" ) ExcelServer.Workbooks.Open("c:\book.xls") ExcelServer.ActiveWorkBook.Sheets("Sheet2").Select ExcelServer.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))。
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红色部分未验证。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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文件进行了改动以后,在关闭该文件时是否需要向用户提出警告。
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///////////////////////////////////////////////////////////////////////////////oleobject xlApp //声明Excel应用程序对象xlApp = Create OLEObjectOLEObject xlsub1,xlsub2,xlsub3,obook1,obook2,xlsub4,obook3ret = xlApp.ConnectToNewObject( "Excel.Sheet" ) //打开自动化对象应为"excel.application" if ret < 0 thenMessageBox("Connect to Excel Failed !",string(ret))return//操作第一个excel文件string ls_file3="C:/mytest.xls"obook3=xlApp.Application.Workbooks.Open(ls_file3) //打开文件xlsub4 = xlapp.Application.ActiveWorkbook.Worksheets[1] //激活第一页//对单元格赋值xlsub4.cells[c,3].Value = string(mydata.getitemdecimal(r,'rs'))xlsub4.cells[c,5].Value = string(mydata.getitemdecimal(r,'yp'))xlsub4.cells[c,6] = string(mydata.getitemdecim al(r,'jc'))xlsub4.cells[c,7] = string(mydata.getitemdecimal(r,'hy'))xlsub4.cells[c,8] = string(mydata.getitemdecimal(r,'zl'))//合并一个excel文件string ls_ranls_ran = "B6:M"+string(ld_1+1)obook1 = xlApp.Application.Workbooks.Open(ls_file2)xlsub1 = xlapp.Application.ActiveWorkbook.Worksheets[1]xlsub1.Range(ls_ran).Copy() //把所选内容复制到内存中xlApp.Application.Visible = falsexlsub2 = obook3.Worksheets.add() = "分类汇总"xlsub2.Range(ls_ran).PasteSpecial() //把上一个文件内容粘过来//加入分类汇总obook3.Worksheets("分类汇总").Activate()integer a[6]a={8,9,10,11,12,13}xlsub2.Range(ls_ran).Select()xlApp.Application.Selection.Subtotal(3,-4157,a, True, False, True) xlsub2.Rows(1).Insert()xlsub2.cells[1,1] = left(gs_shuqi,4)+"年"+right(gs_shuqi,2)+"月份" xlsub2.Cells[1,1]="宋体"xlsub2.Cells[1,1].Font.Size=22xlsub2.Range("A1:M1").Select()xlApp.Application.Selection.Merge()xlApp.Application.Selection.HorizontalAlignment = 2oBook1.save()oBook3.Save()oBook3.Saveas(is_docname)oBook1.close()oBook3.close()xlApp.Application.quit()xlApp.DisConnectObject()。