WIN API与其他VFP应用程序(请参考使用)1
** -- 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厘米 eole.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.设置页面纸张大小 eole.ActiveSheet.PageSetup.PaperSize=1 (1-窄行8.511 ,39-宽行1411)
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
表头 eole.ActiveSheet.PageSetup.CenterHeader="北京市**公司4月份财务报表"
XLapp.ActiveSheet.rows(1).Font.Name="宋体" && 设置字体
xlapp.ActiveSheet.rows(1).Font.Size=15 设置字体大小
oexcel.activesheet.range("A4:B5").mergecells=.t. && 合并单元格
** -- 以上控制调用语句在中文VFP6.0企业版下运行通过,运行环境为Excel 97及中文Windows 98。
*--锁定数据库
do while !rlock() && 锁定数据库
wait window '正在锁定数据库请稍候!' Timeout 0.05
enddo
repl kcl with kcl-sp.sl && 更新数据
unlock in mjsm_temp && 解锁数据库
* -- 取得卷(磁盘)信息
DECLARE INTEGER GetVolumeInformation IN WIN32API STRING @cRooDirectory ,STRING @cVolume, INTEGER nVolumeSize, ;
INTEGER @nSerialNo, INTEGER @nMaxFileNameLen, INTEGER @nFileSystemFlags, STRING @cFileSystemName, ;
INTEGER nFileSystemNameSize
* --- 设置卷标
DECLARE INTEGER SetVolumeLabel IN WIN32API STRING cRootPathName, STRING cVolumeName
cRooDirectory = "C:\"
cVolume = SPACE(255)
nVolumeSize = 255
nSerialNo = 0
nMaxFileNameLen = 0
nFileSystemFlags = 0
cFileSystemName = SPACE(255)
nFileSystemNameSize = 255
nOk = GetVolumeInformation(@cRooDirectory , @cVolume, nVolumeSize,@nSerialNo, @nMaxFileNameLen, @nFileSystemFlags, ;
@cFileSystemName,nFileSystemNameSize)
*IF nOk > 0
? "cVolume =", cVolume
? "nSerialNo =", LEFT(SUBSTR(TRANSFORM(nSerialNo, "@0X"), 3), 4) + "-" +RIGHT(SUBSTR(TRANSFORM(nSerialNo, "@0X"), 3), 4)
? "nMaxFileNameLen = ", nMaxFileNameLen
? "nFileSystemFlags = ", nFileSystemFlags
? "cFileSystemName =",cFileSystemName
*ELSE
? "Read Error=", nOk
*ENDIF
*? SetVolumeLabel("C:\", "WINDOWS_98")
*? SetVolumeLabel("A:\", "WINDOWS_98")
or
(1).dir>xxx.txt
(2)
handle = fopen("xxx.txt",2)
s = fget(handle,10)