OCX控件内使用OLE方式读写Excel |
尚未結案
|
guoqz
一般會員 發表:4 回覆:10 積分:2 註冊:2004-06-28 發送簡訊給我 |
|
bluetree999
一般會員 發表:7 回覆:7 積分:2 註冊:2004-04-02 發送簡訊給我 |
1、Excel中常用的物件是:Application,Workbooks,Worksheets等。
(1) 創建應用物件:如:
Variant ex;
ex=Variant::CreateObject ("Excel.Application");
或者 ex=CreateOleObject ("Excel.Application");
(2) 創建工作簿物件:
Variant wb;
wb=ex.OlePropertyGet("ActiveWorkBook");
(3) 創建工作表物件:
Variant sheet;
sheet=wb.OlePropertyGet("ActiveSheet");
(4) 創建區域物件:
Variant range;
range=sheet.OlePropertyGet("Range","A1:A10");
(5) 可見物件:
ex.OlePropertySet("Visible",true);
|
guoqz
一般會員 發表:4 回覆:10 積分:2 註冊:2004-06-28 發送簡訊給我 |
这种方法在应用程序中使用的时候没有问题。但是在自制的OCX控件中就提示错误。
或者是我的写法有错误,这是我在控件中作测试的一个函数,不知道是否有问题。 void test(void)
{
String ExcelFile = "D:\\test.xls";
Variant ExcelApp,ExcelWorkBook,ExcelSheet; try
{
// 创建 Excel 对象
//ExcelApp = CreateOleObject("Excel.Application");
ExcelApp = Variant::CreateObject("Excel.Application");
ShowMessage("创建 Excel 对象"); ExcelApp.OlePropertySet("Visible",(Variant)false); //使Excel启动后不可见
ShowMessage("使Excel启动后不可见");
// 打开指定的文件
ExcelApp.OlePropertyGet("WorkBooks").OleProcedure("Open",ExcelFile.c_str() );
ShowMessage("打开指定的文件"); // 获得工作表格
ExcelWorkBook = ExcelApp.OlePropertyGet("ActiveWorkBook");
// 获得工作区域
ExcelSheet=ExcelWorkBook.OlePropertyGet("ActiveSheet"); ShowMessage("获得工作区域");
//Sh1=Wb.OlePropertyGet("Sheet3"); //Edit1->Text = ExcelSheet.OlePropertyGet("Cells",1,1).OlePropertyGet("Value");
for (int i=6;i<=20;i )
{
for (int j=1;j<=10;j )
{
ExcelSheet.OlePropertyGet("Cells",i,j).OlePropertySet("Value",i*100 j);
}
} ExcelWorkBook.OleProcedure("Save"); // 保存表格
ShowMessage("保存表格");
ExcelWorkBook.OleProcedure("Close"); // 关闭表格
ShowMessage("关闭表格");
ExcelApp.OleFunction("Quit"); // 退出Excel
ShowMessage("退出Excel"); }
catch(Exception &e)
{
MessageBox(NULL,e.Message.c_str() ,"操作Excel文件",MB_ICONINFORMATION MB_OK MB_TASKMODAL);
} }
|
guoqz
一般會員 發表:4 回覆:10 積分:2 註冊:2004-06-28 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |