線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1241
推到 Plurk!
推到 Facebook!

OCX控件内使用OLE方式读写Excel

尚未結案
guoqz
一般會員


發表:4
回覆:10
積分:2
註冊:2004-06-28

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-06-28 18:35:57 IP:61.51.xxx.xxx 未訂閱
自己开发的一个Active控件,内部需要读写Excel文件,使用OLE方式操作。 创建Excel应用如下: ExcelApp = CreateOleObject("Excel.Application"); //ExcelApp = Variant::CreateObject("Excel.Application"); 但是系统提示: EAccessViolation。 不知道为何? 请大家指教。
bluetree999
一般會員


發表:7
回覆:7
積分:2
註冊:2004-04-02

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-07-07 19:45:19 IP:218.168.xxx.xxx 未訂閱
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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-07-12 08:44:19 IP:61.48.xxx.xxx 未訂閱
这种方法在应用程序中使用的时候没有问题。但是在自制的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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-07-12 08:48:28 IP:61.48.xxx.xxx 未訂閱
上面的那段程序可以显示“创建 Excel 对象”。但是还没有提示“使Excel启动后不可见”就出现错误。 表示ExcelApp = Variant::CreateObject("Excel.Application");这句话又问题,不知道为什么?
系統時間:2024-05-14 12:12:32
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!