回 帖 发 新 帖 刷新版面

主题:转贴:关于的VFP与EXCEL的贴子(请大家能够尽量补充)

声明:此为转贴。(不记得在哪个论坛翻出来的了) 请大家将相关知识补充一下,力争尽量全面。谢谢大家。


eole=CREATEOBJECT("Excel.application") &&创建Excel对象
IF NOT TYPE("eole) = "O"
=MESSAGEBOX("Excel对象创建失败,程序将中止!", 16, "Error")
RETURN
ENDIF
eole.sheetsinnewworkbook=4  &&设置新增工作簿中工作表数
eole.Workbooks.add &&添加新工作簿 **eole.workbooks.add('&mycurdir1.ptjh_hz.xlt')    &&添加模板
eole.Worksheets('sheet3').Activate &&设置第3个工作表为激活工作表
*eole.Workbooks.Open('c:\temp\ll.xls')&&打开指定工作簿
oEle.Workbooks.Open("d:\22.xls",.f.,.f., ,"123","456") &&打开有密码的Excel文件,"123"表示打开权限的密码,"456"表示修改权限的密码.第二个参数表示读写方式:.T.只读,.F.读写
**当前工作薄工作表总数:oExcel.WorkSheets.Count   &&如:lnSheetCnt=oExcel.WorkSheets.count
**  在指定工作表后新建工作表:oExcel.Sheets.Add(,oExcel.Sheets(lnSheet),1,-4167)   &&lnSheet为指定表号
**  在最后工作表后新建工作表:oExcel.Sheets.Add(,lnSheetsCnt,1,-4167)   &&lnSheetCnt为工作表总数
**  命名工作表:oExcel.WorkSheets("Sheet3").Name="新表"    &&重命名工作表3
**Excel的窗口控制:oExcel.WindowState = -4140  &&最小化=-4140,最大化=-4137,还原=-4143
eole.visible=.t. &&显示Excel窗口
eole.Caption='VFP应用程序调用Microsoft Excel'&&更改Excel标题栏
*eole.cells(1,4).value=XM &&(XM为数据库字段名) &&给单元格赋值
eole.cells(1,2).value="AF"                   && 给单元格赋值
eole.Range("A2:B2").select
eole.selection.MergeCells = .T.                          && 合并单元
eole.range("A2 ").value='情况统计表'
eole.range("A2 ").NumberFormatLocal = "@"      &&字符型
eole.ActiveSheet.Range("A1:BE29").NumberFormatLocal =;
"_ * #,##0.00_ ; _ * -#,##0.00_ ;_ * "+"-"+"??_ ;_ @_ "  && 指定区域内的数字显示格式
eole.selection.HorizontalAlignment=2                     && 水平方向 2左对齐,3居中,4右对齐
eole.selection.VerticalAlignment = 2                     && 垂直方向 1靠上 ,2居中,3靠下
eole.Range("A5:M5").select
eole.Selection.Interior.ColorIndex = 34                  && 设置行颜色为[淡兰]
eole.selection.WrapText = .T.       && 自动换行
eole.ActiveSheet.Cells(2,1).Font.Name='黑体' &&设置字体
eole.ActiveSheet.Cells(1,1).Font.Size=25 &&设置字体大小
eole.ActiveSheet.Cells(1,1).Font.Italic=.t. &&设置字体为斜体
eole.ActiveSheet.Columns(1).Font.Bold=.t. &&设置整列字体为粗体
*vfp_excel.ActiveCell.Characters.Font.Underline = 2 &&下划线
vfp_excel.ActiveCell.Characters.Font.ColorIndex = 0 &&字符颜色
vfp_excel.cells(lines+rwi,9).NumberFormatLocal = "0"  &&规定小数点位数
ef.Columns("A").Select &&整列选择
ef.Cells.Select &&选择整张表
ef.Selection.Font.Size = 10  &&设置整表默认字体大小为10
eole.ActiveSheet.Columns(A:B).ColumnWidth=30 &&设置指定列的宽度(单位:字符个数)
eole.ActiveSheet.Rows(1).RowHeight=1/0.035 &&设置指定行的高度为1厘米,1磅=0.035厘米
eole.Selection.Columns.AutoFit             && 最适合的列宽
eole.ActiveSheet.Range('b3:d3').Borders(2).Weight=3 &&指定边框线宽度(Borders参数:1-左、2-右、3-顶、4-底、5-斜、6-斜/)
eole.ActiveSheet.Range('b3:d3').Borders(2).LineStyle=1 &&设置四个边框线条的类型 LineStyle值:1与7-细实、2-细虚、4-点虚、9-双细实线)
&&能不能指定在某一位置或区域放置图片并控制图片显示大小呢? 
OLEAPP.SHEETS(1).SELECT
oleapp.Range("位置").Select
oleapp.ActiveSheet.Pictures.Insert("图片文件名")).Select
oleapp.Selection.ShapeRange.LockAspectRatio =.T.
oleapp.Selection.ShapeRange.Height = 57
*******问题:类型为字符型的字段输出到excel 中,前面的零被自动去掉,例如"009877"变为"9877",怎么解决?
*1.在字符串前面加半角单引号" ' "
*2.eole.Range("A1:Y1").Select
*eole.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 &&列数
*****页面设置
**预览当前工作表:oExcel.ActiveSheet.PrintPreview
*!*      .CenterFooter="第"+"&P"+"页 共"+"&N"+"页"    &&页脚中间
**  .rightfooter="制表:松涛" &&页脚右边
*!*       .PaperSize=9       &&纸张类型: A4(注意:不同打印机与版本可能有不同)
*!*      .PrintQuality = 180   &&打印精度
oleapp.sheets.item(1).pagesetup.CenterHorizontally=.t.&&页面水平居中
*oleapp.sheets.item(1).pagesetup.CenterVertically=.t. &&页面垂直居中
eole.ActiveSheet.PageSetup.CenterHeader='报表1' &&设置页眉
eole.ActiveSheet.PageSetup.CenterFooter='第&P页' &&设置页脚
eole.ActiveSheet.PageSetup.HeaderMargin=2/0.035 &&设置页眉到顶端边距为2厘米
eole.ActiveSheet.PageSetup.FooterMargin=3/0.035 &&设置页脚到底边距为3厘米
eole.ActiveSheet.PageSetup.TopMargin=2/0.035 &&设置顶边距为2厘米
eole.ActiveSheet.PageSetup.BottomMargin=4/0.035 &&设置底边距为4厘米
eole.ActiveSheet.PageSetup.LeftMargin=2/0.035 &&设置左边距为2厘米
eole.ActiveSheet.PageSetup.RightMargin=2/0.035 &&设置右边距为2厘米
eole.ActiveSheet.PageSetup.CenterHorizontally=.t. &&设置页面水平居中
eole.ActiveSheet.PageSetup.CenterVertically=.t. &&设置页面垂直居中
eole.ActiveSheet.PageSetup.PaperSize=1 &&设置页面纸张大小(1-窄行8511 39-宽行1411)
eole.ActiveSheet.PageSetup.Orientation=2     && 横向
eole.ActiveSheet.PageSetup.PrintTitleRows="$1:$3"        && 定义固定行 顶端标题行
eole.ActiveSheet.PageSetup.PrintTitleColumns="$A:$C"     && 定义固定列
eole.ActiveSheet.PageSetup.CenterHeader= "&14&BTMC"      && 设置页眉
eole.ActiveSheet.PageSetup.CenterFooter="表__第&P页"      && 设置页脚
oExl.ActiveSheet.PageSetup.Zoom=Thisform.spnZoom.Value  &&缩放比例
eole.ActiveSheet.PageSetup.PrintGridlines=.t. &&打印单元格网线
eole.ActiveSheet.PrintPreview &&打印预览工作表
eole.ActiveSheet.PrintOut &&打印输出工作表
*******5设置打印参数:用Excel做报表,可打印时怎么选择打印机,即.ActiveWindow.SelectedSheets.PrintOut的参数有哪些? 
expression.PrintOut(From, To, Copies, Preview, ActivePrinter, PrintToFile, Collate, PrToFileName)
**expression 必选。该表达式返回"应用于"列表中的某个对象。
**From Variant 类型,可选。打印的开始页号。如果省略该参数,将从起始位置开始打印。
*!*    To Variant 类型,可选。打印的终止页号。如果省略该参数,将打印至最后一页。
*!*    Copies Variant 类型,可选。要打印的份数。如果省略该参数,将只打印一份。
*!*    Preview Variant 类型,可选。如果为 True 则 Microsoft Excel 打印指定对象之前进行打印预览。如果为 False,或者省略此参数则立即打印该对象。
*!*    ActivePrinter Variant 类型,可选。 设置活动打印机的名称。
*!*    PrintToFile Variant 类型,可选。如果为 True 则打印输出到文件。如果没有指定 PrToFileName,则 Microsoft Excel 将提示用户输入要输出文件的文件名。
*!*    Collate Variant 类型,可选。如果为 True 则逐份打印每份副本。
*!*    PrToFileName 可选,Variant 类型。如果将 PrintToFile 设置为 True,则本参数指定要打印到的文件名。
*!*     **说明
*!*    From 参数和 To 参数所描述的"页"指的是要打印的页,并非指定工作表或工作簿中的全部页。
**打印当前工作簿: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
***********
eole.ActiveWorkbook.SaveAs('c:\temp\22.xls') &&工作表另为
** 换名存为文本文件:oExcel.ActiveWorkBook.Saveas("&lcFileName",-4158) 
**  加密码换名存盘:oExcel.ActiveWorkbook.SaveAs(&lcFileName,-4143,[3721],[3721],.F., .F.)
eole.ActiveWorkbook.saved=.t. &&放弃存盘
eole.Workbooks.close &&关闭工作簿
eole.quit &&退出Excel
RELEASE eole &&释放变量 以真正退出 Excel

 

 

回复列表 (共6个回复)

沙发


程序里面错误比较多:

IF NOT TYPE("eole) = "O"  &&少双引号"

oele.Workbooks.Open("d:\22.xls",.f.,.f., ,"123","456")  &&字符错了“oele 改为eole"

eole.ActiveSheet.Columns(A:B).ColumnWidth=30 &&设置指定列的宽度(单位:字符个数)  少双引号'A:B'

oleapp.ActiveSheet.Pictures.Insert("图片文件名")).Select    &&多)括号


感觉没有高先生的[color=FF00FF]"从当前工作区中打开的任意dbf-table或cursor 到 xl-table的实现过程"[/color]来的便当好用.但还是感谢琅拿度转贴,让我们有更多的学习机会.

板凳

金龙高先生的帖子当然也被俺收藏了。

呵呵,博览群贴嘛...

3 楼

只有你想不到的功能,没有最全的帖子。

图表部分。

添加 ActiveX 对象。

插入图片

……

顺着帮助文档,按每个层次、每个对象的:属性、方法编写功能。

4 楼

所以希望大家补充啊...

5 楼

兄弟:
原来你是邀请网友添加没有的命令啊!
我还以为你说,你找的帖子是命令最全的了。
那你应该把,你的意思表达清楚啊!

你的主意不错,众人拾柴火焰高。值得推广。
该办法为网友提供了,丰富的学习资源。
是精华帖子!!!

希望你能修改一下标题,和说明为好!

6 楼

响应号召,来共同打造VFP+EXCEL最全的贴子
这也是一个不错的资源:


[url=http://www.programfan.com/club/post-247481.html]http://www.programfan.com/club/post-247481.html[/url]

我来回复

您尚未登录,请登录后再回复。点此登录或注册