vfp直接读取EXCEL文件示例
vfp调用wordORexcel(一)
vfp调用wordORexcel(一)vfp调用word OR excel(一)1.VFP全面控制EXCLVFP和Excel都可以用来进行处理数据库表格,如果巧妙地将二者的优点结合起来,将会大大方便我们的工作。
比如我们可以利用VFP 进行处理数据,而利用Excel的预览打印功能进行报表打印。
这就需要我们在VFP中直接来控制Excel。
下面就在开发VFP应用项目时对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″).B orders(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.Cent erFooter=″第&P页″16.设置页眉到顶端边距为2厘米eole.ActiveSheet.PageSetup.HeaderMargin=2/0.03517.设置页脚到底边距为3厘米eole.ActiveSheet.PageSetup.FooterMargin=3/0.03518.设置顶边距为2厘米eole.ActiveSheet.PageSetup.T opMargin=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.A ctiveWorkbook.SaveAs(″c:\temp\22.xls″)39.放弃存盘eole.ActiveWorkbook.saved=.t.40.关闭工作簿eole.Workbooks.close41.退出Exceleole.quit2.VFP数据导出至EXCEL问题这样设计:oexl=createobject("excel.application")oexl.workbooks.addoexl.visible=.t.oexl.workbooks(1).activateoexl.cells(1,1).value="名称1"oexl.cells(1,2).value="名称2"oexl.cells(1,3).value="名称3"3.如何在VFP5.0中利用EXCEL的功能做报表在VFP中调用Excel要利用Automation。
VFP全面控制EXCEL
最近正好有空,看到不少人对VFP控制EXCEL有兴趣,现将上次的“精华贴"重新整理一下,供各位爱好者参考!oExcel。
Selection。
NumberFormatLocal = "@" &&把被选定的单元格设为文本格式1、对象的创建与关闭*******************************eole=CREATEOBJECT('Excel.application') &&创建Excel对象eole.Workbooks。
add && 添加新工作簿eole。
Worksheets(”sheet3").Activate &&设置第3个工作表为激活工作表eole。
Workbooks。
Open(”D:\ABC\11.xls”) &&打开指定工作簿eole。
visible=。
t. && 显示Excel窗口eole。
visible=。
F。
&& 不显示Excel窗口eole。
Caption="VFP应用程序调用Microsoft Excel”&&更改Excel标题栏eole。
ActiveWorkbook.SaveAs(”D:\ABC\22。
xls") &&工作表另为eole。
ActiveWorkbook。
saved=。
t. && 放弃存盘eole。
edRange。
Copy && 拷贝整个工作表eole。
ActiveSheet。
Range("A1:E2”)。
Copy &&拷贝指定区域eole.WorkSheet("Sheet2”)。
Range(”A1").PasteSpecial &&粘贴eole。
ActiveWorkbook.Save && 存盘(自动存盘不提问)eole。
Workbooks.close &&关闭工作簿eole。
VFP控制EXCEL的方法(终于找到了)
VFP控制EXCEL的常用方法oExl=CREATEOBJECT('Excel.application')oExl.Visible=.T.oExl.DefaultSaveFormat=39oExl.SheetsInNewWorkbook=1oExl.Workbooks.Open(cXLS)oExl.WindowState=-4140 &&窗口最小化oExl.WindowState=-4143 &&窗口正常化oExl.WindowState=-4147 &&窗口最大化*------------------------------------------------------*&&页面设置oExl.ActiveSheet.PageSetup.PrintTitleRows="$1:$3" &&打印标题oExl.ActiveSheet.PageSetup.Orientation=2 &&页面方向:1纵向/2横向*oExl.ActiveSheet.PageSetup.PaperSize=11 &&纸张尺寸:9-A4/11-A5oExl.ActiveSheet.PageSetup.TopMargin=0.8/0.035 &&顶边距oExl.ActiveSheet.PageSetup.BottomMargin=0.8/0.035 &&底边距oExl.ActiveSheet.PageSetup.LeftMargin=0 &&左边距oExl.ActiveSheet.PageSetup.RightMargin=0 &&右边距oExl.ActiveSheet.PageSetup.CenterHorizontally=.T. &&页面居中oExl.ActiveSheet.PageSetup.HeaderMargin=0.5/0.035oExl.ActiveSheet.PageSetup.FooterMargin=0.5/0.035oExl.ActiveSheet.PageSetup.LeftHeader="&9表格"”9是字号”oExl.ActiveSheet.PageSetup.CenterHeader=""oExl.ActiveSheet.PageSetup.RightHeader="&9"oExl.ActiveSheet.PageSetup.LeftFooter=""oExl.ActiveSheet.PageSetup.CenterFooter="&9第&P页,共&N页"oExl.ActiveSheet.PageSetup.RightFooter="&9制表人:'+代码+' 制表时间:"+TTOC(DATETIME()) *------------------------------------------------------*&&整体格式设置oExl.ActiveSheet.Rows.Font.Size=9='宋体'oExl.ActiveSheet.Rows.RowHeight=0.5/0.035oExl.ActiveSheet.Rows.NumberFormatLocal="0.00_ ;[红色]-0.00"oExl.ActiveSheet.Rows.VerticalAlignment=2 &&单元格内容垂直居中*------------------------------------------------------*&&获取最大行号和最大列号Local nMaxRow,nMaxColnMaxRow=edRange.Rows.CountnMaxCol=edRange.Columns.Count&&表头格式设置oExl.ActiveSheet.Rows(1).Font.Size=16oExl.ActiveSheet.Rows(1).Font.Bold=.T.oExl.ActiveSheet.Rows(1).RowHeight=1/0.035oExl.ActiveSheet.Rows(1).HorizontalAlignment=3oExl.ActiveSheet.Rows(2).HorizontalAlignment=3oExl.ActiveSheet.Rows(3).HorizontalAlignment=3oExl.ActiveSheet.Rows(3).Font.Bold=.T.oExl.ActiveSheet.Range('A1:'+CHR(96+nMaxCol)+'1').MergeoExl.ActiveSheet.Range('A2:'+CHR(96+nMaxCol)+'2').Merge*------------------------------------------------------*&&条件格式隐藏0值edRange.FormatConditions.DeleteedRange.FormatConditions.Add(1,3,'0')edRange.FormatConditions(1).Font.ColorIndex=2&&文字白色*------------------------------------------------------*oExl.ActiveSheet.Range('A1:B1').Interior.ColorIndex=6 &&单元格底纹黄色*------------------------------------------------------*oExl.ActiveSheet.Columns.AutoFit &&自动列宽oExl.ActiveSheet.Range("A3:"+CHR(96+nMaxCol)+ALLTRIM(STR(nMaxRow))).Borders.Weight=2 &&边框线*------------------------------------------------------*&&自动筛选IF !oExl.ActiveSheet.AutoFilterMode &&判断是否存在自动筛选oExl.ActiveSheet.Rows(3).Autofilter &&如果不存在自动筛选,则添加自动筛选ENDIF*------------------------------------------------------*&&冻结窗格oExl.ActiveSheet.Range('D4').SelectoExl.ActiveWindow.FreezePanes = .T.*------------------------------------------------------**------------------------------------------------------*&&分类汇总Local Arry(1),nMaxRow,nMaxColArry(1)=5nMaxRow=edRange.Rows.CountnMaxCol=edRange.Columns.CountoExl.ActiveSheet.Range('A3:'+chr(96+nMaxCol)+alltrim(str(nMaxRow))).Subtotal(2,-4157,@Arry,.T .,.F.,.T.) &&按第2列分类汇总数组Arry保存的列*------------------------------------------------------*1、对象的创建与关闭*******************************oExl=CREATEOBJECT('Excel.application')&&创建Excel对象oExl.SheetsInNewWorkbook=1 &&新建工作簿默认包含工作表个数oExl.Workbooks.Add &&新建工作簿,工作表个数由SheetsInNewWorkBooks属性指定oExl.Workbooks.Open(cXLS,3,.T.)&&打开指定工作簿(更新链接/只读打开)oExl.Workbooks.Open(cXLS, [UpdateLinks], [ReadOnly], [Format], [Password], [WriteResPassword], [IgnoreReadOnlyRecommended], [Origin], [Delimiter], [Editable], [Notify], [Converter], [AddToMru], [Local], [CorruptLoad])oExl.Worksheets(cSheet).Activate&&激活工作表Sheet3 oExl.Worksheets(3).Activate &&激活(从左到右)第3个工作表oExl.WorkSheets.Count &&工作簿中工作表数oExl.DefaultSaveFormat=39 &&默认格式Excel 5.0oExl.DisplayAlerts=.F. &&不显示警告信息oExl.Visible=.T.&&显示Excel窗口oExl.Visible=.F.&&不显示Excel窗口oExl.Caption="Excel标题栏"&&更改Excel标题栏oExl.WorkSheet("Sheet2").Range("A1").PasteSpecial&&粘贴oExl.Quit &&退出ExceloExl.DisplayRecentFiles=.T. &&是否显示最近打开文档oExl.RecentFiles.Maximum=4 &&历史最大纪录数erName="XXXX" &&用户名oExl.StandardFont="宋体" &&标准字体oExl.StandardFontSize="12" &&标准字体大小oExl.DefaultFilePath="D:\XXXXXX\" &&默认工作目录oExl.EnableSound=False &&声音反馈oExl.RollZoom=False &&智能鼠标缩放oExl.TransitionMenuKey="/" &&Microsoft Office Excel菜单键oExl.ActiveWorkbook.Password="123"oExl.ActiveWorkbook.WritePassword="456"oExl.ActiveWorkbook.ReadOnlyRecommended=FalseoExl.ActiveWorkbook.SetPasswordEncryptionOptions PasswordEncryptionProvider:="", _PasswordEncryptionAlgorithm:="OfficeStandard", PasswordEncryptionKeyLength:=40 _, PasswordEncryptionFileProperties:=FalseIF oExl.ActiveWorkbook.FileFormat==39 &&格式为Excel 5.0工作簿ENDIFoExl.ActiveWorkBook.SaveAs(FileName,FileFormat,PassWord,WriteResPassWord,ReadOnlyRecom mended,CreateBackup)&&另存为&&参数说明FileName 字符型,指定文件名FileFormat 数值型,文件格式-4143 Microsoft Office Excel11 DBF439 Microsoft Excel 5.0/9543 Microsoft Excel97-Excel2003 & 5.0/9544 网页Html文件-4158 文本文件(制表符分隔)PassWord 字符型,只读密码WriteResPassWord 字符型,写密码ReadOnlyRecommended 逻辑型,建议只读CreateBackup 逻辑型,自动备份例如:oExl.ActiveWorkBook.SaveAs("d:\1.xls",39)oExl.ActiveWorkbook.saved=.T.&&放弃存盘oExl.ActiveWorkbook.Save&&存盘(自动存盘不提问)oExl.Workbooks.close&&关闭工作簿3、单元格的设置***********************************&&冻结窗格oExl.ActiveSheet.Range('D4').SelectoExl.ActiveWindow.FreezePanes = .T.&&条件格式设定oExl.ActiveSheet.Range('A1:H18').FormatConditions.Add(Type,Operator,Formula1,Formula2) Type 类型(1单元格数值,2公式)Operator 操作符(1介于,2不介于,3等于,4不等于,5大于,6小于,7大于等于,8小于等于) Formula1 表达式1Formula2 表达式2,操作符为1介于或2不介于才有效&&条件格式例句:数值为0者,文字颜色白色edRange.FormatConditions.DeleteedRange.FormatConditions.Add(1,3,'0')edRange.FormatConditions(1).Font.ColorIndex=2&&文字白色&&编辑edRange.Copy&&拷贝整个工作表oExl.ActiveSheet.Range("A1:E2").Copy&&拷贝指定区域oExl.ActiveSheet.Columns("D:D").Delete&&删除列oExl.ActiveSheet.Columns("A:B").Delete&&删除列oExl.ActiveSheet.Rows(1).Insert &&在第1行之前插入一行oExl.ActiveSheet.Columns(2).Insert&&在第2列之前插入一列oExl.ActiveSheet.Cells(1,2).Value="ABTMC"&&给单元格赋值oExl.ActiveSheet.Cells(2,2).Value="&BBBB"&&给单元格赋值oExl.ActiveSheet.Cells(1,4).ClearContents&&清除单元格公式oExl.ActiveSheet.Rows(18).PageBreak=1&&在第18行之前插入分页符oExl.ActiveSheet.Columns(4).PageBreak=0&&在第4列之前删除分页符oExl.ActiveSheet.Rows(3).AutoFilter &&自动筛选oExl.ActiveSheet.Cells(1,1).Delete(-4159) &&删除单元格-4159 右边单元格左移-4162 下边单元格上移oExl.Selection.EntireRow.Delete &&所在行整行删除oExl.Selection.EntireColumn.Delete &&所在列整列删除oExl.ActiveSheet.Cells(1,1).Insert(-4142) &&插入单元格-4142 活动单元格下移-4161 活动单元格右移oExl.ActiveSheet.Selection.EntireRow.Insert &&插入行oExl.ActiveSheet.Selection.EntireColumn.Insert &&插入列&&选择性粘贴oExl.ActiveSheet.Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=FalsePaste 粘贴数据:8列宽,11公式和数值格式,12数值与数值格式,-4104全部,-4123公式,-4163数值,-4122格式,Operation 运算符:-4142无,2加,3减,4乘,5除SkipBlanks 跳过空白单元:逻辑型Transpose 转置:逻辑型--------------------------------------------------&&排序成功例句:oExl.ActiveSheet.Range('A1:'+CHR(96+nMaxCol)+ALLTRIM(STR(nMaxRow))).Sort(oExl.ActiveSheet .Range(CHR(96+ASCAN(Arry,'原币金额'))+'2'),2,,,,,,1)&&按"原币金额"所在列降序排列,有标题oExl.ActiveSheet.Rows('1:28').SortKey1:=Range("A2"), Order1:=xlDescending,Key2:=Range("B2"), Order2:=xlAscending,Key3:=Range("C2"), Order3:=xlDescending,Header:=xlYes,OrderCustom:=6,MatchCase:=True,Orientation:=xlTopToBottom,SortMethod:=xlStroke,DataOption1:=xlSortNormal,DataOption2:=xlSortNormal,DataOption3:=xlSortNormal参数说明:2 xlDescending降序1 xlAscenging升序标题行:0 xlGuess1 xlYes,2 xlNo1 xlTopToBottom排序方法:1 xlPinYin,2 xlStroke0 xlSortNormalKey1 排序字段:取值类型是范围oExl.ActiveSheet.Range('B2')Order1 升序降序:xlAscending=1升序,xlDescending=2降序Header 有无标题:xlGuess=0自动判断,xlYes=1有,xlNo=2无orderCustom 排序顺序:1普通,6日一二三MatchCase 是否区分大小写:T区分,F不区分Orientation 1从头到底,2从左到右SortMethod 排序方法:xlPinYin=1拼音,xlStroke=2字母DataOption1 xlSortNormal=0正常DataOption2DateOption3&&分类汇总LOCAL Array(1)Array(1)=5oExl.ActiveSheet.Range('A1:G28').Subtotal(2,-4157,@Array,.T.,.F.,.T.)参数列表:GroupBy:=2, Function:=xlSum, TotalList:=Array(3), Replace:=True, PageBreaks:=False, SummaryBelowData:=True参数说明:GroupBy 分组字段序号Function 汇总方式:-4157求和,-4112计数TotalList 汇总数据项:保存汇总列序号的数组引用Replace 替换当前分类汇总:逻辑型,默认TPageBreaks 每组数据分页:逻辑型,默认FSummaryBelowData 汇总结果显示在数据下方:逻辑型,默认T&&汇总结果表间切换oExl.ActiveSheet.Outline.ShowLevels RowLevels:=2oExl.ActiveSheet.Outline.ShowLevels RowLevels:=1oExl.ActiveSheet.Outline.ShowLevels RowLevels:=3&&数值格式设置oExl.ActiveSheet.Range("A").NumberFormatLocal="0.00"&&指定区域内的数字显示格式&&对齐设置oExl.ActiveSheet.Range('A1:B1').HorizontalAlignment=3&&水平方向2左对齐,3居中,4右对齐edRange.VerticalAlignment=2&&垂直方向1靠上,2居中,3靠下oExl.ActiveSheet.Range('A1:B1').WrapText=.T. &&自动换行oExl.ActiveSheet.Range('A1:B1').Orientation = -4166 &&文字方向-4166 垂直向下oExl.ActiveSheet.Range('A1:B1').AddIndent = False &&缩进oExl.ActiveSheet.Range('A1:B1').IndentLevel = 2 &&缩进2字符oExl.ActiveSheet.Range('A1:B1').ShrinkToFit = .T. &&缩小以填充oExl.ActiveSheet.Range('A1:B1').ReadingOrder = -5002 &&文字阅读方向-5002 根据内容-5003 从左到右oExl.selection.MergeCells=.T.&&合并单元oExl.selection.HorizontalAlignment=2&&水平方向2左对齐,3居中,4右对齐oExl.selection.VerticalAlignment=2&&垂直方向1靠上,2居中,3靠下&&字体设置oExl.ActiveSheet.ROWS(1)="黑体"&&设置字体oExl.ActiveSheet.ROWS(1).Font.FontStyle="常规"oExl.ActiveSheet.ROWS(1).Font.Size=14&&设置字体大小oExl.ActiveSheet.ROWS(1).Font.Bold=.T.&&设置整行字体为粗体oExl.ActiveSheet.ROWS(1).Font.StrikeThrough=.T. &&删除线oExl.ActiveSheet.Cells(1,1).Font.Italic=.T.&&设置字体为斜体oExl.ActiveSheet.ROWS(1).Font.Superscript = .T. &&上标oExl.ActiveSheet.ROWS(1).Font.Subscript = .T. &&下标oExl.ActiveSheet.ROWS(1).Font.OutlineFont = FalseoExl.ActiveSheet.ROWS(1).Font.Shadow = FalseoExl.ActiveSheet.ROWS(1).Font.Underline = -4142 &&下划线oExl.ActiveSheet.ROWS(1).Font.ColorIndex = -4105 &&字体颜色自动设置oExl.ActiveSheet.ROWS(1).Font.Underline = 2 &&下划线类型下划线类型2 单下划线&&边框设置oExl.ActiveSheet.Range("b3:d3").Borders.Weight=2&&指定边框线宽度其中Borders参数:1-左、2-右、3-顶、4-底、5-斜\、6-斜/;不带参数表示默认上下左右四个边框LineStyle值:1与7-细实、2-细虚、4-点虚、9-双细实线)oExl.ActiveSheet.Range("A1:BE29").Borders(1).LineStyle=1 &&设置四个边框线条的类型oExl.ActiveSheet.Range("A1:BE29").Borders(2).LineStyle=1 &&设置四个边框线条的类型oExl.ActiveSheet.Range("A1:BE29").Borders(3).LineStyle=1 &&设置四个边框线条的类型oExl.ActiveSheet.Range("A1:BE29").Borders(4).LineStyle=1 &&设置四个边框线条的类型&&1 xlContinuous&&2 xlThin&&5 xlDiagonalDown&&6 xlDiagonalUp&&10 xlEdgeRight&&12 xlInsideHorizontal&&行列设置oExl.ActiveSheet.Columns(1).ColumnWidth=20&&列的宽度(单位:字符个数)oExl.ActiveSheet.Columns(2).ColumnWidth=30oExl.ActiveSheet.Columns("C:BE").ColumnWidth=9.5oExl.ActiveSheet.Columns.AutoFit&&最适合的列宽oExl.ActiveSheet.Rows(1).RowHeight=1/0.035&&设置指定行的高度(单位:磅)(行高为1厘米,1磅=0.035厘米)oExl.ActiveSheet.Range('A1:B1').Interior.ColorIndex=nColorIndex &&设置底纹常用颜色值ColorIndex1 黑色2 白色3 红色4 鲜绿5 蓝色6 黄色7 粉红8 青绿9 深红10 绿色13 紫罗兰15 灰-25%34 浅青绿36 浅黄38 玫瑰红39 淡紫40 茶色42 水绿46 橙色53 褐色54 梅兰oExl.ActiveSheet.Range('P3:P4').Orientation=-4166 &&文字方向垂直&&同一工作簿中复制工作表副本oExl.WorkSheets(1).Copy(oExl.ActiveWorkBook.Sheets(1))&&不同工作簿oExl.Sheets(1).copy(oExl.Workbooks("BOOK1.XLS").Sheets(1))3、页面设置***********************************************oExl.ActiveSheet.PageSetup.TopMargin=2/0.035&&设置顶边距oExl.ActiveSheet.PageSetup.BottomMargin=1.5/0.035&&设置底边距oExl.ActiveSheet.PageSetup.LeftMargin=0&&设置左边距oExl.ActiveSheet.PageSetup.RightMargin=0&&设置右边距&&页眉页脚oExl.ActiveSheet.PageSetup.HeaderMargin=1.5/0.035&&设置页眉边距oExl.ActiveSheet.PageSetup.FooterMargin=0.8/0.035&&设置页脚边距oExl.ActiveSheet.PageSetup.LeftHeader="&9XXXXXX"oExl.ActiveSheet.PageSetup.CenterHeader=""oExl.ActiveSheet.PageSetup.RightHeader="&9 "oExl.ActiveSheet.PageSetup.LeftFooter=""oExl.ActiveSheet.PageSetup.CenterFooter="&9第&P页,共&N页"oExl.ActiveSheet.PageSetup.RightFooter="&9制表人:xxx "&P页序号&N页总数&D日期,&T时间&S删除线&Y下标&Z路径&F文件&A标签&G图片&X上标&""隶属,倾斜""&9九号字体&U下划线&B粗体&&左页眉图片设定oExl.ActiveSheet.PageSetup.LeftHeaderPicture.Filename="D:\2.jpg"oExl.ActiveSheet.PageSetup.LeftHeaderPicture.Height = 45oExl.ActiveSheet.PageSetup.LeftHeaderPicture.Width = 11.25oExl.ActiveSheet.PageSetup.LeftHeaderPicture.Brightness = 0.51oExl.ActiveSheet.PageSetup.LeftHeaderPicture.ColorType = msoPictureGrayscale oExl.ActiveSheet.PageSetup.LeftHeaderPicture.CropBottom = 28.35oExl.ActiveSheet.PageSetup.LeftHeaderPicture.CropLeft = 28.35oExl.ActiveSheet.PageSetup.LeftHeaderPicture.CropRight = 28.35oExl.ActiveSheet.PageSetup.LeftHeaderPicture.CropTop = 28.35oExl.ActiveSheet.PageSetup.CenterHorizontally=.T.&&设置页面水平居中oExl.ActiveSheet.PageSetup.CenterVertically=.T.&&设置页面垂直居中&&设置页面纸张大小oExl.ActiveSheet.PageSetup.Orientation=2&&页面方向2表示横向oExl.ActiveSheet.PageSetup.PaperSize=11纸张大小:9 A411 A570 A6oExl.ActiveSheet.PageSetup.Draft=.T.oExl.ActiveSheet.PageSetup.FirstPageNumber=1oExl.ActiveSheet.PageSetup.Order=1&&单色打印oExl.ActiveSheet.PageSetup.BlackAndWhite=.T.oExl.ActiveSheet.PageSetup.PrintComments=-4142oExl.ActiveSheet.PageSetup.Zoom=100 &&缩放100%oExl.ActiveSheet.PageSetup.Zoom=.F. &&禁用缩放oExl.ActiveSheet.PageSetup.FitToPagesWide=1 &&调整为一页宽oExl.ActiveSheet.PageSetup.FitToPagesTall=1 &&调整为一页高oExl.ActiveSheet.PageSetup.PrintHeadings=.T.oExl.ActiveSheet.PageSetup.PrintGridLines=.T.oExl.ActiveSheet.PageSetup.PrintErrors=oExl.ActiveSheet.PageSetup.PrintQuality=600 &&打印质量oExl.ActiveSheet.PageSetup.PrintTitleRows="$1:$3"&&固定标题行oExl.ActiveSheet.PageSetup.PrintTitleColumns="$A:$C"&&固定标题列oExl.ActiveSheet.PageSetup.PrintGridlines=.T.&&打印单元格网线*********************************************************&&打印oExl.ActiveSheet.PrintPreview&&打印预览工作表oExl.ActiveSheet.PageSetup.PrintArea="$A$1:$E$30" &&设置打印区域ActiveSheet.PageSetup.PrintArea = "" &&取消打印区域ActiveWorkbook.WebPagePreview &&网页预览oExl.ActiveSheet.PrintOut&&打印输出工作表5、VFP下直接调用EXCEL、WORD文件DECLARE INTEGER ShellExecute IN shell32.DLL INTEGER HWND,STRING,STRING lpszFile,STRING, STRING,INTEGERoperate="open"ShellExecute(0,operate,"C:\111.XLS",0,0,1)&&EXCEL文件ShellExecute(0,operate,"C:\111.DOC",0,0,1)&&WORD文件oExcel=Createobject("Excel.application")&&创建Excel对象**对象属性1、添加Sheets.Add before:=Sheets(1) '在第1工作表前添加新工作表Sheets.Add after:=Sheets(Sheets.Count) '在最后工作表后添加新工作表2、移动ActiveSheet.Move before:=Sheets(2) '将当前工作表移动至第2工作表之前3、命名="工作表名" '将当前工作表命名为"工作表名"4、删除可以用以下语句删除当前工作表。
VFP控制EXCEL的方法(终于找到了)
VFP控制EXCEL的常用方法oExl=CREATEOBJECT('Excel.application')oExl.Visible=.T.oExl.DefaultSaveFormat=39oExl.SheetsInNewWorkbook=1oExl.Workbooks.Open(cXLS)oExl.WindowState=-4140 &&窗口最小化oExl.WindowState=-4143 &&窗口正常化oExl.WindowState=-4147 &&窗口最大化*------------------------------------------------------*&&页面设置oExl.ActiveSheet.PageSetup.PrintTitleRows="$1:$3" &&打印标题oExl.ActiveSheet.PageSetup.Orientation=2 &&页面方向:1纵向/2横向*oExl.ActiveSheet.PageSetup.PaperSize=11 &&纸尺寸:9-A4/11-A5oExl.ActiveSheet.PageSetup.TopMargin=0.8/0.035 &&顶边距oExl.ActiveSheet.PageSetup.BottomMargin=0.8/0.035 &&底边距oExl.ActiveSheet.PageSetup.LeftMargin=0 &&左边距oExl.ActiveSheet.PageSetup.RightMargin=0 &&右边距oExl.ActiveSheet.PageSetup.CenterHorizontally=.T. &&页面居中oExl.ActiveSheet.PageSetup.HeaderMargin=0.5/0.035oExl.ActiveSheet.PageSetup.FooterMargin=0.5/0.035oExl.ActiveSheet.PageSetup.LeftHeader="&9表格"”9是字号”oExl.ActiveSheet.PageSetup.CenterHeader=""oExl.ActiveSheet.PageSetup.RightHeader="&9"oExl.ActiveSheet.PageSetup.LeftFooter=""oExl.ActiveSheet.PageSetup.CenterFooter="&9第&P页,共&N页"oExl.ActiveSheet.PageSetup.RightFooter="&9制表人:'+代码+' 制表时间:"+TTOC(DATETIME())*------------------------------------------------------*&&整体格式设置oExl.ActiveSheet.Rows.Font.Size=9='宋体'oExl.ActiveSheet.Rows.RowHeight=0.5/0.035oExl.ActiveSheet.Rows.NumberFormatLocal="0.00_ ;[红色]-0.00"oExl.ActiveSheet.Rows.VerticalAlignment=2 &&单元格容垂直居中*------------------------------------------------------*&&获取最大行号和最大列号Local nMaxRow,nMaxColnMaxRow=edRange.Rows.CountnMaxCol=edRange.Columns.Count&&表头格式设置oExl.ActiveSheet.Rows(1).Font.Size=16oExl.ActiveSheet.Rows(1).Font.Bold=.T.oExl.ActiveSheet.Rows(1).RowHeight=1/0.035oExl.ActiveSheet.Rows(1).HorizontalAlignment=3oExl.ActiveSheet.Rows(2).HorizontalAlignment=3oExl.ActiveSheet.Rows(3).HorizontalAlignment=3oExl.ActiveSheet.Rows(3).Font.Bold=.T.oExl.ActiveSheet.Range('A1:'+CHR(96+nMaxCol)+'1').MergeoExl.ActiveSheet.Range('A2:'+CHR(96+nMaxCol)+'2').Merge*------------------------------------------------------*&&条件格式隐藏0值edRange.FormatConditions.DeleteedRange.FormatConditions.Add(1,3,'0')edRange.FormatConditions(1).Font.ColorIndex=2&&文字白色*------------------------------------------------------*oExl.ActiveSheet.Range('A1:B1').Interior.ColorIndex=6 &&单元格底纹黄色*------------------------------------------------------*oExl.ActiveSheet.Columns.AutoFit &&自动列宽oExl.ActiveSheet.Range("A3:"+CHR(96+nMaxCol)+ALLTRIM(STR(nMaxRow))).Borders.Wei ght=2 &&边框线*------------------------------------------------------*&&自动筛选IF !oExl.ActiveSheet.AutoFilterMode &&判断是否存在自动筛选oExl.ActiveSheet.Rows(3).Autofilter &&如果不存在自动筛选,则添加自动筛选ENDIF*------------------------------------------------------*&&冻结窗格oExl.ActiveSheet.Range('D4').SelectoExl.ActiveWindow.FreezePanes = .T.*------------------------------------------------------**------------------------------------------------------*&&分类汇总Local Arry(1),nMaxRow,nMaxColArry(1)=5nMaxRow=edRange.Rows.CountnMaxCol=edRange.Columns.CountoExl.ActiveSheet.Range('A3:'+chr(96+nMaxCol)+alltrim(str(nMaxRow))).Subtotal(2, -4157,Arry,.T.,.F.,.T.) &&按第2列分类汇总数组Arry保存的列*------------------------------------------------------*1、对象的创建与关闭*******************************oExl=CREATEOBJECT('Excel.application') &&创建Excel对象oExl.SheetsInNewWorkbook=1 &&新建工作簿默认包含工作表个数oExl.Workbooks.Add &&新建工作簿,工作表个数由SheetsInNewWorkBooks属性指定oExl.Workbooks.Open(cXLS,3,.T.) &&打开指定工作簿(更新/只读打开)oExl.Workbooks.Open(cXLS, [UpdateLinks], [ReadOnly], [Format], [Password], [WriteResPassword], [IgnoreReadOnlyRecommended], [Origin], [Delimiter], [Editable], [Notify], [Converter], [AddToMru], [Local], [CorruptLoad])oExl.Worksheets(cSheet).Activate &&激活工作表Sheet3 oExl.Worksheets(3).Activate &&激活(从左到右)第3个工作表oExl.WorkSheets.Count &&工作簿中工作表数oExl.DefaultSaveFormat=39 &&默认格式Excel 5.0oExl.DisplayAlerts=.F. &&不显示警告信息oExl.Visible=.T. &&显示Excel窗口oExl.Visible=.F. &&不显示Excel窗口oExl.Caption="Excel标题栏" &&更改Excel标题栏oExl.WorkSheet("Sheet2").Range("A1").PasteSpecial &&粘贴oExl.Quit &&退出ExceloExl.DisplayRecentFiles=.T. &&是否显示最近打开文档oExl.RecentFiles.Maximum=4 &&历史最大纪录数erName="XXXX" &&用户名oExl.StandardFont="宋体" &&标准字体oExl.StandardFontSize="12" &&标准字体大小oExl.DefaultFilePath="D:\XXXXXX\" &&默认工作目录oExl.EnableSound=False &&声音反馈oExl.RollZoom=False &&智能鼠标缩放oExl.TransitionMenuKey="/" &&Microsoft Office Excel菜单键oExl.ActiveWorkbook.Password="123"oExl.ActiveWorkbook.WritePassword="456"oExl.ActiveWorkbook.ReadOnlyRecommended=FalseoExl.ActiveWorkbook.SetPasswordEncryptionOptionsPasswordEncryptionProvider:="", _PasswordEncryptionAlgorithm:="OfficeStandard", PasswordEncryptionKeyLength:=40 _, PasswordEncryptionFileProperties:=FalseIF oExl.ActiveWorkbook.FileFormat==39 &&格式为Excel 5.0工作簿ENDIFoExl.ActiveWorkBook.SaveAs(FileName,FileFormat,PassWord,WriteResPassWord,ReadOn lyRecommended,CreateBackup)&&另存为&&参数说明FileName 字符型,指定文件名FileFormat 数值型,文件格式-4143 Microsoft Office Excel11 DBF439 Microsoft Excel 5.0/9543 Microsoft Excel97-Excel2003 & 5.0/9544 网页Html文件-4158 文本文件(制表符分隔)PassWord 字符型,只读密码WriteResPassWord 字符型,写密码ReadOnlyRecommended 逻辑型,建议只读CreateBackup 逻辑型,自动备份例如:oExl.ActiveWorkBook.SaveAs("d:\1.xls",39)oExl.ActiveWorkbook.saved=.T. &&放弃存盘oExl.ActiveWorkbook.Save &&存盘(自动存盘不提问)oExl.Workbooks.close &&关闭工作簿3、单元格的设置***********************************&&冻结窗格oExl.ActiveSheet.Range('D4').SelectoExl.ActiveWindow.FreezePanes = .T.&&条件格式设定oExl.ActiveSheet.Range('A1:H18').FormatConditions.Add(Type,Operator,Formula1,Fo rmula2)Type 类型(1单元格数值,2公式)Operator 操作符(1介于,2不介于,3等于,4不等于,5大于,6小于,7大于等于,8小于等于)Formula1 表达式1Formula2 表达式2,操作符为1介于或2不介于才有效&&条件格式例句:数值为0者,文字颜色白色edRange.FormatConditions.DeleteedRange.FormatConditions.Add(1,3,'0')edRange.FormatConditions(1).Font.ColorIndex=2&&文字白色&&编辑edRange.Copy &&拷贝整个工作表oExl.ActiveSheet.Range("A1:E2").Copy &&拷贝指定区域oExl.ActiveSheet.Columns("D:D").Delete &&删除列oExl.ActiveSheet.Columns("A:B").Delete &&删除列oExl.ActiveSheet.Rows(1).Insert &&在第1行之前插入一行oExl.ActiveSheet.Columns(2).Insert &&在第2列之前插入一列oExl.ActiveSheet.Cells(1,2).Value="ABTMC" &&给单元格赋值oExl.ActiveSheet.Cells(2,2).Value="&BBBB" &&给单元格赋值oExl.ActiveSheet.Cells(1,4).ClearContents &&清除单元格公式oExl.ActiveSheet.Rows(18).PageBreak=1 &&在第18行之前插入分页符oExl.ActiveSheet.Columns(4).PageBreak=0 &&在第4列之前删除分页符oExl.ActiveSheet.Rows(3).AutoFilter &&自动筛选oExl.ActiveSheet.Cells(1,1).Delete(-4159) &&删除单元格-4159 右边单元格左移-4162 下边单元格上移oExl.Selection.EntireRow.Delete &&所在行整行删除oExl.Selection.EntireColumn.Delete &&所在列整列删除oExl.ActiveSheet.Cells(1,1).Insert(-4142) &&插入单元格-4142 活动单元格下移-4161 活动单元格右移oExl.ActiveSheet.Selection.EntireRow.Insert &&插入行oExl.ActiveSheet.Selection.EntireColumn.Insert &&插入列&&选择性粘贴oExl.ActiveSheet.Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=FalsePaste 粘贴数据:8列宽,11公式和数值格式,12数值与数值格式,-4104全部,-4123公式,-4163数值,-4122格式,Operation 运算符:-4142无,2加,3减,4乘,5除SkipBlanks 跳过空白单元:逻辑型Transpose 转置:逻辑型--------------------------------------------------&&排序成功例句:oExl.ActiveSheet.Range('A1:'+CHR(96+nMaxCol)+ALLTRIM(STR(nMaxRow))).Sort(oExl.A ctiveSheet.Range(CHR(96+ASCAN(Arry,'原币金额'))+'2'),2,,,,,,1)&&按"原币金额"所在列降序排列,有标题oExl.ActiveSheet.Rows('1:28').SortKey1:=Range("A2"), Order1:=xlDescending,Key2:=Range("B2"), Order2:=xlAscending,Key3:=Range("C2"), Order3:=xlDescending,Header:=xlYes,OrderCustom:=6,MatchCase:=True,Orientation:=xlTopToBottom,SortMethod:=xlStroke,DataOption1:=xlSortNormal,DataOption2:=xlSortNormal,DataOption3:=xlSortNormal参数说明:2 xlDescending降序1 xlAscenging升序标题行:0 xlGuess1 xlYes,2 xlNo1 xlTopToBottom排序方法:1 xlPinYin,2 xlStroke0 xlSortNormalKey1 排序字段:取值类型是围oExl.ActiveSheet.Range('B2')Order1 升序降序:xlAscending=1升序,xlDescending=2降序Header 有无标题:xlGuess=0自动判断,xlYes=1有,xlNo=2无orderCustom 排序顺序:1普通,6日一二三MatchCase 是否区分大小写:T区分,F不区分Orientation 1从头到底,2从左到右SortMethod 排序方法:xlPinYin=1拼音,xlStroke=2字母DataOption1 xlSortNormal=0正常DataOption2DateOption3&&分类汇总LOCAL Array(1)Array(1)=5oExl.ActiveSheet.Range('A1:G28').Subtotal(2,-4157,Array,.T.,.F.,.T.)参数列表:GroupBy:=2, Function:=xlSum, TotalList:=Array(3), Replace:=True, PageBreaks:=False, SummaryBelowData:=True参数说明:GroupBy 分组字段序号Function 汇总方式:-4157求和,-4112计数TotalList 汇总数据项:保存汇总列序号的数组引用Replace 替换当前分类汇总:逻辑型,默认TPageBreaks 每组数据分页:逻辑型,默认FSummaryBelowData 汇总结果显示在数据下方:逻辑型,默认T&&汇总结果表间切换oExl.ActiveSheet.Outline.ShowLevels RowLevels:=2oExl.ActiveSheet.Outline.ShowLevels RowLevels:=1oExl.ActiveSheet.Outline.ShowLevels RowLevels:=3&&数值格式设置oExl.ActiveSheet.Range("A").NumberFormatLocal="0.00" &&指定区域的数字显示格式&&对齐设置oExl.ActiveSheet.Range('A1:B1').HorizontalAlignment=3 &&水平方向2左对齐,3居中,4右对齐edRange.VerticalAlignment=2 &&垂直方向1靠上,2居中,3靠下oExl.ActiveSheet.Range('A1:B1').WrapText=.T. &&自动换行oExl.ActiveSheet.Range('A1:B1').Orientation = -4166 &&文字方向-4166 垂直向下oExl.ActiveSheet.Range('A1:B1').AddIndent = False &&缩进oExl.ActiveSheet.Range('A1:B1').IndentLevel = 2 &&缩进2字符oExl.ActiveSheet.Range('A1:B1').ShrinkToFit = .T. &&缩小以填充oExl.ActiveSheet.Range('A1:B1').ReadingOrder = -5002 &&文字阅读方向-5002 根据容-5003 从左到右oExl.selection.MergeCells=.T. &&合并单元oExl.selection.HorizontalAlignment=2 &&水平方向2左对齐,3居中,4右对齐oExl.selection.VerticalAlignment=2 &&垂直方向1靠上,2居中,3靠下&&字体设置oExl.ActiveSheet.ROWS(1)="黑体" &&设置字体oExl.ActiveSheet.ROWS(1).Font.FontStyle="常规"oExl.ActiveSheet.ROWS(1).Font.Size=14 &&设置字体大小oExl.ActiveSheet.ROWS(1).Font.Bold=.T. &&设置整行字体为粗体oExl.ActiveSheet.ROWS(1).Font.StrikeThrough=.T. &&删除线oExl.ActiveSheet.Cells(1,1).Font.Italic=.T. &&设置字体为斜体oExl.ActiveSheet.ROWS(1).Font.Superscript = .T. &&上标oExl.ActiveSheet.ROWS(1).Font.Subscript = .T. &&下标oExl.ActiveSheet.ROWS(1).Font.OutlineFont = FalseoExl.ActiveSheet.ROWS(1).Font.Shadow = FalseoExl.ActiveSheet.ROWS(1).Font.Underline = -4142 &&下划线oExl.ActiveSheet.ROWS(1).Font.ColorIndex = -4105 &&字体颜色自动设置oExl.ActiveSheet.ROWS(1).Font.Underline = 2 &&下划线类型下划线类型2 单下划线&&边框设置oExl.ActiveSheet.Range("b3:d3").Borders.Weight=2 &&指定边框线宽度其中Borders参数:1-左、2-右、3-顶、4-底、5-斜\、6-斜/;不带参数表示默认上下左右四个边框LineStyle值:1与7-细实、2-细虚、4-点虚、9-双细实线)oExl.ActiveSheet.Range("A1:BE29").Borders(1).LineStyle=1 &&设置四个边框线条的类型oExl.ActiveSheet.Range("A1:BE29").Borders(2).LineStyle=1 &&设置四个边框线条的类型oExl.ActiveSheet.Range("A1:BE29").Borders(3).LineStyle=1 &&设置四个边框线条的类型oExl.ActiveSheet.Range("A1:BE29").Borders(4).LineStyle=1 &&设置四个边框线条的类型&&1 xlContinuous&&2 xlThin&&5 xlDiagonalDown&&6 xlDiagonalUp&&10 xlEdgeRight&&12 xlInsideHorizontal&&行列设置oExl.ActiveSheet.Columns(1).ColumnWidth=20 &&列的宽度(单位:字符个数)oExl.ActiveSheet.Columns(2).ColumnWidth=30oExl.ActiveSheet.Columns("C:BE").ColumnWidth=9.5oExl.ActiveSheet.Columns.AutoFit &&最适合的列宽oExl.ActiveSheet.Rows(1).RowHeight=1/0.035 &&设置指定行的高度(单位:磅)(行高为1厘米,1磅=0.035厘米)oExl.ActiveSheet.Range('A1:B1').Interior.ColorIndex=nColorIndex &&设置底纹常用颜色值ColorIndex1 黑色2 白色3 红色4 鲜绿5 蓝色6 黄色7 粉红8 青绿9 深红10 绿色13 紫罗兰15 灰-25%34 浅青绿36 浅黄38 玫瑰红39 淡紫40 茶色42 水绿46 橙色53 褐色54 梅兰oExl.ActiveSheet.Range('P3:P4').Orientation=-4166 &&文字方向垂直&&同一工作簿中复制工作表副本oExl.WorkSheets(1).Copy(oExl.ActiveWorkBook.Sheets(1))&&不同工作簿oExl.Sheets(1).copy(oExl.Workbooks("BOOK1.XLS").Sheets(1))3、页面设置***********************************************oExl.ActiveSheet.PageSetup.TopMargin=2/0.035 &&设置顶边距oExl.ActiveSheet.PageSetup.BottomMargin=1.5/0.035 &&设置底边距oExl.ActiveSheet.PageSetup.LeftMargin=0 &&设置左边距oExl.ActiveSheet.PageSetup.RightMargin=0 &&设置右边距&&页眉页脚oExl.ActiveSheet.PageSetup.HeaderMargin=1.5/0.035 &&设置页眉边距oExl.ActiveSheet.PageSetup.FooterMargin=0.8/0.035 &&设置页脚边距oExl.ActiveSheet.PageSetup.LeftHeader="&9XXXXXX"oExl.ActiveSheet.PageSetup.CenterHeader=""oExl.ActiveSheet.PageSetup.RightHeader="&9 "oExl.ActiveSheet.PageSetup.LeftFooter=""oExl.ActiveSheet.PageSetup.CenterFooter="&9第&P页,共&N页"oExl.ActiveSheet.PageSetup.RightFooter="&9制表人:xxx "&P页序号&N页总数&D日期,&T时间&S删除线&Y下标&Z路径&F文件&A标签&G图片&X上标&""隶属,倾斜""&9九号字体&U下划线&B粗体&&左页眉图片设定oExl.ActiveSheet.PageSetup.LeftHeaderPicture.Filename="D:\2.jpg"oExl.ActiveSheet.PageSetup.LeftHeaderPicture.Height = 45oExl.ActiveSheet.PageSetup.LeftHeaderPicture.Width = 11.25oExl.ActiveSheet.PageSetup.LeftHeaderPicture.Brightness = 0.51oExl.ActiveSheet.PageSetup.LeftHeaderPicture.ColorType = msoPictureGrayscale oExl.ActiveSheet.PageSetup.LeftHeaderPicture.CropBottom = 28.35oExl.ActiveSheet.PageSetup.LeftHeaderPicture.CropLeft = 28.35oExl.ActiveSheet.PageSetup.LeftHeaderPicture.CropRight = 28.35oExl.ActiveSheet.PageSetup.LeftHeaderPicture.CropTop = 28.35oExl.ActiveSheet.PageSetup.CenterHorizontally=.T. &&设置页面水平居中oExl.ActiveSheet.PageSetup.CenterVertically=.T. &&设置页面垂直居中&&设置页面纸大小oExl.ActiveSheet.PageSetup.Orientation=2 &&页面方向2表示横向oExl.ActiveSheet.PageSetup.PaperSize=11纸大小:9 A411 A570 A6oExl.ActiveSheet.PageSetup.Draft=.T.oExl.ActiveSheet.PageSetup.FirstPageNumber=1oExl.ActiveSheet.PageSetup.Order=1&&单色打印oExl.ActiveSheet.PageSetup.BlackAndWhite=.T.oExl.ActiveSheet.PageSetup.PrintComments=-4142oExl.ActiveSheet.PageSetup.Zoom=100 &&缩放100%oExl.ActiveSheet.PageSetup.Zoom=.F. &&禁用缩放oExl.ActiveSheet.PageSetup.FitToPagesWide=1 &&调整为一页宽oExl.ActiveSheet.PageSetup.FitToPagesTall=1 &&调整为一页高oExl.ActiveSheet.PageSetup.PrintHeadings=.T.oExl.ActiveSheet.PageSetup.PrintGridLines=.T.oExl.ActiveSheet.PageSetup.PrintErrors=oExl.ActiveSheet.PageSetup.PrintQuality=600 &&打印质量oExl.ActiveSheet.PageSetup.PrintTitleRows="$1:$3" &&固定标题行oExl.ActiveSheet.PageSetup.PrintTitleColumns="$A:$C" &&固定标题列oExl.ActiveSheet.PageSetup.PrintGridlines=.T. &&打印单元格网线*********************************************************&&打印oExl.ActiveSheet.PrintPreview &&打印预览工作表oExl.ActiveSheet.PageSetup.PrintArea="$A$1:$E$30" &&设置打印区域ActiveSheet.PageSetup.PrintArea = "" &&取消打印区域ActiveWorkbook.WebPagePreview &&网页预览oExl.ActiveSheet.PrintOut &&打印输出工作表5、VFP下直接调用EXCEL、WORD文件DECLARE INTEGER ShellExecute IN shell32.DLL INTEGER HWND,STRING,STRING lpszFile,STRING, STRING,INTEGERoperate="open"ShellExecute(0,operate,"C:\111.XLS",0,0,1) &&EXCEL文件ShellExecute(0,operate,"C:\111.DOC",0,0,1) &&WORD文件oExcel=Createobject("Excel.application")&&创建Excel对象**对象属性1、添加Sheets.Add before:=Sheets(1) '在第1工作表前添加新工作表Sheets.Add after:=Sheets(Sheets.Count) '在最后工作表后添加新工作表2、移动ActiveSheet.Move before:=Sheets(2) '将当前工作表移动至第2工作表之前3、命名="工作表名" '将当前工作表命名为"工作表名"4、删除可以用以下语句删除当前工作表。
vfp与excel的结合
set safe offif used('qxjl')sele qxjlelsesele 0use qxjlendifzapxh=3tmpsheet = GetObject('','excel.sheet')XLApp = tmpsheet.applicationXLBOOK=XLApp.WorkBooks.open('c:\zlgl\qxjl.xls')XLApp.Worksheets('缺陷明细').ActivateXLSheet = XLApp.ActiveSheetxlapp.visible=.t.XH=1*!* DO WHILE .T.*!* DDA=XLSheet.Cells(XH,1).Value*!* IF LEN(ALLTRIM(DDA))>0*!* DDA='A4'+':G'+ALLTRIM(STR(XH))*!* dda1=XLSheet.range("&DDA").BORDERS(1).LINESTYLE*!* XLSheet.range("&DDA").BORDERS(1).LINESTYLE=1*!* XLSheet.range("&DDA").BORDERS(2).LINESTYLE=1*!* XLSheet.range("&DDA").BORDERS(3).LINESTYLE=1*!* XLSheet.range("&DDA").BORDERS(4).LINESTYLE=1*!* XH=XH+1*!* ELSE*!* EXIT*!* ENDIF*!* ENDDOdateyear1=left(alltrim(XLSheet.Cells(1,1).Value),4)datemonth1=substr(alltrim(XLSheet.Cells(1,1).Value),7,2)dda='C:\ZLGL\history\TJ'+DA TEYEAR1+DA TEMONTH1+'.XLS'if file("&dda")ts=messagebox(dateyear1+'年'+datemonth1+'月已经统计过了,还要重新统计吗?',256+64+4,'*****************友情提示************************')if ts=6delete file &ddasele lstjlocate for dateyear=dateyear1.and.datemonth=datemonth1deletepackendifelsereturnendifendifif type('XLSheet.Cells(2,5).Value')!='N'.or.XLSheet.Cells(2,5).Value=0messagebox('E2栏中没有填写罗莎线的生产量',256,'***********友情提示****************')returnendifif type('XLSheet.Cells(2,7).Value')!='N'.or.XLSheet.Cells(2,7).Value=0messagebox('G2栏中没有填写6790线的生产量',256,'***********友情提示****************')returnendifoldcaption=mand4.captionmand4.forecolor=16711680mand4.caption='正在处理,请稍候…………!'zsl=XLSheet.Cells(2,2).Value&&本月底盘数lssl=XLSheet.Cells(2,5).Value&&本月罗莎底盘数zksl=XLSheet.Cells(2,7).Value&&本月6790底盘数do while .t.dda=XLSheet.Cells(xh,1).Valueif len(alltrim(dda))=0exitendifxh=xh+1enddofor i1=4 to xh-1sele qxjlappen blankrepla qxjl with alltrim(XLSheet.Cells(i1,1).Value)repla zrr with alltrim(XLSheet.Cells(i1,2).Value)repla tsg with alltrim(XLSheet.Cells(i1,3).Value)repla ch with alltrim(XLSheet.Cells(i1,4).Value)repla jb with alltrim(XLSheet.Cells(i1,5).Value)repla zrlb with alltrim(XLSheet.Cells(i1,6).Value)repla zrrbz with alltrim(XLSheet.Cells(i1,8).Value)repla tsgbz with alltrim(XLSheet.Cells(i1,9).Value)sele qxjlcount to hfjl for alltrim(upper(jb))='AA'.or.alltrim(upper(jb))='AB'.or.alltrim(upper(jb))='BA'.or.alltrim(upper(jb)) ='BB'.or.alltrim(upper(jb))='CA'.or.alltrim(upper(jb))='AC'.or.alltrim(upper(jb))='BC'.or.alltrim(up per(jb))='CB'.or.alltrim(upper(jb))='CC'.or.len(alltrim(upper(jb)))=0COUNT TO BIG2 FOR LEN(ALLTRIM(JB))>2if hfjl<reccount().OR.BIG2>0messagebox('明细中存在不明缺陷类别,请更正后重新运行!',256,'**************友情提示****************')sele qxjlzapmand4.forecolor=0returnendifset safe offuse zrrbbzapsele 0use gwbbzapsele 0use zrrfszapsele 0use zrrcszapsele 0use gwfszapsele 0use gwcszapsele 0use ryb order zrrsele 0use qxdzb order jbsele 0use qxjlset relation to jb into qxdzbset relation to zrr into ryb addiset order to xwgwcount to a for len(alltrim(zrr))=0repla all zrr with tsg for len(alltrim(zrr))=0.and.len(alltrim(tsg))>0repla all gw with ryb.gw,xw with ryb.xw,i with 1,fs with qxdzb.fsset relation tocopy to bbfs for (upper(jb)='BB'.or.upper(jb)='CA'.or.upper(jb)='AA'.or.upper(jb)='AB'.or.upper(jb)='BA').and.at(' Z',upper(zrlb))>0sele rybset order to xwzrrcopy to xwzrrset order to xwgwcopy to xwgwsele 0use xwgwgo topscanxwmem=alltrim(xw)gwmem=alltrim(gw)sele qxjlcount to a for xw=xwmem.and.gw=gwmemsum fs to b for xw=xwmem.and.gw=gwmemcount to c for xw=xwmem.and.gw=gwmem.and.fs>2*按工位统计sele gwcsappen blankrepla i with a,xw with xwmem,gw with gwmemsele gwbbappen blankrepla i with c,xw with xwmem,gw with gwmemsele gwfsappen blankrepla i with b,xw with xwmem,gw with gwmemsele xwgwendscan*按责任人统计sele 0use xwzrrgo topscanxwmem=alltrim(xw)gwmem=alltrim(gw)zrrmem=alltrim(zrr)sele qxjlcount to a for xw=xwmem.and.zrr=zrrmem*sum fs to b for xw=xwmem.and.zrr=zrrmem.and.at('H',ch)=0.and.at('N',ch)=0.and.at('W',zrlb)=0.and.at('C',zrlb)= 0sum fs to b for xw=xwmem.and.zrr=zrrmem.and.at('Z',upper(zrlb))>0&&.and.at('H',upper(ch))=0.and.at('N',uppe r(ch))=0count to c for xw=xwmem.and.zrr=zrrmem.and.fs>2sele zrrcsappen blankrepla i with a,xw with xwmem,gw with gwmem,zrr with zrrmemsele zrrbbappen blankrepla i with c,xw with xwmem,gw with gwmem,zrr with zrrmemsele zrrfsappen blankrepla i with b,xw with xwmem,gw with gwmem,zrr with zrrmemsele xwzrrendscansele qxjlcount to asum fs to bcount to c for fs>2XLApp.Worksheets('月产量').ActivateXLSheet = XLApp.ActiveSheetXLSheet.Cells(1,1).Value=dateyear1+'年'+datemonth1+'月'+'公司质量统计'dda=val(datemonth1)+1XLSheet.Cells(3,dda).Value=zslXLSheet.Cells(4,dda).Value=aXLSheet.Cells(5,dda).Value=bXLSheet.Cells(6,dda).Value=cif dda<12for xh=dda+1 to 12XLSheet.Cells(3,xh).V alue=0XLSheet.Cells(4,xh).V alue=0XLSheet.Cells(5,xh).V alue=0XLSheet.Cells(6,xh).V alue=0endforendifxlSheet.ChartObjects("图表2").Activatexlchart=xlapp.activechartxlchart.SeriesCollection(1).Points(dda-1).border.linestyle=1xlchart.SeriesCollection(1).border.colorindex=1xlchart.SeriesCollection(1).Points(dda).border.linestyle=0xlchart.SeriesCollection(1).Points(dda-1).markersize=5xlSheet.ChartObjects("图表11").Activatexlchart=xlapp.activechartxlchart.SeriesCollection(1).Points(dda-1).border.linestyle=1xlchart.SeriesCollection(1).Points(dda).border.linestyle=0xlchart.SeriesCollection(1).Points(dda-1).markersize=5xlSheet.ChartObjects("图表8").Activatexlchart=xlapp.activechartxlchart.SeriesCollection(1).Points(dda-1).border.linestyle=1xlchart.SeriesCollection(1).Points(dda).border.linestyle=0xlchart.SeriesCollection(1).Points(dda-1).markersize=5xlSheet.ChartObjects("图表10").Activatexlchart=xlapp.activechartxlchart.SeriesCollection(1).Points(dda-1).border.linestyle=1xlchart.SeriesCollection(1).Points(dda).border.linestyle=0xlchart.SeriesCollection(1).Points(dda-1).markersize=5XLAPP.ACTIVEWORKBOOK.SA VED=.T.xwmc='6790线'XLApp.Worksheets('6790缺陷明细').ActivateXLSheet = XLApp.ActiveSheetxlsheet.range('a3:g300').deleteXLSheet.Cells(1,1).Value=dateyear1+'年'+datemonth1+'月'+'6790缺陷明细' if used('qxjlls')sele qxjllsuseendifif used('qxjl')sele qxjlelsesele 0use qxjlendifset order to xwgwzrrcopy to qxjlls for xw='6790线'use qxjllsgo topstartrec1=0startrec2=0ddadda1=''ddadda2=''scanxh1=recno()+2if XLSheet.Cells(xh1,1).mergecellsXLSheet.Cells(xh1,1).Horizontalalignment =2XLSheet.Cells(xh1,1).mergecells=.f.XLSheet.Cells(xh1,1).Horizontalalignment =4XLSheet.Cells(xh1,5).Horizontalalignment =4endifif ddadda1!=alltrim(gw).or.mod((xh1-3),64)=0XLSheet.Cells(xh1,1).Value=alltrim(gw)ddadda1=alltrim(gw)if startrec1>0DDA='A'+ALLTRIM(STR(STARTREC1))+':A'+ALLTRIM(STR(xh1-1)) XLSheet.RANGE("&DDA").mergeXLSheet.Cells(startrec1,1).Horizontalalignment =3XLSheet.Cells(startrec1,1).verticalalignment =2endifstartrec1=xh1endifif ddadda2!=alltrim(zrr).or.mod((xh1-3),64)=0XLSheet.Cells(xh1,3).Value=alltrim(zrr)ddadda2=alltrim(zrr)if startrec2>0DDA='C'+ALLTRIM(STR(STARTREC2))+':C'+ALLTRIM(STR(xh1-1)) XLSheet.RANGE("&DDA").mergeXLSheet.Cells(startrec2,3).Horizontalalignment =3XLSheet.Cells(startrec2,3).verticalalignment =2endifstartrec2=xh1endifXLSheet.Cells(xh1,2).Value=alltrim(qxjl)XLSheet.Cells(xh1,4).Value=alltrim(tsg)XLSheet.Cells(xh1,5).Value=alltrim(ch)XLSheet.Cells(xh1,6).Value=alltrim(jb)XLSheet.Cells(xh1,7).Value=alltrim(zrlb)DDA='A'+ALLTRIM(STR(recno()+2))+':g'+ALLTRIM(STR(recno()+2)) XLSheet.RANGE("&DDA").BORDERS(1).LINESTYLE=1XLSheet.range("&DDA").BORDERS(2).LINESTYLE=1XLSheet.RANGE("&DDA").BORDERS(3).LINESTYLE=1XLSheet.range("&DDA").BORDERS(4).LINESTYLE=1endscanif startrec1<xh1DDA='A'+ALLTRIM(STR(STARTREC1))+':A'+ALLTRIM(STR(xh1)) XLSheet.RANGE("&DDA").mergeendifXLSheet.Cells(startrec1,1).Horizontalalignment =3XLSheet.Cells(startrec1,1).verticalalignment =2if startrec2<xh1DDA='C'+ALLTRIM(STR(STARTREC2))+':C'+ALLTRIM(STR(xh1))XLSheet.RANGE("&DDA").mergeendifXLSheet.Cells(startrec2,3).Horizontalalignment =3XLSheet.Cells(startrec2,3).verticalalignment =2DDA='A'+ALLTRIM(STR(xh1+1))+':G'+ALLTRIM(STR(xh1+1))xlsheet.range("&dda").mergexlsheet.range("&dda").BORDERS(1).LINESTYLE=1xlsheet.range("&dda").BORDERS(2).LINESTYLE=1xlsheet.range("&dda").BORDERS(3).LINESTYLE=1xlsheet.range("&dda").BORDERS(4).LINESTYLE=1if used('qxjl')sele qxjlelsesele 0use qxjlendifset order to xwgwcount to a for alltrim(xw)=xwmc.and.fs>2b=round(((zksl-a)*100/zksl),2)xlsheet.cells(xh1+1,1).value=xwmc+'本月一次交检合格率:'+alltrim(str(b,6,2))+'%' XLSheet.Cells(xh1+1,1).Horizontalalignment =3XLSheet.Cells(xh1+1,1).verticalalignment =2*!* sum i to ddadda*!* DDA='A'+ALLTRIM(STR(reccount()+3))+':G'+ALLTRIM(STR(reccount()+3)) *!* XLSheet.RANGE("&DDA").BORDERS(1).LINESTYLE=1*!* XLSheet.RANGE("&DDA").BORDERS(2).LINESTYLE=1*!* XLSheet.RANGE("&DDA").BORDERS(3).LINESTYLE=1*!* XLSheet.RANGE("&DDA").BORDERS(4).LINESTYLE=1*!* XLSheet.RANGE("&DDA").merge*!* XLSheet.Cells(xh1,1).Horizontalalignment =3xwmc='罗莎线'XLApp.Worksheets('罗莎缺陷明细').ActivateXLSheet = XLApp.ActiveSheetxlsheet.range('a3:g300').deleteXLSheet.Cells(1,1).Value=dateyear1+'年'+datemonth1+'月'+'罗莎缺陷明细' if used('qxjlls')sele qxjllsuseendifif used('qxjl')sele qxjlelsesele 0use qxjlendifset order to xwgwzrrcopy to qxjlls for xw='罗莎线'use qxjllsgo topstartrec1=0startrec2=0ddadda1=''ddadda2=''scanxh1=recno()+2if XLSheet.Cells(xh1,1).mergecellsXLSheet.Cells(xh1,1).Horizontalalignment =2XLSheet.Cells(xh1,1).mergecells=.f.XLSheet.Cells(xh1,1).Horizontalalignment =4XLSheet.Cells(xh1,5).Horizontalalignment =4endifif ddadda1!=alltrim(gw).or.mod((xh1-3),64)=0XLSheet.Cells(xh1,1).Value=alltrim(gw)ddadda1=alltrim(gw)if startrec1>0DDA='A'+ALLTRIM(STR(STARTREC1))+':A'+ALLTRIM(STR(xh1-1)) XLSheet.RANGE("&DDA").mergeXLSheet.Cells(startrec1,1).Horizontalalignment =3XLSheet.Cells(startrec1,1).verticalalignment =2endifstartrec1=xh1endifif ddadda2!=alltrim(zrr).or.mod((xh1-3),64)=0XLSheet.Cells(xh1,3).Value=alltrim(zrr)ddadda2=alltrim(zrr)if startrec2>0DDA='C'+ALLTRIM(STR(STARTREC2))+':C'+ALLTRIM(STR(xh1-1)) XLSheet.RANGE("&DDA").mergeXLSheet.Cells(startrec2,3).Horizontalalignment =3XLSheet.Cells(startrec2,3).verticalalignment =2endifstartrec2=xh1endifXLSheet.Cells(xh1,2).Value=alltrim(qxjl)XLSheet.Cells(xh1,4).Value=alltrim(tsg)XLSheet.Cells(xh1,5).Value=alltrim(ch)XLSheet.Cells(xh1,6).Value=alltrim(jb)XLSheet.Cells(xh1,7).Value=alltrim(zrlb)DDA='A'+ALLTRIM(STR(recno()+2))+':g'+ALLTRIM(STR(recno()+2)) XLSheet.RANGE("&DDA").BORDERS(1).LINESTYLE=1 XLSheet.range("&DDA").BORDERS(2).LINESTYLE=1XLSheet.RANGE("&DDA").BORDERS(3).LINESTYLE=1 XLSheet.range("&DDA").BORDERS(4).LINESTYLE=1endscanif startrec1<xh1DDA='A'+ALLTRIM(STR(STARTREC1))+':A'+ALLTRIM(STR(xh1)) XLSheet.RANGE("&DDA").mergeendifXLSheet.Cells(startrec1,1).Horizontalalignment =3XLSheet.Cells(startrec1,1).verticalalignment =2if startrec2<xh1DDA='C'+ALLTRIM(STR(STARTREC2))+':C'+ALLTRIM(STR(xh1)) XLSheet.RANGE("&DDA").mergeendifXLSheet.Cells(startrec2,3).Horizontalalignment =3XLSheet.Cells(startrec2,3).verticalalignment =2dda='A'+ALLTRIM(STR(xh1+1))+':G'+ALLTRIM(STR(xh1+1))xlsheet.range("&dda").mergexlsheet.range("&dda").BORDERS(1).LINESTYLE=1xlsheet.range("&dda").BORDERS(2).LINESTYLE=1xlsheet.range("&dda").BORDERS(3).LINESTYLE=1xlsheet.range("&dda").BORDERS(4).LINESTYLE=1if used('qxjl')sele qxjlelsesele 0use qxjlendifset order to xwgwcount to a for alltrim(xw)=xwmc.and.fs>2b=round(((lssl-a)*100/lssl),2)xlsheet.cells(xh1+1,1).value=xwmc+'本月一次交检合格率:'+alltrim(str(b,6,2))+'%' XLSheet.Cells(xh1+1,1).Horizontalalignment =3XLSheet.Cells(xh1+1,1).verticalalignment =2*!* sum i to ddadda*!* DDA='A'+ALLTRIM(STR(reccount()+3))+':G'+ALLTRIM(STR(reccount()+3)) *!* XLSheet.RANGE("&DDA").BORDERS(1).LINESTYLE=1*!* XLSheet.RANGE("&DDA").BORDERS(2).LINESTYLE=1*!* XLSheet.RANGE("&DDA").BORDERS(3).LINESTYLE=1*!* XLSheet.RANGE("&DDA").BORDERS(4).LINESTYLE=1*!* XLSheet.RANGE("&DDA").merge*!* XLSheet.Cells(xh1,1).Horizontalalignment =3xwmc='综合类'XLApp.Worksheets('综合类缺陷明细').ActivateXLSheet = XLApp.ActiveSheetxlsheet.range('a3:g500').deleteXLSheet.Cells(1,1).Value=dateyear1+'年'+datemonth1+'月'+'综合类缺陷明细'if used('qxjlls')sele qxjllsuseendifif used('qxjl')sele qxjlelsesele 0use qxjlendifset order to xwgwzrrcopy to qxjlls for xw='综合类'use qxjllsgo topstartrec1=0startrec2=0ddadda1=''ddadda2=''scanxh1=recno()+2if XLSheet.Cells(xh1,1).mergecellsXLSheet.Cells(xh1,1).Horizontalalignment =2XLSheet.Cells(xh1,1).mergecells=.f.XLSheet.Cells(xh1,1).Horizontalalignment =4XLSheet.Cells(xh1,5).Horizontalalignment =4endifif ddadda1!=alltrim(gw).or.mod((xh1-3),64)=0XLSheet.Cells(xh1,1).Value=alltrim(gw)ddadda1=alltrim(gw)if startrec1>0DDA='A'+ALLTRIM(STR(STARTREC1))+':A'+ALLTRIM(STR(xh1-1)) XLSheet.RANGE("&DDA").mergeXLSheet.Cells(startrec1,1).Horizontalalignment =3XLSheet.Cells(startrec1,1).verticalalignment =2endifstartrec1=xh1endifif ddadda2!=alltrim(zrr).or.mod((xh1-3),64)=0XLSheet.Cells(xh1,3).Value=alltrim(zrr)ddadda2=alltrim(zrr)if startrec2>0DDA='C'+ALLTRIM(STR(STARTREC2))+':C'+ALLTRIM(STR(xh1-1)) XLSheet.RANGE("&DDA").mergeXLSheet.Cells(startrec2,3).Horizontalalignment =3XLSheet.Cells(startrec2,3).verticalalignment =2endifstartrec2=xh1endifXLSheet.Cells(xh1,2).Value=alltrim(qxjl)XLSheet.Cells(xh1,4).Value=alltrim(tsg)XLSheet.Cells(xh1,5).Value=alltrim(ch)XLSheet.Cells(xh1,6).Value=alltrim(jb)XLSheet.Cells(xh1,7).Value=alltrim(zrlb)DDA='A'+ALLTRIM(STR(recno()+2))+':g'+ALLTRIM(STR(recno()+2)) XLSheet.RANGE("&DDA").BORDERS(1).LINESTYLE=1XLSheet.range("&DDA").BORDERS(2).LINESTYLE=1XLSheet.RANGE("&DDA").BORDERS(3).LINESTYLE=1XLSheet.range("&DDA").BORDERS(4).LINESTYLE=1endscanif startrec1<xh1DDA='A'+ALLTRIM(STR(STARTREC1))+':A'+ALLTRIM(STR(xh1)) XLSheet.RANGE("&DDA").mergeendifXLSheet.Cells(startrec1,1).Horizontalalignment =3XLSheet.Cells(startrec1,1).verticalalignment =2if startrec2<xh1DDA='C'+ALLTRIM(STR(STARTREC2))+':C'+ALLTRIM(STR(xh1))XLSheet.RANGE("&DDA").mergeendifXLSheet.Cells(startrec2,3).Horizontalalignment =3XLSheet.Cells(startrec2,3).verticalalignment =2dda='A'+ALLTRIM(STR(xh1+1))+':G'+ALLTRIM(STR(xh1+1))xlsheet.range("&dda").mergexlsheet.range("&dda").BORDERS(1).LINESTYLE=1xlsheet.range("&dda").BORDERS(2).LINESTYLE=1xlsheet.range("&dda").BORDERS(3).LINESTYLE=1xlsheet.range("&dda").BORDERS(4).LINESTYLE=1if used('qxjl')sele qxjlelsesele 0use qxjlendifset order to xwgwcount to a for alltrim(xw)=xwmc.and.fs>2b=round(((zsl-a)*100/zsl),2)xlsheet.cells(xh1+1,1).value=xwmc+'本月一次交检合格率:'+alltrim(str(b,6,2))+'%' XLSheet.Cells(xh1+1,1).Horizontalalignment =3XLSheet.Cells(xh1+1,1).verticalalignment =2*!* sum i to ddadda*!* DDA='A'+ALLTRIM(STR(reccount()+3))+':G'+ALLTRIM(STR(reccount()+3))*!* XLSheet.RANGE("&DDA").BORDERS(1).LINESTYLE=1*!* XLSheet.RANGE("&DDA").BORDERS(2).LINESTYLE=1*!* XLSheet.RANGE("&DDA").BORDERS(3).LINESTYLE=1*!* XLSheet.RANGE("&DDA").BORDERS(4).LINESTYLE=1*!* XLSheet.RANGE("&DDA").merge*!* XLSheet.Cells(xh1,1).Horizontalalignment =3******************************************以上为公共数据处理模块**********************************************************************************6790数据处理模块****************************************xwmc='6790线'sele gwcscount to reccounts for alltrim(xw)=xwmcpublic sjcs(reccounts)public cs(4),fs(4),bl(4)XLApp.Worksheets('6790质量分析').ActivateXLSheet = XLApp.ActiveSheetIF USED('QXJL')SELE QXJLELSESELE 0USE QXJLENDIFsele qxjlcount to bbx for fs>2.and.alltrim(xw)=xwmccount to cs(1) for alltrim(xw)=xwmccount to cs(2) for at('Z',UPPER(zrlb))>0.and.alltrim(xw)=xwmccount to cs(3) for at('W',UPPER(zrlb))>0.and.alltrim(xw)=xwmccount to cs(4) for at('C',UPPER(zrlb))>0.and.alltrim(xw)=xwmcSUM FS to fs(1) for alltrim(xw)=xwmcSUM FS to fs(2) for at('Z',UPPER(zrlb))>0.and.alltrim(xw)=xwmcSUM FS to fs(3) for at('W',UPPER(zrlb))>0.and.alltrim(xw)=xwmcSUM FS to fs(4) for at('C',UPPER(zrlb))>0.and.alltrim(xw)=xwmcdda1=left(alltrim(XLSheet.Cells(1,1).Value),4)dda2=substr(alltrim(XLSheet.Cells(1,1).Value),7,2)XLSheet.Cells(1,1).Value=dateyear1+'年'+datemonth1+'月'+xwmc+'底盘质量缺陷分析'if dda1=dateyear1.and.dda2=datemonth1for xh1=0 to 3dda1=4*xh1+2dda2=xh1+1XLSheet.Cells(4,dda1).Value=cs(dda2)XLSheet.Cells(5,dda1).Value=fs(dda2)endforoutput4='('+ALLTRIM(STR(zksl))+')台'XLSheet.Cells(9,2).Value='本月份'+output4xh=11do while .t.dda=alltrim(XLSheet.Cells(xh,1).Value)if len(dda)=0exitendifsele gwcslocate for xw=xwmc.and.gw=ddaif !found()XLSheet.Cells(xh,2).V alue='没有找到此工位!'loopendifXLSheet.Cells(xh,2).V alue=round(i/zksl,4)xh=xh+1enddoelsefor xh1=0 to 3dda1=4*xh1+2dda2=xh1+1for xh=dda1+3 to dda1+1 step -1XLSheet.Cells(4,xh).V alue=XLSheet.Cells(4,xh-1).Value XLSheet.Cells(5,xh).V alue=XLSheet.Cells(5,xh-1).Value endforXLSheet.Cells(4,dda1).Value=cs(dda2)XLSheet.Cells(5,dda1).Value=fs(dda2)endforsta=at('(',alltrim(XLSheet.Cells(9,10).Value))enda=len(alltrim(XLSheet.Cells(9,10).Value))sta=enda-staoutput1=right(alltrim(XLSheet.Cells(9,10).Value),sta+1) sta=at('(',alltrim(XLSheet.Cells(9,6).Value))enda=len(alltrim(XLSheet.Cells(9,6).Value))sta=enda-staoutput2=right(alltrim(XLSheet.Cells(9,6).Value),sta+1)sta=at('(',alltrim(XLSheet.Cells(9,2).Value))enda=len(alltrim(XLSheet.Cells(9,2).Value))sta=enda-staoutput3=right(alltrim(XLSheet.Cells(9,2).Value),sta+1) output4='('+ALLTRIM(STR(zksl))+')台'XLSheet.Cells(9,14).V alue='前三月'+output1XLSheet.Cells(9,10).V alue='前二月'+output2XLSheet.Cells(9,6).Value='前一月'+output3XLSheet.Cells(9,2).Value='本月份'+output4xh=11do while .t.dda=alltrim(XLSheet.Cells(xh,1).Value)if len(dda)=0exitendifsele gwcslocate for xw=xwmc.and.gw=ddaif !found()XLSheet.Cells(xh,1).V alue='无此工位!'xh=xh+1loopendifdda=XLSheet.Cells(xh,14).V alue-XLSheet.Cells(xh,10).Value if type('dda')='C'dda=0endifdo casecase dda=0XLSheet.Cells(xh,16).Value='---'case dda<0XLSheet.Cells(xh,16).Value='↑'case dda>0XLSheet.Cells(xh,16).Value=' ↓'endcaseXLSheet.Cells(xh,14).Value=XLSheet.Cells(xh,10).Value XLSheet.Cells(xh,10).Value=XLSheet.Cells(xh,6).Value XLSheet.Cells(xh,6).V alue=XLSheet.Cells(xh,2).V alue XLSheet.Cells(xh,2).Value=round(i/zksl,4)xh=xh+1enddoendifxh=21do while .t.dda=alltrim(XLSheet.Cells(xh,1).Value)if len(dda)=0exitendifsele gwbbset order to xwgwsele gwfsset order to xwgwsele gwcsset relation to xw+gw into gwfsset relation to xw+gw into gwbb addirepla all gwcs.i1 with gwfs.i,gwcs.i2 with gwbb.i set relation tolocate for xw=xwmc.and.gw=ddaif !found()XLSheet.Cells(xh,1).V alue='无此工位!'xh=xh+1loopendifXLSheet.Cells(xh,2).V alue=iXLSheet.Cells(xh,3).V alue=i1XLSheet.Cells(xh,4).V alue=i2xh=xh+1enddoXLApp.Worksheets('6790按责任人统计').Activate XLSheet = XLApp.ActiveSheetFOR XH=1 TO 50XLSheet.ROWS(4).DELETEENDFORsele zrrcsset order to icopy to zrrcsls for xw=xwmcsele zrrfsset order to icopy to zrrfsls for xw=xwmcsele zrrbbset order to icopy to zrrbbls for xw=xwmcsele 0use zrrcslsxh1=1go topscanif recno()>1.and.XLSheet.Cells(recno()+2,5).Value!=i xh1=xh1+1endifXLSheet.Cells(recno()+3,1).Value=recno() XLSheet.Cells(recno()+3,2).Value=xh1XLSheet.Cells(recno()+3,3).Value=alltrim(zrr) XLSheet.Cells(recno()+3,4).Value=gwXLSheet.Cells(recno()+3,5).Value=iendscansele 0use zrrfslsxh1=1go topscanif recno()>1.and.XLSheet.Cells(recno()+2,11).Value!=i xh1=xh1+1endifXLSheet.Cells(recno()+3,7).Value=recno() XLSheet.Cells(recno()+3,8).Value=xh1XLSheet.Cells(recno()+3,9).Value=alltrim(zrr) XLSheet.Cells(recno()+3,10).Value=gwXLSheet.Cells(recno()+3,11).Value=iendscansele 0use zrrbblsxh1=1go topscanif recno()>1.and.XLSheet.Cells(recno()+2,17).Value!=i xh1=xh1+1endifXLSheet.Cells(recno()+3,13).Value=recno()XLSheet.Cells(recno()+3,14).Value=xh1XLSheet.Cells(recno()+3,15).Value=alltrim(zrr)XLSheet.Cells(recno()+3,16).Value=gwXLSheet.Cells(recno()+3,17).Value=iendscanDDA='A4'+':Q'+ALLTRIM(STR(reccount()+3))XLSheet.range("&DDA").BORDERS(1).LINESTYLE=1XLSheet.range("&DDA").BORDERS(2).LINESTYLE=1XLSheet.range("&DDA").BORDERS(3).LINESTYLE=1XLSheet.range("&DDA").BORDERS(4).LINESTYLE=1DDA='F2'+':F'+ALLTRIM(STR(reccount()+3))XLSheet.range("&DDA").MERGEDDA='L2'+':L'+ALLTRIM(STR(reccount()+3))XLSheet.range("&DDA").MERGE*!* XLSheet.ROWS(8).ROWHEIGHT=13*!* XLSheet.COLUMNS(5).COLUMNWIDTH=13*************罗莎线********************xwmc='罗莎线'sele gwcscount to reccounts for alltrim(xw)=xwmcpublic sjcs(reccounts)public cs(4),fs(4),bl(4)XLApp.Worksheets('罗莎质量分析').ActivateXLSheet = XLApp.ActiveSheetsele qxjlcount to bbx for fs>2.and.alltrim(xw)=xwmccount to cs(1) for alltrim(xw)=xwmccount to cs(2) for at('Z',UPPER(zrlb))>0.and.alltrim(xw)=xwmccount to cs(3) for at('W',UPPER(zrlb))>0.and.alltrim(xw)=xwmccount to cs(4) for at('C',UPPER(zrlb))>0.and.alltrim(xw)=xwmcSUM FS to fs(1) for alltrim(xw)=xwmcSUM FS to fs(2) for at('Z',UPPER(zrlb))>0.and.alltrim(xw)=xwmcSUM FS to fs(3) for at('W',UPPER(zrlb))>0.and.alltrim(xw)=xwmcSUM FS to fs(4) for at('C',UPPER(zrlb))>0.and.alltrim(xw)=xwmcdda1=left(alltrim(XLSheet.Cells(1,1).Value),4)dda2=substr(alltrim(XLSheet.Cells(1,1).Value),7,2)XLSheet.Cells(1,1).Value=dateyear1+'年'+datemonth1+'月'+xwmc+'底盘质量缺陷分析' if dda1=dateyear1.and.dda2=datemonth1for xh1=0 to 3dda1=4*xh1+2dda2=xh1+1XLSheet.Cells(4,dda1).Value=cs(dda2)XLSheet.Cells(5,dda1).Value=fs(dda2)endforoutput4='('+ALLTRIM(STR(lssl))+')台'XLSheet.Cells(9,2).Value='本月份'+output4xh=11do while .t.dda=alltrim(XLSheet.Cells(xh,1).Value)if len(dda)=0exitendifsele gwcslocate for xw=xwmc.and.gw=ddaif !found()XLSheet.Cells(xh,2).V alue='没有找到此工位!'loopendifXLSheet.Cells(xh,2).V alue=round(i/lssl,4)xh=xh+1enddoelsefor xh1=0 to 3dda1=4*xh1+2dda2=xh1+1for xh=dda1+3 to dda1+1 step -1XLSheet.Cells(4,xh).V alue=XLSheet.Cells(4,xh-1).Value XLSheet.Cells(5,xh).V alue=XLSheet.Cells(5,xh-1).Value endforXLSheet.Cells(4,dda1).Value=cs(dda2)XLSheet.Cells(5,dda1).Value=fs(dda2)endforsta=at('(',alltrim(XLSheet.Cells(9,10).Value))enda=len(alltrim(XLSheet.Cells(9,10).Value))sta=enda-staoutput1=right(alltrim(XLSheet.Cells(9,10).Value),sta+1) sta=at('(',alltrim(XLSheet.Cells(9,6).Value))enda=len(alltrim(XLSheet.Cells(9,6).Value))sta=enda-staoutput2=right(alltrim(XLSheet.Cells(9,6).Value),sta+1)sta=at('(',alltrim(XLSheet.Cells(9,2).Value))enda=len(alltrim(XLSheet.Cells(9,2).Value))sta=enda-staoutput3=right(alltrim(XLSheet.Cells(9,2).Value),sta+1) output4='('+ALLTRIM(STR(lssl))+')台'XLSheet.Cells(9,14).V alue='前三月'+output1XLSheet.Cells(9,10).V alue='前二月'+output2XLSheet.Cells(9,6).Value='前一月'+output3XLSheet.Cells(9,2).Value='本月份'+output4xh=11do while .t.dda=alltrim(XLSheet.Cells(xh,1).Value)if len(dda)=0exitendifsele gwcslocate for xw=xwmc.and.gw=ddaif !found()XLSheet.Cells(xh,1).V alue='无此工位!'xh=xh+1loopendifdda=XLSheet.Cells(xh,14).V alue-XLSheet.Cells(xh,10).Value if type('dda')='C'dda=0endifdo casecase dda=0XLSheet.Cells(xh,16).Value='---'case dda<0XLSheet.Cells(xh,16).Value='↑'case dda>0XLSheet.Cells(xh,16).Value=' ↓'endcaseXLSheet.Cells(xh,14).Value=XLSheet.Cells(xh,10).Value XLSheet.Cells(xh,10).Value=XLSheet.Cells(xh,6).Value XLSheet.Cells(xh,6).V alue=XLSheet.Cells(xh,2).V alue XLSheet.Cells(xh,2).Value=round(i/lssl,4)xh=xh+1enddoendif。
如何在vfp中调用excel实现图、表的制作(之二)
如何在vfp中调用excel实现图、表的制作(之二)言归正传。
接下来谈谈vfp调用excel生成统计图形的问题。
初学者可能以为这会是件很难的事情,其实还是很简单的,不必担心。
你最好用一点儿数据自己先在excel中试试如何生成一个统计图:打开Excel输入一组数据,例如从A1-A5,从上往下输入100,200,150,223,152这五个数据,然后用鼠标点击A1不放拖至A5,这样就把A1-A5选中了。
接着点击’图表向导’快捷键,在’图表类型’中选择’柱形图’,’子图表类型’就选择第一个,按’下一步’,在下一窗口中的’系列产生在:’选择’列’,因为我们的数据是从上往下按列摆放的。
接着按’下一步’,进入新的窗口,在’图表标题’栏输入:各生产车间产量柱形图;在分类(X)轴栏输入:车间;在’数值(Y)轴’输入:产量。
点击’下一步’,在’图表位置’窗口选中’将图表作为其中的对象插入’,点击’完成’按钮即可看见生成的柱形图形。
我们从vfp调用excel生成图表的角度来简单了解一下excel中的一些基本概念:一.对象层次:(由高到低)Application对象:它在excel对象结构中处于顶层。
形象地说,双击Excel图表就相当于创建了一个Application对象。
↓Workbooks对象:即工作簿对象(集),启动Excel后点击’新建’或’打开’快捷键就相当于创建或打开了一个Workbook。
↓Worksheets对象:即工作表(集)。
启动Excel后工作表集会自动默认含有sheet1、sheet2和sheet3这三个工作表。
Charts对象:图表(集),与Worksheets对象同级↓Cells对象:表格(集),即我们看到的一个个格子。
Range对象:是格子的一个范围,如上面的A1-A5,与Cells对象同级二.VBA(Visual Basic Application):它是一种面向对象的程序语言,内嵌于Excel,Excel的各项功能都可以直接使用VBA进行操作。
如何在vfp中调用excel实现图、表的制作(之八)
如何在vfp中调用excel实现图、表的制作(之八)如何在vfp中调用excel实现图、表的制作(之八)本讲纯属凑数,将搜集的一些可能用到的VFP调用Excel指令语句罗列出来供各位在编程时参考。
所幸没有稿酬可赚,也就没有骗稿费之嫌,各位看官也就不会责怪我。
呵呵。
1. 创建Excel对象eole=CreateObject(“Excel.application”)2. 添加新的工作簿eole.Workbooks.Add3. 打开指定工作簿eole.Workbooks.Open(“C:\demo.xls”)4. 设置第三个工作表为激活(作用)工作表eole.WorkSheets(“Sheet3”).Activate5. 是否显示Excel窗口eole.Visible=.T. (.T. 显示;.F.不显示)6.关闭工作簿eole.Workbooks.Close7.退出Exceleole.quit8.保存当前工作簿eole.ActiveWorkbook.Save9.当前工作簿另存为eole.ActiveWorkbook.SaveAs(“e:\temp\my1.xls”)10.退出时是否存盘eole.ActiveWorkbook.Saved=.F. (.F. 放弃存盘;.T.不放弃存盘)11.是否防止警告框的出现eole.DisplayAlerts=.F. (.F. 不出现;.T.出现)12.运行Excel宏eole.Application.Run(“宏1”)13.当前屏不显示零值eole.ActiveWindow.DisplayZeros=.F.14.更改Excel标题栏内容eole.Caption=”趋势分析表”15. 给单元格赋值eole.Cells(1,4).Value=3.141616.选定区域eole.ActiveSheet.Range(“A1:G10”).Select17.清除区域eole. ActiveSheet.Range(“A1:G10”).Clear18.合并单元格eole.ActiveSheet.Range(“A1:B2”).Merge19. 设置字体eole.ActiveSheet.Cells(2,1)=”隶书”20. 设置字号eole.ActiveSheet.Cells(2,1).font.size=1621.设置字体颜色eole.ActiveSheet.Cells(1,1).font.ColorIndex=322.字体设为斜体eole.ActiveSheet.Cells(1,1).font.Italic=.T.23.文字带下划线eole. ActiveSheet.Range(“A2:A2”).font.underline=.T.24.整列字体为粗体eole.ActiveSheet.Columns(2).font.bold=.T.25.设置单元格背景色eole. ActiveSheet.Cells(3,4).Interior.ColorIndex = 46 26.调整列宽eole.Range(“A1:H1”).ColumnWidth=12.527.调整指定列宽度eole.ActiveSheet.Column(2).ColumnWidth=2028.单元格文字居中eole.Cells(1,8).HorizontalAlignment=329.插行eole.ActiveSheet.Rows(1).Insert30.删行eole.ActiveSheet.Rows[8].Delete31.插列eole.ActiveSheet.Columns(2).Insert32.删列eole.Columns("D:D").Selecteole.Selection.Delete(-4159)33.删除指定工作表指定列eole.WorkSheets(“Sheet1”).Row(3).Delete34.调整行高eole.ActiveSheet.Rows(5).RowHeight=4035.块拷贝eole.Range(“A1:J3”).Selecteole.Selection.Copy或:eole.ActiveSheet.Range(“A1:E2”).Copy36.块粘贴eole.Range(“A1:A1”).Selecteole.ActiveSheet.Paste37.拷贝整个工作表ed.Range.Copy / eole.Cells.Copy 38.在指定工作表指定单元格粘贴eole.WorkSheets(“Sheet2”).Range(“A1”).PasteSpecial 39.单元格设置公式eole.Range(“A1”).Fornula=”=10*Rand()”40.清除单元格公式eole.ActiveSheet.Cells(1,4).ClearContents41.插入新工作表eole.Sheets.Add42.删除某个工作表eole.Sheets(“Sheet2”).Selecteole.ActiveWindow.SelectSheets.Delete43.返回当前工作簿工作表的总数eole.WorkSheets.Count44.返回Sheet1工作表的表名eole.WorkSheets(1).Name45.工作表更名eole.Sheets(2).Name=”损益表”46. 设置表格四个边框线条的类型eole.ActiveSheet.Range(“B3:D3”).Borders(2).Linestyl e=1 其中:borders参数:1-左 2-右 3-顶 4-底 5-斜/ 6-反斜\Linestyle参数:1和7-细实线;2-细虚线;4-点虚线;9:双细实线47. 设置表格边框线粗细eole.ActiveSheet.Range(“B3:D3”).Borders(2).Weight=348.在指定行插入分页符eole.WorkSheets(“Sheet1”).Rows(10).PageBreak=149.在指定列之前删除分页符eole.ActiveSheet.Columns(4).PageBreak=050.打印预览工作表eole.ActiveSheet.PrintPreview51.打印输出eole.ActiveSheet.Printout52.报表打印方向eole.ActiveSheet.PageSetup.Orientation=1 (1:垂直打印2:水平打印)53.设置页面纸张尺寸eole.ActiveSheet.PageSetup.PaperSize=954.打印单元格网线eole.ActiveSheet.PageSetup.PrintGridLines=.T.55.报表水平居中eole.ActiveSheet.PageSetup.CenterHorizontally=.T.56.报表垂直居中eole.ActiveSheet.PageSetup. CenterVertically=.T.57.设置报表页眉eole.ActiveSheet.PageSetup.CenterHeader=”报表1”58.设置报表页脚eole.ActiveSheet.PageSetup.CenterFoo ter=”第6页”59.设置报表左边距eole.ActiveSheet.PageSetup.LeftMargin=2/0.035 (2厘米)60.设置报表右边距eole.ActiveSheet.PageSetup.RightMargin=2/0.03561.设置报表顶边距eole.ActiveSheet.PageSetup.T opMargin=2/0.03562.设置报表底边距eole.ActiveSheet.PageSetup.BottomMargin=2/0.035关于VFP调用Excel 编程最后再罗嗦几句。
VFP控制EXCEL的方法(终于找到了)
VFP控制EXCEL的常用方法oExl=CREATEOBJECT('Excel.application')oExl.Visible=.T.oExl.DefaultSaveFormat=39oExl.SheetsInNewWorkbook=1oExl.Workbooks.Open(cXLS)oExl.WindowState=-4140 &&窗口最小化oExl.WindowState=-4143 &&窗口正常化oExl.WindowState=-4147 &&窗口最大化*------------------------------------------------------*&&页面设置oExl.ActiveSheet.PageSetup.PrintTitleRows="$1:$3" &&打印标题oExl.ActiveSheet.PageSetup.Orientation=2 &&页面方向:1纵向/2横向*oExl.ActiveSheet.PageSetup.PaperSize=11 &&纸张尺寸:9-A4/11-A5oExl.ActiveSheet.PageSetup.TopMargin=0.8/0.035 &&顶边距oExl.ActiveSheet.PageSetup.BottomMargin=0.8/0.035 &&底边距oExl.ActiveSheet.PageSetup.LeftMargin=0 &&左边距oExl.ActiveSheet.PageSetup.RightMargin=0 &&右边距oExl.ActiveSheet.PageSetup.CenterHorizontally=.T. &&页面居中oExl.ActiveSheet.PageSetup.HeaderMargin=0.5/0.035oExl.ActiveSheet.PageSetup.FooterMargin=0.5/0.035oExl.ActiveSheet.PageSetup.LeftHeader="&9表格"”9是字号”oExl.ActiveSheet.PageSetup.CenterHeader=""oExl.ActiveSheet.PageSetup.RightHeader="&9"oExl.ActiveSheet.PageSetup.LeftFooter=""oExl.ActiveSheet.PageSetup.CenterFooter="&9第&P页,共&N页"oExl.ActiveSheet.PageSetup.RightFooter="&9制表人:'+代码+' 制表时间:"+TTOC(DATETIME())*------------------------------------------------------*&&整体格式设置oExl.ActiveSheet.Rows.Font.Size=9='宋体'oExl.ActiveSheet.Rows.RowHeight=0.5/0.035oExl.ActiveSheet.Rows.NumberFormatLocal="0.00_ ;[红色]-0.00"oExl.ActiveSheet.Rows.VerticalAlignment=2 &&单元格内容垂直居中*------------------------------------------------------*&&获取最大行号和最大列号Local nMaxRow,nMaxColnMaxRow=edRange.Rows.CountnMaxCol=edRange.Columns.Count&&表头格式设置oExl.ActiveSheet.Rows(1).Font.Size=16oExl.ActiveSheet.Rows(1).Font.Bold=.T.oExl.ActiveSheet.Rows(1).RowHeight=1/0.035oExl.ActiveSheet.Rows(1).HorizontalAlignment=3oExl.ActiveSheet.Rows(2).HorizontalAlignment=3oExl.ActiveSheet.Rows(3).HorizontalAlignment=3oExl.ActiveSheet.Rows(3).Font.Bold=.T.oExl.ActiveSheet.Range('A1:'+CHR(96+nMaxCol)+'1').MergeoExl.ActiveSheet.Range('A2:'+CHR(96+nMaxCol)+'2').Merge*------------------------------------------------------*&&条件格式隐藏0值edRange.FormatConditions.DeleteedRange.FormatConditions.Add(1,3,'0')edRange.FormatConditions(1).Font.ColorIndex=2&&文字白色*------------------------------------------------------*oExl.ActiveSheet.Range('A1:B1').Interior.ColorIndex=6 &&单元格底纹黄色*------------------------------------------------------*oExl.ActiveSheet.Columns.AutoFit &&自动列宽oExl.ActiveSheet.Range("A3:"+CHR(96+nMaxCol)+ALLTRIM(STR(nMaxRow))).Borders.Weight =2 &&边框线*------------------------------------------------------*&&自动筛选IF !oExl.ActiveSheet.AutoFilterMode &&判断是否存在自动筛选oExl.ActiveSheet.Rows(3).Autofilter &&如果不存在自动筛选,则添加自动筛选ENDIF*------------------------------------------------------*&&冻结窗格oExl.ActiveSheet.Range('D4').SelectoExl.ActiveWindow.FreezePanes = .T.*------------------------------------------------------**------------------------------------------------------*&&分类汇总Local Arry(1),nMaxRow,nMaxColArry(1)=5nMaxRow=edRange.Rows.CountnMaxCol=edRange.Columns.CountoExl.ActiveSheet.Range('A3:'+chr(96+nMaxCol)+alltrim(str(nMaxRow))).Subtotal(2,-4157,@A rry,.T.,.F.,.T.) &&按第2列分类汇总数组Arry保存的列*------------------------------------------------------*1、对象的创建与关闭*******************************oExl=CREATEOBJECT('Excel.application') &&创建Excel对象oExl.SheetsInNewWorkbook=1 &&新建工作簿默认包含工作表个数oExl.Workbooks.Add &&新建工作簿,工作表个数由SheetsInNewWorkBooks属性指定oExl.Workbooks.Open(cXLS,3,.T.) &&打开指定工作簿(更新链接/只读打开)oExl.Workbooks.Open(cXLS, [UpdateLinks], [ReadOnly], [Format], [Password], [WriteResPassword], [IgnoreReadOnlyRecommended], [Origin], [Delimiter], [Editable], [Notify], [Converter], [AddToMru], [Local], [CorruptLoad])oExl.Worksheets(cSheet).Activate &&激活工作表Sheet3 oExl.Worksheets(3).Activate &&激活(从左到右)第3个工作表oExl.WorkSheets.Count &&工作簿中工作表数oExl.DefaultSaveFormat=39 &&默认格式Excel 5.0oExl.DisplayAlerts=.F. &&不显示警告信息oExl.Visible=.T. &&显示Excel窗口oExl.Visible=.F. &&不显示Excel窗口oExl.Caption="Excel标题栏" &&更改Excel标题栏oExl.WorkSheet("Sheet2").Range("A1").PasteSpecial &&粘贴oExl.Quit &&退出ExceloExl.DisplayRecentFiles=.T. &&是否显示最近打开文档oExl.RecentFiles.Maximum=4 &&历史最大纪录数erName="XXXX" &&用户名oExl.StandardFont="宋体" &&标准字体oExl.StandardFontSize="12" &&标准字体大小oExl.DefaultFilePath="D:\XXXXXX\" &&默认工作目录oExl.EnableSound=False &&声音反馈oExl.RollZoom=False &&智能鼠标缩放oExl.TransitionMenuKey="/" &&Microsoft Office Excel菜单键oExl.ActiveWorkbook.Password="123"oExl.ActiveWorkbook.WritePassword="456"oExl.ActiveWorkbook.ReadOnlyRecommended=FalseoExl.ActiveWorkbook.SetPasswordEncryptionOptions PasswordEncryptionProvider:="", _PasswordEncryptionAlgorithm:="OfficeStandard", PasswordEncryptionKeyLength:=40 _, PasswordEncryptionFileProperties:=FalseIF oExl.ActiveWorkbook.FileFormat==39 &&格式为Excel 5.0工作簿ENDIFoExl.ActiveWorkBook.SaveAs(FileName,FileFormat,PassWord,WriteResPassWord,ReadOnlyR ecommended,CreateBackup)&&另存为&&参数说明FileName 字符型,指定文件名FileFormat 数值型,文件格式-4143 Microsoft Office Excel11 DBF439 Microsoft Excel 5.0/9543 Microsoft Excel97-Excel2003 & 5.0/9544 网页Html文件-4158 文本文件(制表符分隔)PassWord 字符型,只读密码WriteResPassWord 字符型,写密码ReadOnlyRecommended 逻辑型,建议只读CreateBackup 逻辑型,自动备份例如:oExl.ActiveWorkBook.SaveAs("d:\1.xls",39)oExl.ActiveWorkbook.saved=.T. &&放弃存盘oExl.ActiveWorkbook.Save &&存盘(自动存盘不提问)oExl.Workbooks.close &&关闭工作簿3、单元格的设置***********************************&&冻结窗格oExl.ActiveSheet.Range('D4').SelectoExl.ActiveWindow.FreezePanes = .T.&&条件格式设定oExl.ActiveSheet.Range('A1:H18').FormatConditions.Add(Type,Operator,Formula1,Formula2) Type 类型(1单元格数值,2公式)Operator 操作符(1介于,2不介于,3等于,4不等于,5大于,6小于,7大于等于,8小于等于) Formula1 表达式1Formula2 表达式2,操作符为1介于或2不介于才有效&&条件格式例句:数值为0者,文字颜色白色edRange.FormatConditions.DeleteedRange.FormatConditions.Add(1,3,'0')edRange.FormatConditions(1).Font.ColorIndex=2&&文字白色&&编辑edRange.Copy &&拷贝整个工作表oExl.ActiveSheet.Range("A1:E2").Copy &&拷贝指定区域oExl.ActiveSheet.Columns("D:D").Delete &&删除列oExl.ActiveSheet.Columns("A:B").Delete &&删除列oExl.ActiveSheet.Rows(1).Insert &&在第1行之前插入一行oExl.ActiveSheet.Columns(2).Insert &&在第2列之前插入一列oExl.ActiveSheet.Cells(1,2).Value="ABTMC" &&给单元格赋值oExl.ActiveSheet.Cells(2,2).Value="&BBBB" &&给单元格赋值oExl.ActiveSheet.Cells(1,4).ClearContents &&清除单元格公式oExl.ActiveSheet.Rows(18).PageBreak=1 &&在第18行之前插入分页符oExl.ActiveSheet.Columns(4).PageBreak=0 &&在第4列之前删除分页符oExl.ActiveSheet.Rows(3).AutoFilter &&自动筛选oExl.ActiveSheet.Cells(1,1).Delete(-4159) &&删除单元格-4159 右边单元格左移-4162 下边单元格上移oExl.Selection.EntireRow.Delete &&所在行整行删除oExl.Selection.EntireColumn.Delete &&所在列整列删除oExl.ActiveSheet.Cells(1,1).Insert(-4142) &&插入单元格-4142 活动单元格下移-4161 活动单元格右移oExl.ActiveSheet.Selection.EntireRow.Insert &&插入行oExl.ActiveSheet.Selection.EntireColumn.Insert &&插入列&&选择性粘贴oExl.ActiveSheet.Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=FalsePaste 粘贴数据:8列宽,11公式和数值格式,12数值与数值格式,-4104全部,-4123公式,-4163数值,-4122格式,Operation 运算符:-4142无,2加,3减,4乘,5除SkipBlanks 跳过空白单元:逻辑型Transpose 转置:逻辑型--------------------------------------------------&&排序成功例句:oExl.ActiveSheet.Range('A1:'+CHR(96+nMaxCol)+ALLTRIM(STR(nMaxRow))).Sort(oExl.Active Sheet.Range(CHR(96+ASCAN(Arry,'原币金额'))+'2'),2,,,,,,1)&&按"原币金额"所在列降序排列,有标题oExl.ActiveSheet.Rows('1:28').SortKey1:=Range("A2"), Order1:=xlDescending,Key2:=Range("B2"), Order2:=xlAscending,Key3:=Range("C2"), Order3:=xlDescending,Header:=xlYes,OrderCustom:=6,MatchCase:=True,Orientation:=xlTopToBottom,SortMethod:=xlStroke,DataOption1:=xlSortNormal,DataOption2:=xlSortNormal,DataOption3:=xlSortNormal参数说明:2 xlDescending降序1 xlAscenging升序标题行:0 xlGuess1 xlYes,2 xlNo1 xlTopToBottom排序方法:1 xlPinYin,2 xlStroke0 xlSortNormalKey1 排序字段:取值类型是范围oExl.ActiveSheet.Range('B2')Order1 升序降序:xlAscending=1升序,xlDescending=2降序Header 有无标题:xlGuess=0自动判断,xlYes=1有,xlNo=2无orderCustom 排序顺序:1普通,6日一二三MatchCase 是否区分大小写:T区分,F不区分Orientation 1从头到底,2从左到右SortMethod 排序方法:xlPinYin=1拼音,xlStroke=2字母DataOption1 xlSortNormal=0正常DataOption2DateOption3&&分类汇总LOCAL Array(1)Array(1)=5oExl.ActiveSheet.Range('A1:G28').Subtotal(2,-4157,@Array,.T.,.F.,.T.)参数列表:GroupBy:=2, Function:=xlSum, TotalList:=Array(3), Replace:=True, PageBreaks:=False, SummaryBelowData:=True参数说明:GroupBy 分组字段序号Function 汇总方式:-4157求和,-4112计数TotalList 汇总数据项:保存汇总列序号的数组引用Replace 替换当前分类汇总:逻辑型,默认TPageBreaks 每组数据分页:逻辑型,默认FSummaryBelowData 汇总结果显示在数据下方:逻辑型,默认T&&汇总结果表间切换oExl.ActiveSheet.Outline.ShowLevels RowLevels:=2oExl.ActiveSheet.Outline.ShowLevels RowLevels:=1oExl.ActiveSheet.Outline.ShowLevels RowLevels:=3&&数值格式设置oExl.ActiveSheet.Range("A").NumberFormatLocal="0.00" &&指定区域内的数字显示格式&&对齐设置oExl.ActiveSheet.Range('A1:B1').HorizontalAlignment=3 &&水平方向2左对齐,3居中,4右对齐edRange.VerticalAlignment=2 &&垂直方向1靠上,2居中,3靠下oExl.ActiveSheet.Range('A1:B1').WrapText=.T. &&自动换行oExl.ActiveSheet.Range('A1:B1').Orientation = -4166 &&文字方向-4166 垂直向下oExl.ActiveSheet.Range('A1:B1').AddIndent = False &&缩进oExl.ActiveSheet.Range('A1:B1').IndentLevel = 2 &&缩进2字符oExl.ActiveSheet.Range('A1:B1').ShrinkToFit = .T. &&缩小以填充oExl.ActiveSheet.Range('A1:B1').ReadingOrder = -5002 &&文字阅读方向-5002 根据内容-5003 从左到右oExl.selection.MergeCells=.T. &&合并单元oExl.selection.HorizontalAlignment=2 &&水平方向2左对齐,3居中,4右对齐oExl.selection.VerticalAlignment=2 &&垂直方向1靠上,2居中,3靠下&&字体设置oExl.ActiveSheet.ROWS(1)="黑体" &&设置字体oExl.ActiveSheet.ROWS(1).Font.FontStyle="常规"oExl.ActiveSheet.ROWS(1).Font.Size=14 &&设置字体大小oExl.ActiveSheet.ROWS(1).Font.Bold=.T. &&设置整行字体为粗体oExl.ActiveSheet.ROWS(1).Font.StrikeThrough=.T. &&删除线oExl.ActiveSheet.Cells(1,1).Font.Italic=.T. &&设置字体为斜体oExl.ActiveSheet.ROWS(1).Font.Superscript = .T. &&上标oExl.ActiveSheet.ROWS(1).Font.Subscript = .T. &&下标oExl.ActiveSheet.ROWS(1).Font.OutlineFont = FalseoExl.ActiveSheet.ROWS(1).Font.Shadow = FalseoExl.ActiveSheet.ROWS(1).Font.Underline = -4142 &&下划线oExl.ActiveSheet.ROWS(1).Font.ColorIndex = -4105 &&字体颜色自动设置oExl.ActiveSheet.ROWS(1).Font.Underline = 2 &&下划线类型下划线类型2 单下划线&&边框设置oExl.ActiveSheet.Range("b3:d3").Borders.Weight=2 &&指定边框线宽度其中Borders参数:1-左、2-右、3-顶、4-底、5-斜\、6-斜/;不带参数表示默认上下左右四个边框LineStyle值:1与7-细实、2-细虚、4-点虚、9-双细实线)oExl.ActiveSheet.Range("A1:BE29").Borders(1).LineStyle=1 &&设置四个边框线条的类型oExl.ActiveSheet.Range("A1:BE29").Borders(2).LineStyle=1 &&设置四个边框线条的类型oExl.ActiveSheet.Range("A1:BE29").Borders(3).LineStyle=1 &&设置四个边框线条的类型oExl.ActiveSheet.Range("A1:BE29").Borders(4).LineStyle=1 &&设置四个边框线条的类型&&1 xlContinuous&&2 xlThin&&5 xlDiagonalDown&&6 xlDiagonalUp&&10 xlEdgeRight&&12 xlInsideHorizontal&&行列设置oExl.ActiveSheet.Columns(1).ColumnWidth=20 &&列的宽度(单位:字符个数)oExl.ActiveSheet.Columns(2).ColumnWidth=30oExl.ActiveSheet.Columns("C:BE").ColumnWidth=9.5oExl.ActiveSheet.Columns.AutoFit &&最适合的列宽oExl.ActiveSheet.Rows(1).RowHeight=1/0.035 &&设置指定行的高度(单位:磅)(行高为1厘米,1磅=0.035厘米)oExl.ActiveSheet.Range('A1:B1').Interior.ColorIndex=nColorIndex &&设置底纹常用颜色值ColorIndex1 黑色2 白色3 红色4 鲜绿5 蓝色6 黄色7 粉红8 青绿9 深红10 绿色13 紫罗兰15 灰-25%34 浅青绿36 浅黄38 玫瑰红39 淡紫40 茶色42 水绿46 橙色53 褐色54 梅兰oExl.ActiveSheet.Range('P3:P4').Orientation=-4166 &&文字方向垂直&&同一工作簿中复制工作表副本oExl.WorkSheets(1).Copy(oExl.ActiveWorkBook.Sheets(1))&&不同工作簿oExl.Sheets(1).copy(oExl.Workbooks("BOOK1.XLS").Sheets(1))3、页面设置***********************************************oExl.ActiveSheet.PageSetup.TopMargin=2/0.035 &&设置顶边距oExl.ActiveSheet.PageSetup.BottomMargin=1.5/0.035 &&设置底边距oExl.ActiveSheet.PageSetup.LeftMargin=0 &&设置左边距oExl.ActiveSheet.PageSetup.RightMargin=0 &&设置右边距&&页眉页脚oExl.ActiveSheet.PageSetup.HeaderMargin=1.5/0.035 &&设置页眉边距oExl.ActiveSheet.PageSetup.FooterMargin=0.8/0.035 &&设置页脚边距oExl.ActiveSheet.PageSetup.LeftHeader="&9XXXXXX"oExl.ActiveSheet.PageSetup.CenterHeader=""oExl.ActiveSheet.PageSetup.RightHeader="&9 "oExl.ActiveSheet.PageSetup.LeftFooter=""oExl.ActiveSheet.PageSetup.CenterFooter="&9第&P页,共&N页"oExl.ActiveSheet.PageSetup.RightFooter="&9制表人:xxx "&P页序号&N页总数&D日期,&T时间&S删除线&Y下标&Z路径&F文件&A标签&G图片&X上标&""隶属,倾斜""&9九号字体&U下划线&B粗体&&左页眉图片设定oExl.ActiveSheet.PageSetup.LeftHeaderPicture.Filename="D:\2.jpg"oExl.ActiveSheet.PageSetup.LeftHeaderPicture.Height = 45oExl.ActiveSheet.PageSetup.LeftHeaderPicture.Width = 11.25oExl.ActiveSheet.PageSetup.LeftHeaderPicture.Brightness = 0.51oExl.ActiveSheet.PageSetup.LeftHeaderPicture.ColorType = msoPictureGrayscale oExl.ActiveSheet.PageSetup.LeftHeaderPicture.CropBottom = 28.35oExl.ActiveSheet.PageSetup.LeftHeaderPicture.CropLeft = 28.35oExl.ActiveSheet.PageSetup.LeftHeaderPicture.CropRight = 28.35oExl.ActiveSheet.PageSetup.LeftHeaderPicture.CropTop = 28.35oExl.ActiveSheet.PageSetup.CenterHorizontally=.T. &&设置页面水平居中oExl.ActiveSheet.PageSetup.CenterVertically=.T. &&设置页面垂直居中&&设置页面纸张大小oExl.ActiveSheet.PageSetup.Orientation=2 &&页面方向2表示横向oExl.ActiveSheet.PageSetup.PaperSize=11纸张大小:9 A411 A570 A6oExl.ActiveSheet.PageSetup.Draft=.T.oExl.ActiveSheet.PageSetup.FirstPageNumber=1oExl.ActiveSheet.PageSetup.Order=1&&单色打印oExl.ActiveSheet.PageSetup.BlackAndWhite=.T.oExl.ActiveSheet.PageSetup.PrintComments=-4142oExl.ActiveSheet.PageSetup.Zoom=100 &&缩放100%oExl.ActiveSheet.PageSetup.Zoom=.F. &&禁用缩放oExl.ActiveSheet.PageSetup.FitToPagesWide=1 &&调整为一页宽oExl.ActiveSheet.PageSetup.FitToPagesTall=1 &&调整为一页高oExl.ActiveSheet.PageSetup.PrintHeadings=.T.oExl.ActiveSheet.PageSetup.PrintGridLines=.T.oExl.ActiveSheet.PageSetup.PrintErrors=oExl.ActiveSheet.PageSetup.PrintQuality=600 &&打印质量oExl.ActiveSheet.PageSetup.PrintTitleRows="$1:$3" &&固定标题行oExl.ActiveSheet.PageSetup.PrintTitleColumns="$A:$C" &&固定标题列oExl.ActiveSheet.PageSetup.PrintGridlines=.T. &&打印单元格网线*********************************************************&&打印oExl.ActiveSheet.PrintPreview &&打印预览工作表oExl.ActiveSheet.PageSetup.PrintArea="$A$1:$E$30" &&设置打印区域ActiveSheet.PageSetup.PrintArea = "" &&取消打印区域ActiveWorkbook.WebPagePreview &&网页预览oExl.ActiveSheet.PrintOut &&打印输出工作表5、VFP下直接调用EXCEL、WORD文件DECLARE INTEGER ShellExecute IN shell32.DLL INTEGER HWND,STRING,STRING lpszFile,STRING, STRING,INTEGERoperate="open"ShellExecute(0,operate,"C:\111.XLS",0,0,1) &&EXCEL文件ShellExecute(0,operate,"C:\111.DOC",0,0,1) &&WORD文件oExcel=Createobject("Excel.application")&&创建Excel对象**对象属性1、添加Sheets.Add before:=Sheets(1) '在第1工作表前添加新工作表Sheets.Add after:=Sheets(Sheets.Count) '在最后工作表后添加新工作表2、移动ActiveSheet.Move before:=Sheets(2) '将当前工作表移动至第2工作表之前3、命名="工作表名" '将当前工作表命名为"工作表名"4、删除可以用以下语句删除当前工作表。
VFP调用EXCEL
VFP(Visual Foxpro)是一种关系型数据库管理系统,由于其强大的数据处理能力及良好的兼容性,使其成为数据库应用程序开发人员强有力的工具而广为使用; 而Excel则是一个优秀的电子表格处理软件,在兼容性、操作界面、公式运算、图表等方面有着独到的优势,成为广大办公应用人员必备的首选软件。
上述两种软件在各自的应用领域均得到了广泛的应用,同时上述两种软件还具有良好的交互编程能力,为两者相辅相成、取长补短奠定了良好的基础。
本文将结合实例介绍VFP与Excel交互编程的方法,在VFP中除了使用OLE技术外,还可使用DDE技术与外部服务器进行数据交换,本文主要讲解VFP中使用OLE技术与Excel交换数据,Excel中借助内置的VBA使用VFP提供的Application对象来调用VFP中的一些功能。
其功能可简述如下:VFP数据表“学生成绩.DBF”中含“学号、姓名、语文、数学”等字段,示例程序将从Excel工作簿“VFP交互.XLS”的工作表“查询”中用“条件”区域(一般为一个矩形区中的数据,该区域名称指定为“条件”,数据形如“语文>60”、“数学<90”等)中的数据作为查询的条件,用“连接条件”区域(一般为一个单元格,其值为“or”或者“and”)来获取组合“条件”的逻辑连接,并将该连接信息的内容以工作表的形式显示出来,然后调用VFP中针对给定表的SQL查询来找出给定条件的记录并显示到Excel中。
下列程序均在VFP 6.0与Excel 2000中调试通过。
Excel驱动VFPExcel内置的VBA语言(Visual Basic For Application)为Excel功能的扩展提供了便利的手段,用户可使用该语言直接驱动VFP完成数据检索等功能。
程序首先生成一个VFP对象,然后用VFP的DoCmd方法执行VFP搜索命令串,其搜索结果再借助于VFP的DataToClip方法拷贝至剪切板,最后VBA将其粘贴至工作表的正确位置,为了每次运行时能将结果插入到工作表中,依次对操作的工作表以“搜索结果”、“搜索结果1”等进行编号。
excel如何导入到VFP中
Visual FoxPro 6.0中文版命令手册excel如何导入到VFP中比如EXCEL的文件名是 t001 怎么做才能导入到VFP中啊!import from dd.xls type xlsuse ddcopy to d:\newddIMPORT不能指定新生成表的存放路径,一般会自动保存到默认目录下。
用以下语句可以实现你的要求:IMPORT FROM t001.xls type xl8 &&导入t001.xls并(在默认目录下)生成t001.dbf文件copy to d:\t001 &&复制文件到D盘Use &&关闭t001表DELETE FILE t001.dbf &&删除(在默认目录下的)t001.dbf文件使用import命令,如:IMPORT FROM 表1.xls TYPE xl8将表1.xls导入为表1.dbf---------------------------------------------------------------用VFP导入点击“文件”->导入->类型选择:“Microsoft Excel 5.0 和 97 (XLS)”来源于选择:你要导入的Excel文件工作表:默认为Sheet1,如是你要把Excel文件中Sheet2中内容导过来,就选择“Sheet2”->最后点击导入即可。
*******************************************************************如果导入时出现提示:致命错误:异常代码=C0000005*可以把Microsoft Excel 在保存时存为Microsoft Excel 5.0/95 格式或4.0格式。
这样就能导入了。
******************************************************************以上操作相当于如下命令操作:IMPORT FROM 你的表.xls TYPE XL8 SHEET "Sheet2"有时需要把Excel表另存为“Microsoft Excel 5.0 和 97 (XLS)”格式后,再用以上命令进行导入。
VF中控制EXCEL的常用操作
ef=CREATEOBJECT('Excel.application') &&调用 Excel 程序 ef.Workbooks.add &&添加工作簿 ef.Worksheets("sheet1").Activate &&激活第一个工作表 ef.visible=.t. &&显示 Excel 界面 ef.Cells.Select &&选择整张表 ef.Selection.Font.Size = 10 &&设置整表默认字体大小为 10 select 0 use agcallop &&选择被导出的表 num=reccount() &&求导出总记录数 go top i=5 ef.range("F1:K1").Select &&选择标题栏所在单元格 ef.Selection.Merge &&合并单元格 with ef.range("F1 ") &&设置标题及字体属性 .value='客户服务部业务代表工作量情况统计表' ="黑体" .Font.size=18 endwith ef.Rows(2).RowHeight=1/0.035 &&设置第二行高度为 1cm ef.range("H2:O2").Select &&选定统计条件栏所在单元格 ef.Selection.Merge &&合并单元格 ef.range("H2").Font.size=10 ef.range("H2").HorizontalAlignment=4 &&设置内容对齐方式为右对齐,3 为居中,2 为右对齐 ef.range("H2").value='统计时间:'+dtoc(date())+' 打印日期: '+dtoc(date()) ef.Rows("3:4").Select with ef.Selection .HorizontalAlignment = 3 &&设置 3、4 行为水平对齐
VFP全面控制EXCEL
oExcel.ActiveWorkbook.SaveAs(lcFileName)
Endif
Endif
*!* 42.放弃存盘 && 避免出现保存对话框
oExcel.ActiveWorkbook.saved=.T.
*!* 43.存盘
oExcel.ActiveWorkbook.Save
oExcel.ActiveSheet.PageSetup.PrintGridlines=.T.
*!* 28.拷贝整个工作表
edRange.Copy
*!* 29.拷贝指定区域
oExcel.ActiveSheet.Range("A1:E2").Copy
oExcel.ActiveSheet.PageSetup.TopMargin=2/0.035
*!* 21.设置底边距为4厘米
oExcel.ActiveSheet.PageSetup.BottomMargin=4/0.035
*!* 22.设置左边距为2厘米
oExcel.ActiveSheet.PageSetup.LeftMargin=2/0.035
Endif
Catch
Exit
Endtry
Endfor
Catch
Exit
Endtry
oExcel.ActiveSheet.PageSetup.CenterVertically=.T.
*!* 26.设置页面纸张大小(1-窄行8 5 11 39-宽行14 11 9:A4)
oExcel.ActiveSheet.PageSetup.Papersize=1
*!* 27.打印单元格网线
VF操作Excel实例
myexcel.ActiveSheet.Range("&cya1:&cya2").Borders(4).LineStyle=1
**********************************************************************
* 2、自动判断数据范围,并划边框线
* 3、将产生的Excel表另存为"c:\hh.xls"
* 4、本程序是一个完整
close all
set safe off
cylujin=sys(5)+sys(2003) && 获取系统当前路径
**********************************************************************
cya1='a'+allt(str(cyrow+1))
cya2=cyb3+allt(str(cyrow+aa))
myexcel.ActiveSheet.Range("&cya1:&cya2").Borders(1).LineStyle=1
bookexcel=myexcel.workbooks.open(cylujin+"\任务下发(样表).xls") &&打开指定工作簿
bookexcel.worksheets('汇总表').Activate &&激活指定工作表
vfp直接读取EXCEL文件的示例
vfp直接读取EXCEL文件的示例vfp直接读取EXCEL文件的示例M_File=GETFILE('xls','订单文件')IF M_File=""=MESSAGEBOX("请选择待导入的收订单文件!",0 48,"提示") RETURNELSEIF JUSTEXT(M_FILE)#"XLS" &&获得文件扩展名=MESSAGEBOX("您选择的不是EXCEL文档!",0 48,"提示")RETURNENDIFENDIFUSE 图书订单表ZAPmyexcel=createobject('excel.application') &&创建一个对象myexcel.visible=.f.&&不可见bookexcel=myexcel.workbooks.open(M_File) &&打开指定文件o_SheetName= &&获取当前激活工作表的名称UsedRange=bookexcel.worksheets(o_SheetName).UsedRange &&返回工作表中可使用的区域,UsedRange表的属性o_rows=UsedRange.rows.count &&汇总行o_cols=UsedRange.columns.count &&汇总列IF o_rows<=1=MESSAGEBOX("待导入数据行数太少,请检查!",0 16,"提示") ELSEFOR i=2 TO o_rowsm1=myexcel.cells(i,1).value &&书号m2=myexcel.cells(i,2).value &&书名m3=myexcel.cells(i,3).value &&出版社m4=myexcel.cells(i,4).value &&作者m5=myexcel.cells(i,5).value &&定价m6=myexcel.cells(i,6).value &&数量APPEND BLANKREPLACE 书号 WITH m1,书名 WITH m2,出版社 WITH m3,作者WITH m4,定价 WITH m5,数量 WITH m6ENDFORENDIFmyexcel.workbooks.close &&关闭工作区myexcel.quit &&关闭excelbrow。
VFP_全面控制EXCEL
VFP_全⾯控制EXCELVFP和Excel都可以⽤来进⾏处理数据库表格,如果巧妙地将⼆者的优点结合起来,将会⼤⼤⽅便我们的⼯作。
⽐如我们可以利⽤VFP进⾏处理数据,⽽利⽤Excel的预览打印功能进⾏报表打印。
这就需要我们在VFP中直接来控制Excel。
下⾯就在开发VFP应⽤项⽬时对Excel的控制作⼀下介绍:*!* 1.创建Excel对象oExcel=Createobject("Excel.application")*!* 2.添加新⼯作簿oExcel.Workbooks.Add*!* 3.设置第3个⼯作表为激活⼯作表oExcel.Worksheets("sheet3").Activate*!* 4.打开指定⼯作簿oExcel.Workbooks.Open("")*!* 5.显⽰Excel窗⼝oExcel.Visible=.T.*!* 6.更改Excel标题栏oExcel.Caption="VFP应⽤程序调⽤Microsoft Excel"*!* 7.给单元格赋值oExcel.cells(1,4).Value=XM(XM为数据库字段名)*!* 8.设置指定列的宽度(单位:字符个数)oExcel.ActiveSheet.Columns(1).ColumnWidth=5*!* 9.设置指定⾏的⾼度(单位:磅)oExcel.ActiveSheet.Rows(1).RowHeight=1(设定⾏⾼为1磅,1磅=0.035厘⽶)oExcel.ActiveSheet.Rows("50:100").RowHeight=1 &&设置第50⾏⾄100⾏的⾼度*!* 10.在第18⾏之前插⼊分页符oExcel.Worksheets("Sheet1").Rows(18).PageBreak=1*!* 11.在第4列之前删除分页符oExcel.ActiveSheet.Columns(4).PageBreak=0*!* 12.指定边框线宽度(Borders参数如下)ole.ActiveSheet.Range("b3:d3").BorderS(2).Weight=3*!* 13.设置四个边框线条的类型oExcel.ActiveSheet.Range("b3:d3").BorderS(2).LineStyle=1(其中Borders参数:1-左、2-右、3-顶、4-底、5-斜、6-斜/;LineStyle值:1与7-细实、2-细虚、4-点虚、9-双细实线)*!* 14.设置页眉oExcel.ActiveSheet.PageSetup.CenterHeader="报表1"*!* 15.设置页眉(字体⼤⼩)oExcel.ActiveSheet.PageSetup.CenterHeader="&50报表1" &&'&'后⾯的50可以⾃定义,表⽰字体的⼤⼩*!* 16.设置页脚oExcel.ActiveSheet.PageSetup.CenterFooter="第&P页"*!* 17.设置页脚(字体⼤⼩)oExcel.ActiveSheet.PageSetup.CenterFooter="&28第&P页" &&'&'后⾯的28可以⾃定义,表⽰字体的⼤⼩*!* 18.设置页眉到顶端边距为2厘⽶oExcel.ActiveSheet.PageSetup.HeaderMargin=2/0.035*!* 19.设置页脚到底边距为3厘⽶oExcel.ActiveSheet.PageSetup.FooterMargin=3/0.035*!* 20.设置顶边距为2厘⽶oExcel.ActiveSheet.PageSetup.TopMargin=2/0.035*!* 21.设置底边距为4厘⽶oExcel.ActiveSheet.PageSetup.BottomMargin=4/0.035*!* 22.设置左边距为2厘⽶oExcel.ActiveSheet.PageSetup.LeftMargin=2/0.035*!* 23.设置右边距为2厘⽶oExcel.ActiveSheet.PageSetup.RightMargin=2/0.035*!* 24.设置页⾯⽔平居中*!* 25.设置页⾯垂直居中oExcel.ActiveSheet.PageSetup.CenterVertically=.T.*!* 26.设置页⾯纸张⼤⼩(1-窄⾏8 5 11 39-宽⾏14 11 9:A4)oExcel.ActiveSheet.PageSetup.Papersize=1*!* 27.打印单元格⽹线oExcel.ActiveSheet.PageSetup.PrintGridlines=.T.*!* 28.拷贝整个⼯作表edRange.Copy*!* 29.拷贝指定区域oExcel.ActiveSheet.Range("A1:E2").Copy*!* 30.粘贴oExcel.WorkSheet("Sheet2").Range("A1").PasteSpecial*!* 31.在第2⾏之前插⼊⼀⾏oExcel.ActiveSheet.Rows(2).Insert*!* 32.在第2列之前插⼊⼀列oExcel.ActiveSheet.Columns(2).Insert*!* 33.设置字体oExcel.ActiveSheet.Cells(2,1)="⿊体"*!* 34.设置字体⼤⼩oExcel.ActiveSheet.Cells(1,1).Font.Size=25*!* 35.设置字体为斜体oExcel.ActiveSheet.Cells(1,1).Font.Italic=.T.*!* 36.设置整列字体为粗体oExcel.ActiveSheet.Columns(1).Font.Bold=.T.*!* 37.清除单元格公式oExcel.ActiveSheet.Cells(1,4).ClearContents*!* 38.打印预览⼯作表oExcel.ActiveSheet.PrintPreview*!* 39.打印输出⼯作表oExcel.ActiveSheet.PrintOut*!* 40. mandBars(1).Controls(1).accChild(18).Execute &&打印(菜单序号18为Excel2003的‘打印’项)&&不同版本Excel的菜单序号可以通过以下程序取得*(需要在VFP7.0以上运⾏)oXls=Getobject("","excel.sheet")XlApp=oXLS.ApplicationXlSheet=XlApp.ActiveSheetbars=mandBars.CountStr1=''For i=1 To barsStr1=Str1+Chr(13)+Alltrim(Str(i))+'、'+mandBars(i).accName+'(NAME:'+mandBars(i).Name+'INDEX:'+Alltrim(Str(mandBars(i).Index))+')'bars2=mandbars(i).accChildCountFor j=1 To bars2Tryobj=mandbars(i).Controls(j)Str1=Str1+Chr(13)+' '+Alltrim(Str(j))+'、'+mandbars(i).Controls(j).accname+'(ID:'+Alltrim(Str(mandBars(i).Controls(j).Id))+')' For k=1 To obj.accChildCountTryIf Not Empty(obj.Controls(k).accname )Str1=Str1+Chr(13)+' '+Alltrim(Str(k))+'、'+obj.Controls(k).accName+' (ID:'+ Alltrim(Str(obj.Controls(k).Id))+')'EndifCatchExitEndtryEndforCatchExitEndtryEndforWait Windows Alltrim(Str(i))+' / '+Alltrim(Str(bars))+' '+Str(i/bars*100,10,2)+'%' NowaitEndforSave To Xls.txt All Like Str1Modify Command Xls.txtReturn*!* 41.⼯作表另存为oExcel.ActiveWorkbook.SaveAs("c:/temp/22.xls")*检测当前⽬录是否有同名的EXCEL表,如果有先删除,再另存ElselcFileName = loExcel.GetSaveAsFilename("result", "Excel (*.xls), *.xls")If !Empty(lcFileName)If File(lcFileName)Delete File (lcFileName)EndifoExcel.ActiveWorkbook.SaveAs(lcFileName)EndifEndif*!* 42.放弃存盘 && 避免出现保存对话框oExcel.ActiveWorkbook.saved=.T.*!* 43.存盘oExcel.ActiveWorkbook.Save*!* 44.关闭⼯作簿oExcel.Workbooks.Closeobjexcel.activeworkbook.Close(.F.)*!* 45.退出ExceloExcel.QuitRelease oExcel &&只有释放对象变量, EXCEL进程才会完全关闭*!* 46.合并单元格oExcel.ActiveSheet.Range("A4:B5").MergeCells=.T.*!* 47.下列设置⼤家⾃⼰理解With crfole.ActiveSheet.PageSetup.LeftHeader = Chr(13)+"左页眉".CenterHeader = "中页眉".RightHeader = "右页眉".LeftFooter = "左页脚".CenterFooter = "中页脚".RightFooter = "右页脚".Orientation=1 &&1竖排,2横排EndwithWith crfole.Range("A4:C4").MergeCells = .T..WrapText =.F..Orientation = 0.AddIndent =.F..ShrinkToFit = .F.Endwith*!* 48.⽂本对齐oExcel.Range("A4:c4").HorizontalAlignment =1 &&⽔平(1-默认、2-靠左、3-居中、4-靠右、5-填充、6=两端对齐、7=跨列居中、8=分散对齐)oExcel.Range("A4:c4").VerticalAlignment =2 &&垂直(1=靠上、2=居中、3=靠下、4=两端对齐、5=分散对齐)*!* 49.拷贝整个⼯作表(含格式)oExcel.activesheet.cells.Copy &&拷贝oExcel.sheets(1).Select &&选择第⼀⼯作表oExcel.ActiveSheet.Paste &&粘贴oExcel.ActiveSheet.Cells(3,4).Value && ActiveSheet 为当前的Sheet⼯作薄名字,Cells(3,4).value 为第3⾏第4列的值*以上控制调⽤语句在中⽂VFP5.0企业版下运⾏通过,运⾏环境为Excel 97及中⽂Windows 98*!* 50.显⽰某个单元格的批注内容oExcel=Createobject("Excel.application")oExcel.Workbooks.Open("d:/TEST/testa.xls")oExcel.Visible=.T.oExcel.Range("B5").Comment.Text &&显⽰B5单元格的批注内容oExcel.Workbooks.CloseoExcel.QuitRelease oExcel*!* 51.oExcel.ActiveSheet.PageSetup.PrintTitleRows="$1:$1" &&每页都打印⾏标头(每页顶部出现的单元格的⾏)*!* 52.保护⼯作表:oExcel.ActiveSheet.Protect('密码',.T.,.T.,.T.,.T.,.T.,.T.,.T.,.T.,.T.,.T.,.T.,.T.,.T.,.T.,.T.)*!* 53.保护⼯作薄oExcel.ActiveWorkbook.Protect('密码',.T.,.T.)第⼀个.T.:保护⼯作簿结构第⼆个.T.:保护⼯作簿窗⼝*!* 54.设置允许⽤户编辑区域oExcel.ActiveSheet.Protection.AllowEditRanges.Add("区域3",oExcel.ActiveSheet.Range("A2:D5"))*!* 55.如果不想在宏运⾏时被⽆穷⽆尽的提⽰和警告消息所困扰,就将本属性设置为.F.oExcel.DisplayAlerts = .F.如果不想在宏运⾏时被⽆穷⽆尽的提⽰和警告消息所困扰,就将本属性设置为 False;这样每次出现需⽤户应答的消息时,Microsoft Excel 将选择默认应答。
excel如何导入到VFP中
excel如何导入到VFP中Visual FoxPro 6.0中文版命令手册excel如何导入到VFP中比如EXCEL的文件名是 t001 怎么做才能导入到VFP中啊!import from dd.xls type xlsuse ddcopy to d:\newddIMPORT不能指定新生成表的存放路径,一般会自动保存到默认目录下。
用以下语句可以实现你的要求:IMPORT FROM t001.xls type xl8 &&导入t001.xls并(在默认目录下)生成t001.dbf文件copy to d:\t001 &&复制文件到D盘Use &&关闭t001表DELETE FILE t001.dbf &&删除(在默认目录下的)t001.dbf文件使用import命令,如:IMPORT FROM 表1.xls TYPE xl8将表1.xls导入为表1.dbf---------------------------------------------------------------用VFP导入点击“文件”->导入->类型选择:“Microsoft Excel 5.0 和 97 (XLS)”来源于选择:你要导入的Excel文件工作表:默认为Sheet1,如是你要把Excel文件中Sheet2中内容导过来,就选择“Sheet2”->最后点击导入即可。
*************************************************************** ****如果导入时出现提示:致命错误:异常代码=C0000005*可以把Microsoft Excel 在保存时存为Microsoft Excel 5.0/95 格式或4.0格式。
这样就能导入了。
*************************************************************** ***以上操作相当于如下命令操作:IMPORT FROM 你的表.xls TYPE XL8 SHEET "Sheet2"有时需要把Excel表另存为“Microsoft Excel 5.0 和 97 (XLS)”格式后,再用以上命令进行导入。
VFP控制Excel进行处理数据
*!*VFP和Excel都可以用来进行处理数据库表格,如果巧妙地将二者的优点结合起来,将会大大方便我们的工作。
比如我们可以利用VFP进行处理数据,而利用Excel的预览打印功能进行报表打印。
这就需要我们在VFP中直接来控制Excel。
下面就在开发VFP应用项目时对Excel的控制作一下介绍:oExcel=Createobject("Excel.application") &&创建Excel对象**对象属性oExcel.Visible=.T. &&显示Excel窗口oExcel.Caption="VFP应用程序调用Microsoft Excel" &&更改Excel标题栏oExcel.DisplayAlerts = .F. &&关闭提示和警告消息,运行结束后,应将本属性设置回 True 值oExcel.cells(1,4).Value=XM(XM为数据库字段名) &&给单元格赋值**Workbooks属性oExcel.Workbooks.Add &&添加新工作簿oExcel.Workbooks.Open("c:\temp\ll.xls") &&打开指定工作簿oExcel.Workbooks.Close &&关闭工作簿oExcel.Quit &&退出ExcelRelease oExcel &&只有释放对象变量, EXCEL进程才会完全关闭**Worksheets属性oExcel.Worksheets("sheet3").Activate &&设置第3个工作表为激活工作表oExcel.Worksheets("Sheet1").Rows(18).PageBreak=1 &&在第18行之前插入分页符oExcel.WorkSheet("Sheet2").Range("A1").PasteSpecial &&粘贴**ActiveWorkbook属性oExcel.ActiveWorkbook.SaveAs("c:\temp\22.xls") &&工作表另存为oExcel.ActiveWorkbook.saved=.T. &&放弃存盘,避免出现保存对话框oExcel.ActiveWorkbook.Save &&存盘oExcel.ActiveWorkbook.Close(.F.) &&关闭工作簿oExcel.ActiveWorkbook.Protect('密码',.T.,.T.) &&保护工作薄(第一个.T.:保护工作簿结构,第二个.T.:保护工作簿窗口)**ActiveSheet属性edRange.Copy &&拷贝整个工作表oExcel.ActiveSheet.PrintPreview &&打印预览工作表oExcel.ActiveSheet.PrintOut &&打印输出工作表oExcel.ActiveSheet.Protect('密码',.T.,.T.,.T.,.T.,.T.,.T.,.T.,.T.,.T.,.T.,.T.,.T.,.T.,.T.,.T.) &&保护工作表oExcel.ActiveSheet.Protection.AllowEditRanges.Add("区域3",oExcel.ActiveSheet.Range("A2:D5")) &&设置允许用户编辑区域**表格列属性oExcel.ActiveSheet.Columns(2).Insert &&在第2列之前插入一列oExcel.ActiveSheet.Columns(1).ColumnWidth=5 &&设置指定列的宽度(单位:字符个数)oExcel.ActiveSheet.Columns(4).PageBreak=0 &&在第4列之前删除分页符oExcel.ActiveSheet.Columns(1).Font.Bold=.T. &&设置整列字体为粗体**表格行属性oExcel.ActiveSheet.Rows(2).Insert &&在第2行之前插入一行oExcel.ActiveSheet.Rows(1).RowHeight=1 &&设置指定行的高度(单位:磅)(设定行高为 1磅, 1磅=0.035厘米)oExcel.ActiveSheet.Rows("50:100").RowHeight=1 &&设置第50行至100行的高度**表格范围属性oExcel.Range("A4:c4").HorizontalAlignment =1 &&水平(1-默认、2-靠左、3-居中、4-靠右、5-填充、6=两端对齐、7=跨列居中、8=分散对齐)oExcel.Range("A4:c4").VerticalAlignment =2 &&垂直(1=靠上、2=居中、3=靠下、4=两端对齐、5=分散对齐)oExcel.Range("A4:C4").WrapText =.F. &&文本自动换行oExcel.ActiveSheet.Range("A4:B5").Merge=.T. &&合并单元格oExcel.ActiveSheet.Range("A1:E2").Copy &&拷贝指定区域oExcel.ActiveSheet.Range("b3:d3").BorderS(2).Weight=3 &&指定边框线宽度(Borders参数如下)oExcel.ActiveSheet.Range("b3:d3").BorderS(2).LineStyle=1 &&设置四个边框线条的类型&&(其中Borders参数:1-左、2-右、3-顶、4-底、5-斜、6-斜/;LineStyle值:1与7-细实、2-细虚、4-点虚、9-双细实线)**页面设置WITH oExcel.ActiveSheet.PageSetup.CenterHeader="报表1" &&设置页眉.CenterHeader="&50报表1" &&设置页眉(字体大小),'&'后面的50可以自定义,表示字体的大小.CenterFooter="第&P页" &&设置页脚(LeftFoot:居左,CenterFooter:居中,RightFooter:居右).CenterFooter="&28第&P页共&N页" &&设置页脚(字体大小),'&'后面的28可以自定义,表示字体的大小.HeaderMargin=2/0.035 &&设置页眉到顶端边距为2厘米.FooterMargin=3/0.035 &&设置页脚到底边距为3厘米.TopMargin=2/0.035 &&设置顶边距为2厘米.BottomMargin=4/0.035 &&设置底边距为4厘米.LeftMargin=2/0.035 &&设置左边距为2厘米.RightMargin=2/0.035 &&设置右边距为2厘米.CenterHorizontally=.T. &&设置页面水平居中.CenterVertically=.T. &&设置页面垂直居中.Papersize=1 &&设置页面纸张大小(1-窄行8511 39-宽行1411 9:A4).Orientation=1 &&设置纸张方向(1-竖向,2-横向).PrintTitleRows="$1:$2" &&设置顶端标题行,(每页都打印行标头(每页顶部出现的单元格的行)) .PrintGridlines=.T. &&打印单元格网线.Zoom=75 &&设置缩放比例为75%ENDWITH**单元格设置WITH oExcel.ActiveSheet.Cells(1,1) &&第一行第一列单元格="黑体" &&字体名字.Font.Size=25 &&大小.Font.Italic=.T. &&为斜体(Bold-粗体).Value="数值" &&给单元格赋值.ClearContents &&清除单元格公式ENDWITH*以下为一些过程*检测当前目录是否有同名的EXCEL表,如果有先删除,再另存If !File(Sys(5) + Curdir() + "result.xls")oExcel.ActiveWorkbook.SaveAs(Sys(5) + Curdir() + "result.xls")ElselcFileName = loExcel.GetSaveAsFilename("result", "Excel (*.xls), *.xls")If !Empty(lcFileName)If File(lcFileName)Delete File (lcFileName)EndifoExcel.ActiveWorkbook.SaveAs(lcFileName)EndifEndif*!*拷贝整个工作表(含格式)oExcel.activesheet.cells.Copy &&拷贝oExcel.sheets(1).Select &&选择第一工作表oExcel.ActiveSheet.Paste &&粘贴oExcel.ActiveSheet.Cells(3,4).Value && ActiveSheet 为当前的Sheet工作薄名字,Cells(3,4).value 为第3行第4列的值*!* 显示某个单元格的批注内容oExcel=Createobject("Excel.application")oExcel.Workbooks.Open("d:\TEST\testa.xls")oExcel.Visible=.T.oExcel.Range("B5").Comment.Text &&显示B5单元格的批注内容oExcel.Workbooks.CloseoExcel.QuitRelease oExcel*!* 将当前工作表中的已用区域(只读)存入数组。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
vfp直接读取EXCEL文件示例
vfp直接读取EXCEL文件的示例(转)。
M_File=GETFILE('xls','订单文件')
IF M_File=""
=MESSAGEBOX("请选择待导入的收订单文件!",0+48,"提示")
RETURN
ELSE
IF JUSTEXT(M_FILE)#"XLS" &&获得文件扩展名
=MESSAGEBOX("您选择的不是EXCEL文档!",0+48,"提示")
RETURN
ENDIF
ENDIF
USE 图书订单表
ZAP
myexcel=createobject('excel.application') &&创建一个对象
myexcel.visible=.f.&&不可见
bookexcel=myexcel.workbooks.open(M_File) &&打开指定文件
o_SheetName= &&获取当前激活工作表的名称UsedRange =bookexcel.worksheets(o_SheetName).UsedRange &&返回工作表中可使用的区域,UsedRange表的属性
o_rows=UsedRange.rows.count &&汇总行
o_cols=UsedRange.columns.count &&汇总列
IF o_rows<=1
=MESSAGEBOX("待导入数据行数太少,请检查!",0+16,"提示")
ELSE
FOR i=2 TO o_rows
m1=myexcel.cells(i,1).value &&书号
m2=myexcel.cells(i,2).value &&书名
m3=myexcel.cells(i,3).value &&出版社
m4=myexcel.cells(i,4).value &&作者
m5=myexcel.cells(i,5).value &&定价
m6=myexcel.cells(i,6).value &&数量
APPEND BLANK
REPLACE 书号WITH m1,书名WITH m2,出版社WITH m3,作者WITH m4,定价WITH m5,数量WITH m6
ENDFOR
ENDIF
myexcel.workbooks.close &&关闭工作区
myexcel.quit &&关闭excel
brow。