p=SYS(5)+'\'
n=drivetype(p) &&n=3为本地硬盘,4为网络盘,1为不存在,2为软盘
报表FRX文件的分析 报表文件.frx是一个表,.fpt是一个备注库,其库结构同一般自由表,可以use打开,字段总共有74项,分别介绍如下: 字段名称 类型 长度 小数 说明 1 platform c 8 操作平台(_dos或_windows) 2 uniqueid c 10 唯一标识(当name合expr都为空时以_rhe开头, 否则以_rnr开头) 3 timestamp n 10 时间标签(先后次序) 4 objtype n 2 目标类型(1.环境; 2.数据库; 5.文字; 8.变量;9.timestamp为空; 23.timestamp为空) 5 objcode n 3 目标代码(1.;4.;7.;53) 6 name m 10 名称(数据库名称) 7 expr m 10 表达式 8 vpos n 9 3 行座标 9 hpos n 9 3 列座标 10 height n 9 3 高度 11 width n 9 3 宽度 12 style m 10 风格(透明,不透明) 13 picture m 10 格式或ole文件名称 14 order m 10 索引排序 15 unique l 1 唯一数据库(.f.,.t.,空) 16 comment m 10 注释 17 environ l 1 是否报表运行环境(.t.时) 18 boxchar c 1 画框字符 19 fillchar c 1 表达式类型(c,n,d等,文字型的为空) 20 tag m 10 (当该记录为记录环境的记录时,该字段储存打印信息等;记录数据库时,储存数据库名称) 21 tag2 m 10 当该记录为记录环境的记录时,该字段储存打印控制等 22 penred n 5 前景红 23 pengreen n 5 前景绿 24 penblue n 5 前景蓝 25 fillred n 5 填充红 26 fillgreen n 5 填充绿 27 fillblue n 5 填充蓝 28 pensize n 5 划线宽度 29 penpat n 5 指定填充图案(0.空;1.实体;2.水平;3.垂线;4.左 斜;5右斜;6.交叉;7.斜交叉) 30 fillpat n 5 划线类型(0.无;1.点;2.虚线;3. 虚线-点;4. 虚线-点-点) 31 fontface m 10 字体类型 32 fontstyle n 3 字体风格 33 fontsize n 3 字体大小 34 mode n 3 模式 35 ruler n 1 标尺(2-默认值,3-象素) 36 rulerlines n 1 标线宽度 37 grid l 1 是否显示网格线 38 gridv n 2 垂直网格线刻度 39 gridh n 2 水平网格线刻度 40 float l 1 浮动 41 stretch l 1 溢出时伸展 42 stretchtop l 1 相对于顶端伸展 43 top l 1 相对于顶端固定 44 bottom l 1 相对于底端固定 45 suptype n 1 控制类型 46 suprest n 1 控制设置 47 norepeat l 1 每页都打印页标题 48 resetrpt n 2 重置报表 49 pagebreak l 1 每组从新的一页开始 50 colbreak l 1 从新的一列开始 51 resetpage l 1 每组页号重新从1开始 52 general n 3 通用 53 spacing n 3 空格 54 double l 1 是否加倍 55 swapheader l 1 头互换 56 swapfooter l 1 脚注互换 57 ejectbefor l 1 打印前走纸 58 ejectafter l 1 打印后走纸 59 plain l 1 指定只在报表开始位置出现页标题 60 summary l 1 是否仅打印总计和分类总计信息 61 addalias l 1 是否增加别名 62 offset n 3 偏移(0-左;1-右;2-居中) 63 topmargin n 3 上边界高度 64 botmargin n 3 下边界高度 65 totaltype n 2 计算类型 66 resettotal n 2 重置(1-表尾,2-页尾) 67 resoid n 3 源标识 68 curpos l 1 是否显示当前位置 69 supalways l 1 是否打印重复值 70 supovflow l 1 当细节区数据溢出时到新页或新列打印 71 suprpcol n 1 当此列改变时打印 72 supgroup n 2 当此组改变时打印 73 supvalchng l 1 若空行则删除 74 supexpr m 10 是否打印控制条件 ============================== objtype objcode offset 含义 5 0 文字 8 0 表达式 6 0 1 直线(水平线) 6 0 0 直线(垂直线) 7 4 矩形框(0~99椭圆)
报表布局的控制的特征值: objtype objcode 含义 9 0 页头高度 9 1 页细节高度 9 3 组标头高度 9 4 组细节高度 9 5 组脚注高度 9 7 页脚注高度 其他常用到的字段有: ①水平坐标(hpos); ②宽度(width); ③表达式类型(fillchar); ④字体(fontface); ⑤对齐方式(offset)。
VFP全面控制EXCEL
VFP和Excel都可以用来进行处理数据库表格,如果巧妙地将二者的优点结合起来,将会大大方便我们的工作。比如我们可以利用VFP进 行处理数据,而利用Excel的预览打印功能进行报表打印。这就需要我们在VFP中直接来控制Excel。下面就在开发VFP应用项目时对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.035
18.设置顶边距为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=1
25.打印单元格网线
eole.ActiveSheet.PageSetup.PrintGridlines=.t.
26.拷贝整个工作表
eole.ActiveSheet.UsedRange.Copy
27.拷贝指定区域
eole.ActiveSheet.Range(″A1:E2″).Copy
28.粘贴
eole.WorkSheet(″Sheet2″).Range(″A1″).PasteSpecial
29.在第2行之前插入一行
eole.ActiveSheet.Rows(2).Insert
30.在第2列之前插入一列
eole.ActiveSheet.Columns(2).Insert
31.设置字体
eole.ActiveSheet.Cells(2,1).Font.Name=″黑体″
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.ActiveWorkbook.SaveAs(″c:\temp\22.xls″)
39.放弃存盘
eole.ActiveWorkbook.saved=.t.
40.关闭工作簿
eole.Workbooks.close
41.退出Excel
eole.quit
巧用变量替代 以下两种方法的效果是相同的: Thisform.pageframe.page1.container.object.caption="This" Thisform.pageframe.page1.container.object.left=10 Thisform.pageframe.page1.container.object.top=50
temp = Thisform.pageframe.page1.container.object temp.caption = "This " temp.left = 10 temp.top = 50 另一种方法是使用WITH命令, WITH Thisform.pageframe.page1.container.object .caption = "This " .left = 10 .top = 50 ENDWITH
[此贴子已经被作者于2005-7-26 12:30:02编辑过]