在VFP中直接来控制Excel复习进程Word下载.docx
《在VFP中直接来控制Excel复习进程Word下载.docx》由会员分享,可在线阅读,更多相关《在VFP中直接来控制Excel复习进程Word下载.docx(21页珍藏版)》请在冰点文库上搜索。
在第18行之前插入分页符
oExcel.WorkSheet("
Sheet2"
).Range("
A1"
).PasteSpecial&
粘贴
**ActiveWorkbook属性
oExcel.ActiveWorkbook.SaveAs("
\temp\22.xls"
工作表另存为
oExcel.ActiveWorkbook.saved=.T.&
放弃存盘,避免出现保存对话框
oExcel.ActiveWorkbook.Save&
存盘
oExcel.ActiveWorkbook.Close(.F.)&
oExcel.ActiveWorkbook.Protect('
密码'
.T.,.T.)&
保护工作薄(第一个.T.:
保护工作簿结构,第二个.T.:
保护工作簿窗口)
**ActiveSheet属性
oExcel.ActiveSheet.UsedRange.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=分散对齐)
).VerticalAlignment=2&
垂直(1=靠上、2=居中、3=靠下、4=两端对齐、5=分散对齐)
C4"
).WrapText=.F.&
文本自动换行
oExcel.ActiveSheet.Range("
B5"
).Merge=.T.&
合并单元格
A1:
E2"
).Copy&
拷贝指定区域
b3:
d3"
).BorderS
(2).Weight=3&
指定边框线宽度(Borders参数如下)
).BorderS
(2).LineStyle=1&
设置四个边框线条的类型
(其中Borders参数:
1-左、2-右、3-顶、4-底、5-斜、6-斜/;
LineStyle值:
1与7-细实、2-细虚、4-点虚、9-双细实线)
**页面设置
WITHoExcel.ActiveSheet.PageSetup
.CenterHeader="
报表1"
设置页眉
50报表1"
设置页眉(字体大小),'
'
后面的50可以自定义,表示字体的大小
.CenterFooter="
第&
P页"
设置页脚(LeftFoot:
居左,CenterFooter:
居中,RightFooter:
居右)
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-窄行851139-宽行14119:
A4)
.Orientation=1&
设置纸张方向(1-竖向,2-横向)
.PrintTitleRows="
$1:
$2"
设置顶端标题行,(每页都打印行标头(每页顶部出现的单元格的行))
.PrintGridlines=.T.&
打印单元格网线
.Zoom=75&
设置缩放比例为75%
ENDWITH
**单元格设置
WITHoExcel.ActiveSheet.Cells(1,1)&
第一行第一列单元格
.Font.Name="
黑体"
字体名字
.Font.Size=25&
大小
.Font.Italic=.T.&
为斜体(Bold-粗体)
.Value="
数值"
.ClearContents&
清除单元格公式
*以下为一些过程
*检测当前目录是否有同名的EXCEL表,如果有先删除,再另存
If!
File(Sys(5)+Curdir()+"
result.xls"
)
oExcel.ActiveWorkbook.SaveAs(Sys(5)+Curdir()+"
Else
lcFileName=loExcel.GetSaveAsFilename("
result"
"
Excel(*.xls),*.xls"
If!
Empty(lcFileName)
IfFile(lcFileName)
DeleteFile(lcFileName)
Endif
oExcel.ActiveWorkbook.SaveAs(lcFileName)
Endif
*拷贝整个工作表(含格式)
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列的值
*显示某个单元格的批注内容
d:
\TEST\testa.xls"
oExcel.Visible=.T.
?
).Comment.Text&
显示B5单元格的批注内容
oExcel.Workbooks.Close
oExcel.Quit
ReleaseoExcel
*将当前工作表中的已用区域(只读)存入数组。
strPath='
D:
\TEST\123.xls'
LocaloExcel
Excel.Application"
oExcel.WorkBooks.Open(strPath)
arrTableInfo=oExcel.ActiveSheet.UsedRange.Value&
将当前工作表中的已用区域(只读)存入数组。
InsertInto表名FromarrTableInfo
*!
*设置excel批注的字体(excel2000实现了,如下:
ole.Range("
a3"
).Comment.Shape.Select&
此命令要求批注的Visible=.t.
ole.Selection.Font.Size=9
ole.Selection.Font.Name="
ole.Selection.Font.bold=.F.
注:
该组命令要求先选中批注框,否则写成ole.Range("
).Comment.Shape.Font.Size=9则出错,不知为何!
*如何取得当前EXCEL表中工作表的数目及各工作表的名称?
Clear
LocallnSheetCount
EXCEL.APPLICATION"
oExcel.WORKBOOKS.Open("
\111\321.xls"
WithoExcel
lnSheetCount=.WorkBooks
(1).Sheets.Count&
统计工作表数量
Endwith
当前EXCEL表中工作表的数目为:
+Alltrim(Str(lnSheetCount))
ForEachoMyVarInoExcel.sheets
?
当前EXCEL表中工作表的名称分别为'
+oMyVar.Name&
显示Excel表中所有工作表
NextoMyVar
oExcel.WORKBOOKS.Close&
*如何用编程的方法打开有密码的Excel文件?
*Excel文件加了密码,如何在VFP中用编程的方式把密码输入,使Excel文件打开
oExcel=Createobject('
Excel.application'
\22.xls"
*这样还有一个密码的对话框出来,需要输入密码才能打开文件。
*如何用编程的方法直接打开有密码的Excel文件?
.F.,.F.,,"
123"
"
456"
"
表示打开权限的密码,
表示修改权限的密码.
*如何将一个已知路径的图片插入到excel中.
oExcel.ActiveSheet.PictureS.Insert("
图片文件名"
*能不能指定在某一位置或区域放置图片并控制图片显示大小呢?
oExcel.SHEETS
(1).Select
位置"
).Select
)).Select
oExcel.Selection.ShapeRange.LockAspectRatio=.T.
oExcel.Selection.ShapeRange.Height=57
*类型为字符型的字段输出到excel中,前面的零被自动去掉,例如“009877”变为“9877”,怎么解决?
*方法1.在字符串前面加半角单引号“'
”,
*例如:
oExcel.Cells(1,1).Value="
0123"
*或用变量
cString="
+"
其中0123可以取自表中一个字段
oExcel.Cells(1,1).Value=cString&
o.Range("
).value=cString
*方法2.
oExcel.CELLS(1,1).Select&
或eole.Range("
E1"
oExcel.Selection.NumberFormatLocal="
@"
把被选定的单元格设为文本格式
给所选单元格覆值
*获取Excel记录数
loXls=Createobject("
excel.application"
bookExcel=loXls.Application.Workbooks.Open("
f:
\pz.xls"
nrows=bookExcel.Worksheets('
pz'
UsedRange=nrows.UsedRange
r=UsedRange.Rows.Count&
有数据的总行数
c=UsedRange.Columns.Count&
有数据的总列数
loXls.Workbooks.Close
loXls.Quit
*在EXCEL中如何在打开文件的同时自动执行一个宏命令。
只要将宏的命名为AUTO_OPEN即可。
如果要在文件关闭时运行,则命名为auto_close。
*在VFP中可以执行EXCEL的选择性粘贴吗?
.Range("
A2"
).PasteSpecial("
xlPasteValues"
会出错
).PasteSpecial(3)&
也会出错
只好这样了
*如何才能只粘贴值呢?
xlPasteValues=-4163
oExcel.Selection.Copy
B1"
)._PasteSpecial(xlPasteValues)
*注意:
在Excel中,"
是一个常量,它的值是一个数值型的:
-4163
).Copy
B3"
).PasteSpecial(8)&
粘贴行、列宽
).PasteSpecial(-4122)&
粘贴格式
*本程序通过将原dbf表拷成excel格式,然后导入并设置报表格式
Paratablename
Localhb1Asexcel.Application
Wait"
正在导出数据,请稍侯……"
WindowAt20,30Timeout1
bhaveerror=.F.&
定义一个变量判断是否发生错误
Try
hb1=Createobject("
Catch
Messagebox("
请检查你是否已安装microsoftexcel应用程序!
0,"
提示"
bhaveerror=.T.
Endtry
Ifbhaveerror=.T.
Return
IfRight(curr_path,1)<
>
\'
curr_path=curr_path+"
\"
ctablename=tablename+"
_excel"
filepath=curr_path+"
temp\sheet1.xls"
*filepath="
File(filepath)
数据源的excel文件未生成,报表生成被终止!
HB1.workbooks.Open(filepath)
HB1.SHEETS("
sheet1"
hb1.sheets
(1).Rows
(1).entirerow.Insert
Sele(ctablename)
nfieldcount=Fcount()
nreccount=Reccount()
hbdygs="
+Chr(nfieldcount+64)+"
2"
HB1.Range(hbdygs).Select
****合并两行作为报表标题*************
HB1.Selection.HorizontalAlignment=3&
水平方向2左对齐,3居中,4右对齐
HB1.Selection.VerticalAlignment=2&
垂直方向1靠上,2居中,3靠下
HB1.Selection.WrapText=.F.&
HB1.Selection.Orientation=0&
HB1.Selection.AddIndent=.F.&
HB1.Selection.ShrinkToFit=.F.&
HB1.Selection.MergeCells=.T.&
HB1.Range(hbdygs).FormulaR1C1="
请输入报表标题"
HB1.Range(hbdygs).Characters.Font.Name="
隶书"
HB1.Range(hbdygs).Characters.Font.FontStyle="
常规"
HB1.Range(hbdygs).Characters.Font.ColorIndex=1&
字符颜色
***根据数据源表结构的宽度设置列的宽度********
CopyStruExteTotemp\term_stru
Sele0
Usetemp\term_stru
Select(ctablename)
Fori=1Tonfieldcount
cvalue=Allt(Field(i))
Selectterm_stru
LocaForLower(Allt(field_name))==cvalue
IfFound()
columnname=Chr(i+64)+"
:
+Chr(i+64)
hb1.Columns(columnname).ColumnWidth=field_len
Sele(ctablename)
Endfor
Seleterm_stru
Use
activecellname=Chr(nfieldcount+64)+Allt(Str(nreccount+3))
*************设置数据区域的字体格式***************
HB1.Range("
A3:
+activecellname).Characters.Font.Name="
宋体"
+activecellname).Characters.Font.Size=9
+activecellname).Select
hb1.Selection.BorderS
(1).LineStyle=.T.
hb1.Selection.BorderS
(2).linestyle=.T.
hb1.Selection.BorderS(3).linestyle=.T.
hb1.Selection.BorderS(4).linestyle=.T.
hb1.ActiveWorkbook.SaveAs("
\aa.xls"
hb1.Application.Visible=.T.
*HB1.ACTIVEWORKBOOK.SAVE&
自动保存数据
*HB1.ACTIVEWORKBOOK.CLOSE&
关闭当前工作簿
*HB1.QUIT
*复制Sheet工作表
EFILENAME='
\你的Excel表名.XLS'
EFILENAME"
oExcel.SHEETS
(1).Copy(Null,oExcel.SHEETS
(1))&
把第1个工作表复制到第1个工作表之后
oExcel.SH