OleContainer如何导入当前已经连接excle的Variant变量?如何判断excel的一个cell里面有字段占用几行? (200分)

  • 主题发起人 主题发起人 jeremy_z
  • 开始时间 开始时间
J

jeremy_z

Unregistered / Unconfirmed
GUEST, unregistred user!
程序原来已经调用
EclApp := CreateOleObject('Excel.Application');
EclApp.workBooks.Open(ExtractFilePath(application.ExeName) + 'ISSAdvise.xls');
我现在要把它显示在olecontainer中!
而不能调用
OleContainer1.CreateObjectFromFile(ExtractFilePath(application.ExeName) + 'ISSAdvise.xls',false);
OleContainer1.DoVerb(0);
因为我要打开同一个文件,但是excel不允许同时打开一个文件!
我应该怎么做呢?
还有我要避免重复调用
EclApp := CreateOleObject('Excel.Application');
EclApp.workBooks.Open(ExtractFilePath(application.ExeName) + 'ISSAdvise.xls');
如在某些过程里面已经连接了excel,其它过程能不能不用创建新的而直接调用已经连接上的
我知道如果连接excel的Variant变量设置为public然后调用可以,
但是我想知道如何连接已经存在的excel,而不是新建立一个连接。
两个问题,一个100分!
谢谢
 
EclApp := GetActiveOleObject('Excel.Application')用来判断是否有Excel程序运行
 
[red]程序原来已经调用
EclApp := CreateOleObject('Excel.Application');
EclApp.workBooks.Open(ExtractFilePath(application.ExeName) + 'ISSAdvise.xls');
我现在要把它显示在olecontainer中![/red]

[blue]没有办法显示在OleContainer中[/blue]

而不能调用
OleContainer1.CreateObjectFromFile(ExtractFilePath(application.ExeName) + 'ISSAdvise.xls',false);
OleContainer1.DoVerb(0);
因为我要打开同一个文件,但是excel不允许同时打开一个文件!
 
heqian:
那么你知道如何能够连接上那个excel,而不用重新建立连接吗?
谢谢!
 
EclApp := GetActiveOleObject('Excel.Application')用来判断是否有Excel程序运行
如果只有一个EXCEL运行
用以上语句就可以连接上!!
 
CreateLinkToFile会使用同一个连接
 
那么OleContainer如何调用已经存在的连接呢?
 
看来OleContainer调用已经存在的连接,是不行了!
这100分给下面这个问题
谁知道如何判断一个excel表格的cell的内容里面有多少行?
我知道表格是设置为自动换行的,现在我要通过程序来控制它,我可以改变它的行高,
可是我不知道如何判断它占用了多少行!
 
procedure TForm1.Button2Click(Sender: TObject);
var ActiveCell:OleVariant;
s:string;
sl:TStrings;
begin
OleContainer1.DoVerb(0);
ActiveCell:=OleContainer1.OleObject.Application.ActiveCell;
s:=ActiveCell;
ShowMessage(s);
sl:=TStringList.Create;
sl.Text:=s;
ShowMessage(IntToStr(sl.Count));
sl.free;
end;
 
menxin:
不行啊,无论多少行,打出来的都是1
 
自动换行可没试过
 
excel的列宽是以缺省字体字符个数为计量单位
用Length(Range.Text) / Range.ColumnWidth
可以得出字符需要占几行
 
喔,是吗?我说怎么读出来的range.width那么怪!我明天试试,如果可以就结帖!
 
后退
顶部