`
wjm901215
  • 浏览: 154065 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

EXCEL动态数据交换(OLE对象操作)

阅读更多

 一、创建Excel对象类  
  CREATEOBJECT(ClassName[eParameter1,eParameter2,...])
其中,ClassName指明欲建立对象的类名。eParameter1,eParameter2…是用来传递参数给OLE对象的
例如,在VFP中欲建立一Excel工作表对象:MySheet=CREATEOBJECT("Excel.Sheet")就行了。

Excel对象层次模型
引用Excel文件Getobject("Excel文件名")
单元格:Excel.Application.Workbooks(i).Worksheets(i).Cells(i,i).X 注:i代表引用标号,X表示任何属性与方法
单元区域:Excel.Application.Workbooks(i).Worksheets(i).Range("A1:B1")
函数:Excel.Application.Average(Worksheets("Sheet1").Range("A1:A4")) 注:求平均值
Excel.Application.Sum(Worksheets("Sheet1").Range("A1:A4")) 注:求和
Excel.Application.Max(Worksheets("Sheet1").Range("A1:A4")) 注:求最大值
Excel.Application.Format(Date,"mmmm d,yyyy") 注:返回格式化日期(如:December 20,2003)

集合操作:Excel.Application.Workbooks.Add() 注:添加一个新的工作簿
Excel.Application.Workbooks.Count 注:返回工作簿个数
Excel.Application.Workbooks("Book1").Delete() 注:删除工作簿Book1

Excel.Application.Workbooks("Book1").Worksheets.Add() 注:在工作簿Book1中添加一个新工作表
Excel.Application.Workbooks.("Book1").Worksheets.Count 注:返回工作表个数
Excel.Application.Workbooks("Book1").Worksheets("Sheet1").Cells.X 注:引用全体单元格
Excel.Application.Workbooks("Book1").Worksheets("Sheet1").Delete() 注:删除工作表Sheet1
InputBox(Prompt,[Title],[Default],[Left],[Top],[HelpFile],[HelpContextID],[Type]) && 输入数据框
附加说明:Type=格式,0=公式,1=数字,2=文本,4=逻辑值,8=单元格引用,16=错误值,64=数组


Application对象常用属性和方法
ActiveWorkbook && (O)当前活动的工作簿
ActiveSheet && (O)当前活动的工作表
ActiveCell && (O)当前活动的单元格
ThisWorkbook && (O)当前正在执行过程的工作簿
OperatingSystem && (C)操作系统
Selection && (O)当前选择的对象
CutCopyModel && (L)是否显示工作表中围绕选定单元格,指示剪切、复制状态的移动虚线
Quit() && 退出Excel
Run() && 执行Excel宏

Workbook对象常用属性和方法
ActiveSheet && (O)当前工作簿
Activate() && 激活工作簿
Open(fileName) && 打开工作簿
Close() && 关闭工作簿
Save() && 以默认名字(如Book1)保存工作簿,且不显示对话框
SaveAs(FileName,FileFormat,Password,WriteResPassword,ReadOnlyRecommended) && 工作簿另存为,不显示对话框
PrintOut() && 打印工作簿
PrintPreview() && 工作簿打印预览

Worksheet对象常用属性和方法
Name && (C)工作表名字
Cells && (O)引用工作表中的所有单元格
Activate() && 激活工作表
Add() && 添加工作表
CheckSpelling() && 检查工作表中内容的拼写
Delete() && 删除工作表
Paste() && 执行复制

Cell/Range对象的常用属性和方法 注:Cell代表单个单元格,Range代表一组单元格,实际中以Range应用最广泛
ActiveCell.CurrentRange && (O)返回从当前激活的单元格开始第一个空行和空列包围的区域
Range.Address && (C)当前Range位置
Range.Count && (N)Range中单元格数量
Range.Formula && (C)计算显示值的公式
Range.NumberFormat && (C)数字格式
Range.Offset(x,y) && (N)偏移量(用于从一个Range移动到另一个Range)
Range.Resize(x,y) && (N)重设Range的大小
Range.Value && (X)Range的当前值
Range.Activate() && 激活一个Range
Range.Clear() && 清除一个Range的内容
Range.Copy() && 拷贝到剪贴板
Range.Cut() && 剪切到剪贴板
Range.Paste() && 从剪贴板粘贴到当前Range
Range.PasteSpecial() && 选择性粘贴
Range.Select() && 选择一个Range
以下是Cell或Range对象的字体属性
Font.Name && (C)字体名称
Font.FontStyle && (C)字体风格
Font.Size && (N)字体大小
Font.Bold && (L)是否为粗体
Font.Italic && (L)是否为斜体
Font.StrikeThrough && (L)是否显示删除线
Font.SuperScript &&
Font.OutlineFont && (L)是否显示空心字
Font.Shadow && (L)是否有阴影
Font.Underline && (L)是否有下划线
Font.ColorIndex && (N)颜色


常用VBA语法
****** If 条件判断 ******
If condition Then
[statements]
Elsif condition-n Then
[elseifStatements]...
Else
[elseStatements]
End If

****** Select Case 多重选择 ******
Select Case testExpression
Case expressionList-n
[statements-n]...
Case Else
[elseStatements]
End Select

***** For Next 循环 *****
语法1:
For counter=start To end [Step step]
[statements]
[Exit For]
[statements]
Next [counter]

语法2(对象专用):
For Each element In group
[statements]
[Exit For]
[statements]
Next

***** Do While 循环 *****
语法1:
Do [{While|Until} condition]
[statements]
[Exit Do]
[statements]
Loop

语法2:
Do
[statements]
[Exit Do]
[statements]
Loop [{While|Until} condition]


 1.建立OLE对象
MyExcel=CREATEOBJECT("Excel.Application") 注:建立一个Excel对象(不可见)
MyExcelSheet=CREATEOBJECT("Excel.Sheet") 注:直接建立一个Excel工作表对象(不可见,且只有一个表)

  2.添加工作簿对象
MyExcel.Workbooks.Add()

3.建立工作簿中的工作表对象
MyExcel.Workbooks(1).Sheets.Add()

5.引用工作簿
MyExcel.Workbooks(1) 注:Workbooks对象可以使用数字编号或工作簿名字
MyExcel.Workbooks("Book1")

6.引用工作簿中的某一工作表
MyExcel.Workbooks(1).Sheets(1) 注:Sheets对象只能使用数字编号
MyExcel.Workbooks("Book1").Worksheets(1) 注:Worksheets对象可以使用数字编号或工作表名字
MyExcel.Workbooks("Book1").Worksheets("Sheet1")

7.引用工作簿中的某一工作表中的某一单元格数据
MyExcel.Workbooks(1).Sheets(1).Cells(1,1).Value
MyExcel.Workbooks(1).Worksheets(1).Cells(1,1).Value
MyExcel.Workbooks(1).Worksheets("Sheet").Cells(1,1).Value

8.引用工作簿中的某一工作表中的某一区域
MyExcel.Workbooks("Book1").Worksheets("Sheet").Range("A2:B5")


9.应用实例
******************** START ********************
Local Data_Rows , Data_Columns , I , J , MyExcelSheet
Dimension Data_Array(3,3) && 建立一个存放演示数据的数组
Data_Array(1,1) = "张三"
Data_Array(1,2) = "李四"
Data_Array(1,3) = "赵五"
Data_Array(2,1) = 45
Data_Array(2,2) = 55
Data_Array(2,3) = 65
Data_Array(3,1) = 1440
Data_Array(3,2) = 1220
Data_Array(3,3) = 1330

m.Data_Rows = ALEN(Data_Array , 1) && 自动获取数据数组的行数
m.Data_Columns = ALEN(Data_Array , 2) && 自动获取数据数组的列数

MyExcelSheet = CREATEOBJECT("Excel.sheet") && 直接建立Excel工作表对象(MyExcelSheet.Parent=Sheet对象)
MyExcelSheet.Parent.ActiveWindow.WindowState = 2 && 最大化工作表窗口
MyExcelSheet.Parent.ActiveSheet.Name="MyOLE" && 设置当前工作表名称
MyExcelSheet.Parent.Visible = .T. && 设置使Excel表可见

for m.I=1 to m.Data_Rows
for m.J=1 to m.Data_Columns
MyExcelSheet.Parent.ActiveSheet.Cells(m.I,m.J).Value = Data_Array(m.I,m.J) && 给Excel单元格传递数据
endfor
endfor

for m.I=2 to m.Data_Rows
for m.J=1 to m.Data_Columns
With MyExcelSheet.Parent.ActiveSheet
.Cells(m.I,m.J).Value = .Cells(m.I,m.J).Value + 300 && 编辑Excel单元格数据
EndWith
endfor
endfor

Messagebox("OLE对象数据传送完毕,按确定键进行下一步。",64,"系统提示")
MyExcelSheet.SaveAs("C:\MyExcel") && 保存工作簿到指定位置
Messagebox("按确定键关闭OLE对象。",64,"系统提示")
MyExcelSheet.Parent.Quit() && 将Excel对象关闭

分享到:
评论

相关推荐

    OLE操作excel

    在计算机编程领域中,OLE(Object Linking and Embedding)是一种技术,允许不同的应用程序交换数据和对象。OLE 操作 Excel 是指使用 OLE 技术来操作 Microsoft Excel 应用程序,实现与 Excel 的交互操作。 Excel ...

    用C++Builder中的OLE技术存取Excel表数据.pdf

    OLE(对象链接与嵌入)是由微软提出的一项技术标准,用于不同应用程序之间的数据交换和相互操作。OLE技术允许一个应用程序访问另一个应用程序的对象和服务,从而实现跨应用程序的操作。Microsoft Office套件(包括...

    以ole方式读取excel文件

    OLE技术还支持拖放操作、动态更新和实时数据交换。 2. OLE Automation:在与Excel交互时,我们通常使用OLE Automation。这是一种特定的OLE应用,允许程序通过调用Excel的自动化接口来控制Excel应用程序。这使得...

    vb中ole用法

    3. 数据交换:VB中的OLE机制允许对象之间进行数据交换,比如从Excel导入数据到VB的控件中,或者反之。这通常通过`LinkSource`属性和`TransferData`方法实现。 4. 自动化(Automation):VB支持OLE自动化,这意味着...

    excel读写动态库

    通过OLE,应用程序可以调用其他应用程序的接口,实现跨程序的数据交换和操作,这就是“Excel读写动态库”能够实现Excel操作的基础。 在C++中,使用OLE技术通常涉及到COM(Component Object Model)组件。COM是一种...

    OLE 2 对象链接与嵌入技术高级编程技术

    8. **剪贴板和数据交换 (Clipboard and Data Exchange)**:OLE 2 提供了一种标准机制来在应用程序之间共享数据,通过剪贴板或者数据对象的使用,数据可以在不同程序间复制、粘贴。 9. **持久化 (Persistence)**:...

    AutoCAD与Excel通信方法的实现

    3. 数据交换格式:熟悉两者之间数据交换的格式,如DDE(动态数据交换)、OLE(对象链接与嵌入)、以及更为常用的文本文件或CSV文件格式。了解如何通过这些格式在两个软件之间传输数据。 4. 文件操作:学会使用Auto...

    vb批量将excel数据导入access以及批量将access数据库中的数据导入excel源代码

    - **记录集操作**:接着,利用`Recordset`对象读取Excel数据并将其写入Access数据库。创建`Recordset`,设置其来源为Excel工作表的特定范围,然后打开它。 - **数据写入**:一旦`Recordset`打开,我们可以遍历其中...

    pb ole方式拆分合并excel及拼音查询小程序及源码

    描述中提到的“OLE拷贝粘贴可以保持更好的保持电子表的格式”,指的是在使用OLE进行数据交换时,原始电子表格的格式,如字体、颜色、单元格样式等,都能够被保留下来。这对于需要保持原始数据格式完整性的应用来说...

    ABAP OLE2 EXCEL

    这种技术是基于对象链接和嵌入(OLE2)协议,它是早期Windows平台上的一个组件对象模型(COM)规范,用于在不同应用程序之间交换数据。下面我们将深入探讨ABAP OLE2与Excel交互的相关知识点。 1. **ABAP OLE2简介**...

    数据库(sqlserver,oracle等,二层,三层均可)与excel交换数据

    ### 数据库与Excel数据交换知识点解析 #### 一、引言 在日常工作中,我们经常需要将Excel中的数据导入到数据库中,或者将数据库中的数据导出至Excel进行进一步的数据处理或报告制作。本篇文章将从一个实际示例出发...

    Delphi程序读取Excel文件的数据

    Excel 的对象模型是一个树状的层次结构,根是应用程序本身,工作簿 WorkBook 是根对象的属性对象,本文主要讨论的用于数据交换的 WorkSheet 则是工作簿的属性对象。了解 Excel 的对象模型是关键,因为它决定了 ...

    从Excel中获取数据 VB源码

    此外,如果`DDE`在文件名中出现,可能意味着该程序使用了动态数据交换(DDE,Dynamic Data Exchange)技术。DDE是早期版本的Windows系统中用于不同应用程序间通信的技术,不过在现代VB应用中,通常更倾向于使用COM...

    随心所欲在Word中调用Excel数据(图).pdf

    文章接着介绍了VBA的基本概念,包括Application对象、文档对象、选择对象等,并解释了如何在Word中使用VBA来调用Excel数据。然后,文章详细介绍了如何从Excel中引用数据,包括A1和R1C1引用样式,并解释了如何使用OLE...

    OLE应用程序的开发

    除了基本的数据交换,你还可以实现更复杂的交互,如触发Excel的计算公式,或者在Word中编辑文本后更新数据库。这需要对OLE对象的属性和方法有深入的理解,以及对事件处理的掌握。 总的来说,Delphi6提供的OLE支持极...

    基于OLE和VBA的数据库与WORD数据交互

    利用VBA,开发者可以轻松地实现与其他Office应用程序之间的数据交换和控制。 ##### 3. Word 自动化技术 Word提供了一套强大的自动化API,可以通过VBA或者其他编程语言来调用,从而实现Word文档的创建、编辑、保存...

    PowerBuilder应用程序中的OLE编程技术

    OLE技术由Microsoft开发,是Windows系统中一种标准化的数据交换和程序集成方式。在PowerBuilder中,开发者可以通过OLE控件将Windows系统内的OLE对象嵌入到应用程序界面,或通过编程方式操作这些对象,实现所谓的OLE...

    PB与Excel通讯

    标题:“PB与Excel通讯” ...通过合理设计DW和ChildDw数组,结合OLE对象的使用,可以在PB中实现高效且功能丰富的Excel数据处理能力。这对于企业级应用中常见的报表生成、数据导入导出等场景具有重要的实用价值。

    delphi操作word excel

    综上所述,Delphi 操作 Word 和 Excel 主要是通过 OLE 自动化技术实现,涉及到组件的使用、事件处理、数据库数据与 Excel 数据交换等多个环节,这些都需要开发者具备一定的 Delphi 和 OLE 自动化知识。

    研究论文-PowerBuilder中数据窗口与Excel通信技术的实现

    本研究提出了一种新的方法,可以将数据窗口的所有数据(包括header区和footer区的静态文本框和图片)导入到Excel中,并且可以动态地操作Excel中的数据,从而实现了更灵活的操作。 文章说明了PowerBuilder中数据窗口...

Global site tag (gtag.js) - Google Analytics