EXCEL打印参数 EXCEL打印参数 2008-12-27 17:34 ◆访问EXCEL:ExcelSheet = GetObject('','Excel.Sheet') 返回结果为类,则成功。例: ExcelSheet = GetObject('','Excel.Sheet') If Type("ExcelSheet")#'O' THEN =MessageBox( "访问Excel失败!请检查你的系统是否正确安装 Excel 软件!",48,"Excel不正常") RETURN ENDIF ◆创建EXCEL实例:oExcel=CreateObject("Excel.Application") 该实例创建后,任何对EXCEL的操作都针对该实例进行,关闭EXCEL后应释放该实例变量:RELEASE oExcel ◆打开已存在的EXCEL文件:oExcel.WorkBooks.Open("&lcFileName") &&lcFileName为Excel文件名 打开带有读写密码的文件:oExcel.WorkBooks.Open("&lcFileName",,.F.,,"&R_Pwd","&W_Pwd") &&lcFileName-文件名,R_Pwd-读密码,W_Pwd-写密码,第二个参数
示读写方式:.T.只读,.F.读写 ◆设置新增工作薄的工作表数:oExcel.SheetsInNewWorkbook=1 &&新建工作表数量定为1个 ◆新增EXCEL工作薄:oExcel.WorkBooks.Add ◆当前工作薄工作表总数:oExcel.WorkSheets.Count &&如:lnSheetCnt=oExcel.WorkSheets.count ◆新增EXCEL工作表:oExcel.Sheets.Add &&不带参数为增加至当前工作表之前 在指定工作表后新建工作表:oExcel.Sheets.Add(,oExcel.Sheets(lnSheet),1,-4167) &&lnSheet为指定表号 在最后工作表后新建工作表:oExcel.Sheets.Add(,lnSheetsCnt,1,-4167) &&lnSheetCnt为工作表总数 ◆激活工作表:oExcel.WorkSheets("Sheet1").Activate &&激活工作表1 删除工作表:oExcel.WorkSheets("Sheet2").Delete &&删除工作表2 命名工作表:oExcel.WorkSheets("Sheet3").Name="新表" &&重命名工作表3 ◆使EXCEL可视:oExcel.Visible=.T. ◆Excel的窗口控制:oExcel.WindowState = -4140 &&最小化=-4140,最大化=-4137,还原=-4143 ◆后台操作报警关闭:oExcel.DisplayAlerts=.F. &&关闭(.F.) 打开(.T.) ◆设置工作薄的标题:oExcel.Caption="Vfp控制Excel操作" ◆当前工作薄换名存盘:oExcel.ActiveWorkBook.SaveAs("&lcFileName") 换名存为文本文件:oExcel.ActiveWorkBook.Saveas("&lcFileName",-4158) 加密码换名存盘:oExcel.ActiveWorkbook.SaveAs(&lcFileName,-4143,[3721],[3721],.F., .F.) ◆工作薄存盘:oExcel.WorkBooks.Save ◆关闭工作薄:oExcel.WorkBooks.Close ◆退出EXCEL:oExcel.Quit &&关闭EXCEL后通常应释放实例变量:Release oExcel ◆打印当前工作簿:oExcel.ActiveWorkBook.PrintOut(1,oExcel.WorkSheets.count,1,.T.) *默认直接打印整个工作簿:oExcel.ActiveWorkBook.PrintOut() *参数1-数值:当前工作簿中进行打印的起始工作表号(默认1) *参数2-数值:当前工作簿中进行打印的结束工作表号(默认最末) *参数3-数值:打印份数(默认1) *参数4-是预览打印还是直接打印:.T.-预览打印,.F.-直接打印(默认.F.) ◆打印当前工作表:oExcel.ActiveSheet.PrintOut() &&共八个参数 *参数1-数值:起始页号,省略则默认为开始位置 *参数2-数值:终止页号,省略则默认为最后一页 *参数3-数值:打印份数,省略则默认为1份 *参数4-逻辑值:是否预览,省略则默认为直接打印(.F.) *参数5-字符值:设置活动打印机名称,省略则为默认打印机 *参数6-逻辑值:是否输出到文件,省略则默认为否(.F.),若选.T.且参数8为空,则Excel提示输入要输出的文件名 *参数7-逻辑值:输出类型,省略则默认为(.T.)逐份打印,否则逐页打印 *参数8-字符值:当参数6为.T.时,设置要打印到的文件名 ◆用VFP控制EXECL的选择打印机的窗口 oExcel.application.dialogs(8).show ◆预览当前工作表:oExcel.ActiveSheet.PrintPreview ◆当前工作表页面设置:oExcel.ActiveSheet.PageSetup &&如: With oExcel.ActiveSheet.PageSetup .CenterFooter="第"+"&P"+"页 共"+"&N"+"页" &&页脚中间 .LeftFooter="制表人:"+AllTrim(lcUserName) &&页脚左边 .rightfooter="制表日期:"+Dtoc(Date()) &&页脚右边 .TopMargin=2.5/0.035 &&顶边距 .BottomMargin=2.5/0.035 &&底边距 .LeftMargin=1.4/0.035 &&左边距 .RightMargin=0.5/0.035 &&右边距 .FooterMargin=3.5/0.035 &&脚高距 .PrintTitleRows = "$1:$3" &&固定打印的顶端标题行(第1-3行) .Orientation = 1 &&打印方向: 1为纵向,2为横向 .PaperSize=9 &&纸张类型: A4(注意:不同打印机与版本可能有不同) .PrintQuality = 180 &&打印精度 EndWith ◆从包含大量内含公式的EXCEL文件导至DBF中时,直接转换会出现致命错误,这时可选择将EXCEL另存为文本文件再导至DBF中可保数据不丢失: oExcel.WorkBooks.Open('D:\123.xls') oExcel.ActiveWorkBook.Saveas('D:\123.txt',-4158 ) &&注意参数-4158不能错 ◆若判断EXCEL或某个XLS文件是否已经打开(避免不可预知的错误发生): LOCAL lOldSetOpt,mChanNum lOldSetOpt = DDESetOption("SAFETY") = DDESetOption("SAFETY",.F.) mChanNum = DDEInitiate('Excel','SYSTEM') &&EXCEL是否已经打开 **mChanNum = DDEInitiate('Excel','&lcFileName') &&lcFileName某XLS文件名,如:D:\123.XLS IF mChanNum <> -1 = messagebox('程序 EXCEL 已经打开,请先将其关闭!',64,'系统提示!') ** = messagebox('文件 '+lcFileName+' 已经打开,请先将其关闭!',64,'系统提示!') = DDETerminate(mChanNum) = DDESetOption("SAFETY",lOldSetOpt) RETURN ENDIF