全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1427
推到 Plurk!
推到 Facebook!

如何正确的向打开的excel文件写入数据?

尚未結案
ffprince
初階會員


發表:66
回覆:62
積分:25
註冊:2003-08-16

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-03-28 20:10:21 IP:218.85.xxx.xxx 未訂閱
小弟作了一个程式:打开一张excel表格,往里面填数据。但是有个问题,如果原先已经开着若干excel文件,那么数据可能就会写错文件了。小弟试了以下两种方法,可是运行时都报错(无效索引)。不知有何良策? 1、 var thisbook:integer; ExcelID:variant; …… thisbook:=ExcelApplication1.Workbooks.Count 1; ExcelID := CreateOleObject('Excel.Application'); ExcelID.Visible := true; ExcelID.Workbooks.Open('D:\myexcel.xls'); ExcelID:=ExcelApplication1.Workbooks[thisbook].Worksheets[1]; 2、 var ExcelID:variant; …… if ExcelApplication1.Workbooks.Count<>0 then showmessage(请关闭您现在正在使用的EXCEL程序!); ExcelApplication1.quit; ExcelApplication1.disconnect; ExcelWorksheet1.disconnect; ExcelWorkbook1.Disconnect; ExcelID := CreateOleObject('Excel.Application'); ExcelID.Visible := true; ExcelID.Workbooks.Open('D:\myexcel.xls'); ExcelID:=ExcelApplication1.Workbooks[1].Worksheets[1];
ko
資深會員


發表:28
回覆:785
積分:444
註冊:2002-08-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-03-31 18:51:23 IP:61.221.xxx.xxx 未訂閱
ffprince 你好: 其實我也想知道 ffprince兄上述2種方法是在行錯誤 可以告知嗎
------
======================
昏睡~
不昏睡~
不由昏睡~
ffprince
初階會員


發表:66
回覆:62
積分:25
註冊:2003-08-16

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-04-03 18:17:53 IP:218.5.xxx.xxx 未訂閱
引言: ffprince 你好: 其實我也想知道 ffprince兄上述2種方法是在行錯誤 可以告知嗎
这位大哥是问那行出错吗?是取第几个工作簿的第几张表这行运行时出错 ExcelID:=ExcelApplication1.Workbooks[thisbook].Worksheets[1]; 我试过,此时用这个也不行 ExcelID:=ExcelApplication1.Workbooks[1].Worksheets[1];
ffprince
初階會員


發表:66
回覆:62
積分:25
註冊:2003-08-16

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-04-04 12:04:43 IP:61.154.xxx.xxx 未訂閱
是不是在适当的时候使用GetActiveOleObject代替CreateOleObject可以解决?
terrychen
尊榮會員


發表:90
回覆:794
積分:501
註冊:2003-05-01

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-04-05 08:39:31 IP:61.221.xxx.xxx 未訂閱
您好: 小弟都這樣使用,試試看     
    Try
      xlsApp:= CreateOleObject('Excel.Application');
      WorkBook:= CreateOleobject('Excel.Sheet');
    Except
      ShowMessage('請先安裝 Microsoft Excel 再執行本程式!');
      WorkBook.Close;         //關閉EXCEL
      xlsApp.Quit;            //退出Excel Application
      xlsApp:=Unassigned;     //free VARIANT
      Exit;
    End;
    WorkBook:= xlsApp.workBooks.Open(OpenDialog1.FileName);
    WorkBook.sheets[1].Select; 
.......................
    WorkBook.Close;         //關閉EXCEL
    xlsApp.Quit;            //退出Excel Application
    xlsApp:=Unassigned;     //free VARIANT
~~應無所住而生其心~~ 發表人 - Terrychen 於 2004/04/05 08:40:41
ffprince
初階會員


發表:66
回覆:62
積分:25
註冊:2003-08-16

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-04-05 14:36:12 IP:218.85.xxx.xxx 未訂閱
多谢大侠指点,不过我已试过用GetActiveOleObject确实有效!可以这样实现对新开的EXCEL文件写入数据: var thisbook:integer; ExcelID:variant; …… thisbook:=ExcelApplication1.Workbooks.Count 1; ExcelID:=GetActiveOleObject('Excel.Application'); ExcelID.Visible:=true; ExcelID.Workbooks.Open('D:\myexcel.xls'); ExcelID:=ExcelApplication1.Workbooks[thisbook].Worksheets[1];
系統時間:2024-07-01 4:08:02
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!