失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > java ole excel_用OLE操作Excel

java ole excel_用OLE操作Excel

时间:2018-10-02 17:48:13

相关推荐

java ole excel_用OLE操作Excel

ExcelApp

.

PG(

"

workbooks

"

)

.

FN(

"

Add

"

,

"

C:\\Temp\\result.xlt

"

);

Range

=

ExcelApp

.

PG(

"

Cells

"

,

2

,

1

);

Range

.

PS(

"

RowHeight

"

,

25

);

在应用程序中控制Excel的运行,首先必须在编制自动化客户程序时包含Comobj.hpp

#include "Comobj.hpp"

C++ Builder把Excel自动化对象的功能包装在下面的四个Ole Object Class函数中,应用人员可以很方便地进行调用。

设置对象属性:void OlePropertySet(属性名,参数……);

获得对象属性:Variant OlePropertyGet(属性名,参数……);

调用对象方法:1) Variant OleFunction(函数名,参数……);

2) void OleProcedure(过程名,参数……);

在程序中可以用宏定义来节省时间:

#

definePGOlePropertyGet

#

definePSOlePropertySet

#

defineFNOleFunction

#

definePROleProcedure

举例:

ExcelApp

.

OlePropertyGet(

"

workbooks

"

)

.

OleFunction(

"

Add

"

);

可写为

ExcelApp

.

PG(

"

workbooks

"

)

.

FN(

"

Add

"

);

C++ Builder中使用OLE控制Excel2000,必须掌握Excel2000的自动化对象及Microsoft Word Visual Basic帮助文件中的关于Excel的对象、方法和属性。对象是一个Excel元素,属性是对象的一个特性或操作的一个方面,方法是对象可以进行的动作。

首先定义以下几个变量:

Variant ExcelApp,Workbook1,Sheet1,Range1;

1、Excel中常用的对象是:Application,Workbooks,Worksheets等。

★创建应用对象★

VariantExcelApp;

ExcelApp

=

Variant

::

CreateObject(

"

Excel.Application

"

);

或者

ExcelApp

=

CreateOleObject(

"

Excel.Application

"

);

★创建工作簿对象★

VariantWorkBook1;

WorkBook1

=

ExcelApp

.

PG(

"

ActiveWorkBook

"

);

★创建工作表对象★

VariantSheet1;

Sheet1

=

WorkBook1

.

PG(

"

ActiveSheet

"

);

★创建区域对象★

Variant Range;

Range

=

Sheet1

.

PG(

"

Range

"

,

"

A1:A10

"

);

或者使用

Excel

.

Exec

(PropertyGet(

"

Range

"

)

<<

"

A1:C1

"

)

.

Exec

(Procedure(

"

Select

"

));

2、常用的属性操作:

★使Excel程序不可见★

ExcelApp

.

PS(

"

Visible

"

,

(Variant)

false

);

★新建EXCEL文件★

◎ 新建系统模板的工作簿

ExcelApp

.

PG(

"

workbooks

"

)

.

FN(

"

Add

"

)

//

默认工作簿

ExcelApp

.

PG(

"

workbooks

"

)

.

FN(

"

Add

"

,

1

)

//

单工作表

ExcelApp

.

PG(

"

workbooks

"

)

.

FN(

"

Add

"

,

2

)

//

图表

ExcelApp

.

PG(

"

workbooks

"

)

.

FN(

"

Add

"

,

3

)

//

宏表

ExcelApp

.

PG(

"

workbooks

"

)

.

FN(

"

Add

"

,

4

)

//

国际通用宏表

ExcelApp

.

PG(

"

workbooks

"

)

.

FN(

"

Add

"

,

5

)

//

与默认的相同

ExcelApp

.

PG(

"

workbooks

"

)

.

FN(

"

Add

"

,

6

)

//

工作簿且只有一个表

或者使用ExcelApp的Exec方法

Excel

.

Exec

(PropertyGet(

"

Workbooks

"

))

.

Exec

(Procedure(

"

Add

"

));

◎ 新建自己创建的模板的工作簿

ExcelApp

.

PG(

"

workbooks

"

)

.

FN(

"

Add

"

,

"

C:\\Temp\\result.xlt

"

);

★打开工作簿★

ExcelApp

.

PG(

"

workbooks

"

)

.

FN(

"

open

"

,

"

路径名.xls

"

)

★保存工作簿★

WorkBook1

.

FN(

"

Save

"

);

//

保存工作簿

WorkBook1

.

FN(

"

SaveAs

"

,

"

文件名

"

);

//

工作簿保存为,路径注意用"\\"

★退出EXCEL★

ExcelApp

.

FN(

"

Quit

"

);

ExcelApp

=

Unassigned;

或者

ExcelApp

.

Exec

(Procedure(

"

Quit

"

));

★操作工作表★

◎ 选择选择工作表中第一个工作表

Workbook1

.

PG(

"

Sheets

"

,

1

)

.

PR(

"

Select

"

);

Sheet1

=

Workbook1

.

PG(

"

ActiveSheet

"

);

◎ 重命名工作表

Sheet1

.

PS(

"

Name

"

,

"

Sheet的新名字

"

);

◎ 当前工作簿中的工作表总数

intnSheetCount

=

Workbook1

.

PG(

"

Sheets

"

)

.

PG(

"

Count

"

);

★操作行和列★

◎ 获取当前工作表中有多少行和多少列:

Sheet1

.

PG(

"

UsedRange

"

)

.

PG(

"

Columns

"

)

.

PG(

"

Count

"

);

//

列数

Sheet1

.

PG(

"

UsedRange

"

)

.

PG(

"

Rows

"

)

.

PG(

"

Count

"

);

//

行数

◎ 设置列宽

ExcelApp

.

PG(

"

Columns

"

,

1

)

.

PS(

"

ColumnWidth

"

,

22

);

或者

Range

=

ExcelApp

.

PG(

"

Cells

"

,

1

,

3

);

Range

.

PS(

"

ColumnWidth

"

,

22

);

◎ 设置行高

ExcelApp

.

PG(

"

Rows

"

,

2

)

.

PS(

"

RowHeight

"

,

25

);

或者

Range

=

ExcelApp

.

PG(

"

Cells

"

,

2

,

1

);

Range

.

PS(

"

RowHeight

"

,

25

);

◎ 在工作表最前面插入一行

Sheet1

.

PG(

"

Rows

"

,

1

)

.

PR(

"

Insert

"

);

◎ 删除一行

ExcelApp

.

PG(

"

Rows

"

,

2

)

.

PR(

"

Delete

"

);

//

将第2行删除

// 本文作者:ccrun ,如转载请保证本文档的完整性,并注明出处。

// 欢迎光临 C++ Builder 研究

// 摘自:/doc/go.asp?id=529

★操作单元格★

◎ 设置单元格字体

Sheet1

.

PG(

"

Cells

"

,

1

,

1

)

.

PG(

"

Font

"

)

.

PS(

"

Name

"

,

"

隶书

"

);

//

字体

Sheet1

.

PG(

"

Cells

"

,

2

,

3

)

.

PG(

"

Font

"

)

.

PS(

"

size

"

,

28

);

//

大小

◎ 设置所选区域字体

Range

.

PG(

"

Cells

"

)

.

PG(

"

Font

"

)

.

PS(

"

Size

"

,

28

);

Range

.

PG(

"

Cells

"

)

.

PG(

"

Font

"

)

.

PS(

"

Color

"

,

RGB(

0

,

0

,

255

));

其中参数的设置:

FontName

:

"

隶书

"

//

字体名称

Size

:

12

//

字体大小

Color

:

RGB(

*,*,*

)

//

颜色

Underline

:

true

/

false

//

下划线

Italic

:

true

/

false

//

斜体

◎ 设置单元格格式为小数百分比

Sheet1

.

PG(

"

Cells

"

,

1

,

1

)

.

PS(

"

NumberFormatLocal

"

,

"

0.00%

"

);

◎ 设定单元格的垂直对齐方式

Range

=

ExcelApp

.

PG(

"

Cells

"

,

3

,

4

);

//

1=靠上2=居中3=靠下对齐4=两端对齐5=分散对齐

Range

.

PS(

"

VerticalAlignment

"

,

2

);

◎ 设定单元格的文本为自动换行

Range

=

ExcelApp

.

PG(

"

Cells

"

,

3

,

4

);

Range

.

PS(

"

WrapText

"

,

true

);

★单元格的合并★

Range

=

Sheet1

.

PG(

"

Range

"

,

"

A1:A2

"

);

//

A1和A2单元格合并

String

strRange

=

"

A

"

+

IntToStr(j)

+

"

:

"

+

"

C

"

+

IntToStr(j);

//

比如:A1:C5

Range1

=

Sheet1

.

PG(

"

Range

"

,

strRange

.

c_str());

//

可以用变量控制单元格合并

Range1

.

FN(

"

Merge

"

,

false

);

★读写单元格★

◎ 指定单元格赋值

String

strValue

=

"

abcdefg

"

;

Sheet1

.

PG(

"

Cells

"

,

3

,

6

)

.

PS(

"

Value

"

,

strValue

.

c_str());

Sheet1

.

PG(

"

Cells

"

,

j

,

1

)

.

PS(

"

Value

"

,

"

总记录:

"

+

String

(j

-

6

));

或者使用

Excel

.

Exec

(PropertyGet(

"

Cells

"

)

<<

1

<<

3

)

.

Exec

(PropertySet(

"

Value

"

)

<<

15

);

◎ 所选区域单元格赋值

Range

.

PG(

"

Cells

"

)

.

PS(

"

Value

"

,

10

);

◎ 所选区域行赋值

Range

.

PG(

"

Rows

"

,

1

)

.

PS(

"

Value

"

,

1234

);

◎ 工作表列赋值

Sheet1

.

PG(

"

Columns

"

,

1

)

.

PS(

"

Value

"

,

1234

);

◎ 读取取值语句:

String

strValue

=

Sheet1

.

PG(

"

Cells

"

,

3

,

5

)

.

PG(

"

Value

"

);

★窗口属性★

◎ 显示属性

ExcelApp

.

PS(

"

Windowstate

"

,

3

);

//

最大化显示

1

---------

xlNormal

//

正常显示

2

---------

xlMinimized

//

最小化显示

3

---------

xlMaximized

//

最大化显示

◎ 状态栏属性

ExcelApp

.

PS(

"

StatusBar

"

,

"

您好,请您稍等。正在查询!

"

);

ExcelApp

.

PS(

"

StatusBar

"

,

false

);

//

还原成默认值

◎ 标题属性:

ExcelApp

.

PS(

"

Caption

"

,

"

查询系统

"

);

3、操作图表

★添加图表

VariantChart;

Chart

=

ExcelApp

.

Exec

(PropertyGet(

"

Charts

"

))

.

Exec

(

Function

(

"

Add

"

));

ExcelApp

.

Exec

(PropertySet(

"

Visible

"

)

<<

true

);

Chart

.

Exec

(PropertySet(

"

Type

"

)

<<

-

4100

);

★滚动图表

for

(intnRotate

=

5

;nRotate

<=

180

;nRotate

+=

5

)

{

Chart

.

Exec

(PropertySet(

"

Rotation

"

)

<<

nRotate);

}

for

(intnRotate

=

175

;nRotate

>=

0

;nRotate

-=

5

)

{

Chart

.

Exec

(PropertySet(

"

Rotation

"

)

<<

nRotate);

}

另外,为保证程序能正常运行,需要在程序中判断目标机器是否安装了Office;

try

{

ExcelApp

=

Variant

::

CreateObject(

"

Excel.Application

"

);

}

catch

(

)

{

ShowMessage(

"

运行Excel出错,请确认安装了Office

"

);

return

;

}

#

include"comobj.hpp"

//---------------------------------------------------------------------------

//对指定Excel文件中的指定列进行排序

//strExcelFileName:excel文件名

//nCol:指定的列号

//nSortStyle:1:升序,2:降序

voidSortExcelColumn(

String

strExcelFileName

,

intnCol

,

intnSortStyle)

{

VariantvExcelApp

,

vWorkbook

,

vRange;

vExcelApp

=

Variant

::

CreateObject(

"

Excel.Application

"

);

vExcelApp

.

OlePropertySet(

"

Visible

"

,

false

);

vExcelApp

.

OlePropertyGet(

"

WorkBooks

"

)

.

OleProcedure(

"

Open

"

,

strExcelFileName

.

c_str());

vWorkbook

=

vExcelApp

.

OlePropertyGet(

"

ActiveWorkbook

"

);

vExcelApp

.

OlePropertyGet(

"

Columns

"

,

nCol)

.

OleProcedure(

"

Select

"

);

vExcelApp

.

OlePropertyGet(

"

ActiveSheet

"

)

.

OlePropertyGet(

"

Cells

"

,

1

,

nCol)

.

OleProcedure(

"

Select

"

);

vRange

=

vExcelApp

.

OlePropertyGet(

"

Selection

"

);

vRange

.

Exec

(

Function

(

"

Sort

"

)

<<

vExcelApp

.

OlePropertyGet(

"

Selection

"

)

<<

nSortStyle);

vWorkbook

.

OleProcedure(

"

Save

"

);

vWorkbook

.

OleProcedure(

"

Close

"

);

vExcelApp

.

OleFunction(

"

Quit

"

);

vWorkbook

=

Unassigned;

vExcelApp

=

Unassigned;

ShowMessage(

"

ok

"

);

}

void__fastcallTForm1

::

Button1Click(TObject

*

Sender)

{

//

对C:\123\123.xls文件中第一个Sheet的第四列进行升序排序

SortExcelColumn(

"

C:\\123\\123.xls

"

,

4

,

1

);

}

from:/html/kaifawendang/C__/OLE_COM_DLL_XML//0429/6995.html

posted on -09-10 20:05 young 阅读(308) 评论(0) 编辑 收藏 所属分类: C++Builder

如果觉得《java ole excel_用OLE操作Excel》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。