在bcb中如何设置才能生成MAP文件

在bcb中如何设置才能生成MAP文件,第1张

C++ Builder 中 CreateFile的用法 (例子在最后)

(1)函数原型

HANDLE CreateFile(

LPCTSTR lpfileName,

DWORD deDesiredAccess,

DWORD dwShareMode,

LPSECURITY_ATTRIBUTES lpSecurityAttributes

DWORD dwCreationDesposition,

DWORD dwFlagsAndAtrributes,

HANDLE hTemplateFile

)

(2)函数说明

该函数创建、打开或截断一个文件,并返回一个能够被用来存取该文件的句柄。此句柄允许读书据、写数据以及移动文件的指针。CreateFile函数既可以做为一个宽自负函数使用,也可以作为一个ANSI函数来用。

(3)参数说明

lpFileName:指向文件字符串的指针。

dwDesireAccess:制定文件的存取模式,可以取下列值:

0:制定可以查询对象。

GENERIC_READ:指定可以从文件中度去数据。

GENERIC_WRITE:指定可以向文件中写数据。

dwShareMode:指定文件的共享模式,可以取下列值:

0:不共享。

FILE_SHARE_DELETE:在Windows NT系统中,只有为了删除文件而进行的打开 *** 作才会成功。

FILE_SHARE_READ:只有为了从文件中度去数据而进行的打开 *** 作才会成功。

FILE_SHARE_WRITE:只有为了向文件中写数据而进行的打开 *** 作才会成功。

lpSecurityAttributes:指定文件的安全属性

dwCreationDisopsition:指定创建文件的方式,可以取以下值:

CREATE_NEW:创建新文件,如果文件已存在,则函数失败。

CREATE_ALWAYS:创建爱内心文件,如果文件已存在,则函数将覆盖并清除旧文件。

OPEN_EXISTING:打开文件,如果文件不存在,函数将失败。

OPEN_ALWAYS:打开文件,如果文件不存在,则函数将创建一个新文件。

TRUNCATE_EXISTING:打开外呢间,如果文件存在,函数将文件的大小设为零,如果文件不存在,函数将失败返回。

dwFlagsAndAtrributes:指定新建文件的属性和标志,它可以取以下值:

FILE_ATTRIBUTE_ARCHIVE:归档属性。

FILE_ATTRIBUTE_HIDDEN:隐藏属性。

FILE_ATTRIBUTE_NORMAL:正常属性。

FILE_ATTRIBUTE_READONLY:只读属性。

FILE_ATTRIBUTE_SYSTEM:系统文件。

FILE_ATTRIBUTE_TEMPORARY:临时存储文件,系统总是将临时文件的所有数据读入内存中,以加速对该文件的访问速度。用户应该尽快删除不再使用的临时文件。

FILE_FLAG_OVERLAPPED:用户可以通过一个OVERLAPPED结构变量来保存和设置文件读写指针,从而可以完成重叠式的读和写。一般用于数量比较大的读些 *** 作。

hTemplateFile:指向一个具有GENERIC_READ属性的文件的句柄,该文件为要创建的文件提供文件属性和文件扩展属性。

(4)注意事项

函数成功将返回指定文件的句柄,否则返回NULL。

(5)典型示例:

...

char szFile[64]

HANDLE handle

unsigned long lWritten,lRead

handle = CreateFile("c:\\windows\\desktop\\example.txt",GENERIC_READ|GENERIC_WRITE,FILE_SHARE_READ,NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,0)

if(handle==INVALID_HANDLE_VALUE){

MessageBox(NULL,"Error Create File!","Error",MB_OK)

break

}else

MessageBox(NULL,"Open file Success!","Open file",MB_OK)

原理很简单,我作过,使用OLE打开EXCEL文件,逐行读取数据EXCEL数据,再逐行用通过ADO控件写入表中,当然还有别的方法,不过我没用过.

这里有些参考资料,是 *** 纵EXCEL的,对你会有帮助:

http://www.ccrun.com/article.asp?i=529&d=0iezy5

================================

一个另类的方法,用企业管理器建立一个导入EXCEL的DTS包,然后建立一个批处理,通过DTSRUN执行导入 *** 作,批处理内容如下:

@@echo

off

if

[%1]

==

[]

goto

Usage

if

[%2]

==

[]

goto

Usage

if

[%3]

==

[]

goto

Usage

cls

SET

LOGFILE=%2

echo

%TIME%

DTS包开始执行.........

>>

%LOGFILE%

echo

------------------------------------------

>>

%LOGFILE%

@dtsrun

/F

%1

/N

%3

>>

%2

if

errorlevel

1

goto

Error

echo

%TIME%

DTS包执行完毕.........

>>

%LOGFILE%

echo

------------------------------------------

>>

%LOGFILE%

PAUSE

goto

FINISH

:Error

echo

------------------------------------------

>>

%LOGFILE%

echo

DTS包执行错误,请查看日志

.........

echo

%TIME%

DTS包执行错误.

>>

%LOGFILE%

pause

goto

FINISH

:Usage

echo.

echo

用法:通过程序调用,缺少参数

:FINISH

注意dtsrun可以有多个参数,这里的三个参数指DTS文件,包名称和日志文件

最后在BCB里调用这个批处理程序即可。

参考资料:http://blog.csdn.net/zjt621/archive/2007/01/30/1498104.aspx

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

#include "Comobj.hpp"

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

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

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

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

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

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

#define PG OlePropertyGet

#define PS OlePropertySet

#define FN OleFunction

#define PR OleProcedure

举例:

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等。

(1)创建应用对象:如:

Variant ExcelApp

ExcelApp=Variant::CreateObject ("Excel.Application")

或者

ExcelApp=CreateOleObject ("Excel.Application")

(2)创建工作簿对象:

Variant WorkBook1

WorkBook1=ExcelApp.OlePropertyGet("ActiveWorkBook")

(3)创建工作表对象:

Variant Sheet1

Sheet1=WorkBook1.OlePropertyGet("ActiveSheet")

(4)创建区域对象:

Variant Range

Range=Sheet1.OlePropertyGet("Range","A1:A10")

2、常用的属性 *** 作:

(1)使Excel程序不可见

ExcelApp.OlePropertySet("Visible",(Variant)false)

(2)新建EXCEL文件:

(a):新建系统模板的工作簿

ExcelApp.OlePropertyGet("workbooks").OleFunction("Add") //默认工作簿

ExcelApp.OlePropertyGet("workbooks").OleFunction("Add",1) //单工作表

ExcelApp.OlePropertyGet("workbooks").OleFunction("Add",2) //图表

ExcelApp.OlePropertyGet("workbooks").OleFunction("Add",3) //宏表

ExcelApp.OlePropertyGet("workbooks").OleFunction("Add",4) //国际通用宏表

ExcelApp.OlePropertyGet("workbooks").OleFunction("Add",5) //与默认的相同

ExcelApp.OlePropertyGet("workbooks").OleFunction("Add",6) //工作簿且只有一个表

(b):新建自己创建的模板的工作簿

ExcelApp.OlePropertyGet("workbooks").OleFunction("Add","C:\\Templates\\result.xlt")

(3)打开工作簿:

ExcelApp.OlePropertyGet("workbooks").OleFunction("open","路径名.xls")

(4)保存工作簿:

WorkBook1.OleFunction("Save")//保存工作簿

WorkBook1.OleFunction("SaveAs","文件名") //工作簿保存为,文件路径注意用“\\”

(5)退出EXCEL:

ExcelApp.OleFunction ("Quit")

ExcelApp=Unassigned

(6) *** 作工作表

(a)选择选择工作表中第一个工作表

Workbook1.OlePropertyGet("Sheets",1).OleProcedure("Select")

Sheet1=Workbook1.OlePropertyGet("ActiveSheet")

(b)重命名工作表

Sheet1.OlePropertySet("Name","Sheet的新名字")

(c)当前工作簿中的工作表总数

int nSheetCount=Workbook1.OlePropertyGet("Sheets").OlePropertyGet("Count")

(7) *** 作行和列:

(a)获取当前工作表中有多少行和多少列:

Sheet1.OlePropertyGet("UsedRange").OlePropertyGet("Columns").OlePropertyGet("Count") //列数

Sheet1.OlePropertyGet("UsedRange").OlePropertyGet("Rows").OlePropertyGet("Count")//行数

(b)设置列宽

ExcelApp.OlePropertyGet("Columns",1).OlePropertySet("ColumnWidth",22)

(c)设置行高

ExcelApp.OlePropertyGet("Rows",2).OlePropertySet("RowHeight",25)

(d)在工作表最前面插入一行

Sheet1.OlePropertyGet("Rows",1).OleProcedure("Insert")

(e)删除一行

ExcelApp.OlePropertyGet("Rows",2).OleProcedure("Delete") //将第2行删除

(7) *** 作单元格

(a):设置单元格字体

Sheet1.OlePropertyGet("Cells",1,1).OlePropertyGet("Font").OlePropertySet("Name","隶书") //字体

Sheet1.OlePropertyGet("Cells",2,3).OlePropertyGet("Font").OlePropertySet("size",28) //大小

(b):设置所选区域字体

Range.OlePropertyGet("Cells").OlePropertyGet("Font").OlePropertySet("Size",28)

Range.OlePropertyGet("Cells").OlePropertyGet("Font").OlePropertySet("Color",RGB(0,0,255))

其中参数的设置:

Font Name : "隶书" //字体名称

Size : 12 //字体大小

Color : RGB(*,*,*) //颜色

Underline : true/false //下划线

Italic: true/false //斜体

(c)设置单元格格式为小数百分比

Sheet1.OlePropertyGet("Cells",1,1).OlePropertySet("NumberFormatLocal","0.00%")

(8)单元格的合并:

(a)Range=Sheet1.OlePropertyGet("Range", "A1:A2")//A1和A2单元格合并

(b)String strRange="A"+IntToStr(j)+":"+"C"+IntToStr(j)//比如:A1:C5

Range1=Sheet1.OlePropertyGet("Range",strRange.c_str()) //可以用变量控制单元格合并

Range1.OleFunction("Merge",false)

(9)读写单元格:

(a):指定单元格赋值

String strValue="abcdefg"

Sheet1.OlePropertyGet("Cells",3,6).OlePropertySet("Value",strValue.c_str())

Sheet1.OlePropertyGet("Cells",j,1).OlePropertySet("Value","总记录:"+String(j-6))

(b):所选区域单元格赋值

Range.OlePropertyGet("Cells").OlePropertySet("Value",10)

(c):所选区域行赋值

Range.OlePropertyGet("Rows",1).OlePropertySet("Value",1234)

(d):工作表列赋值

Sheet1.OlePropertyGet("Columns",1).OlePropertySet("Value",1234)

(c):读取取值语句:

String strValue=Sheet1.OlePropertyGet("Cells",3,5).OlePropertyGet("Value")

(10)区域选择:

Range1.OlePropertyGet("Cells").OleFunction("Select")

(11)窗口属性:

(a)显示属性

ExcelApp.OlePropertySet("Windowstate",3)//最大化显示

1---------xlNormal //正常显示

2---------xlMinimized //最小化显示

3---------xlMaximized //最大化显示

(b)状态栏属性

ExcelApp.OlePropertySet("StatusBar","您好,请您稍等。正在查询!")

ExcelApp.OlePropertySet("StatusBar", false) //还原成默认值

(c)标题属性:

ExcelApp.OlePropertySet("Caption","查询系统")

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

try

{

ExcelApp=Variant::CreateObject ("Excel.Application")

}

catch(...)

{

ShowMessage("运行Excel出错,请确认安装了Office")

return

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11672562.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存