是不是NT server不支持?(100分)

  • 主题发起人 主题发起人 pine_ant
  • 开始时间 开始时间
P

pine_ant

Unregistered / Unconfirmed
GUEST, unregistred user!
我在delphi里用excelapplication控件调用excel(操作系统是nt server),
报错:interface not suppoted
me,nt workstation没有问题,
请问是不是nt server无法调用,如果可以怎样修改
 
看看两者软件环境是否一致
interface not supported 这个错误比较烦,
1:用户无权限访问
2:接口不存在
 
本机超级用户运行应该有权限
接口不存在是什么意思,怎样查看及设置
 
接口不存在的话,可能是NT里没装到有EXCEL:)
 
调用Excel,我的系统里会没有装Excel!!!!!!!!!!!!!
 
我想不是你的Excel不存在,而是你的用法不正确,请看下面:
(1)首先确保你已经正确安装了Excel;
(2)在一个窗体上放一个TExcelApplication,命名ExcelApplication1;
(3)放一个TButton,命名Button1;

unit Unit1;

interface

uses
; Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
; Excel97, StdCtrls, OleServer;

type
; TForm1 = class(TForm)
; ; Button1: TButton;
; ; ExcelApplication1: TExcelApplication;
; ; procedure Button1Click(Sender: TObject);
; private
; ; { Private declarations }
; public
; ; { Public declarations }
; end;

var
; Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
begin
//
{ ;with CoExcelApplication.Create do
; begin
; ; Visible:=True;
; end;}//也可以使用注释的这段代码;
; ExcelApplication1.Visible:=True;

end;

end.
 
首先其他操作系统程序正常运行
其次 ;
; try
; ; ExcelApplication1 := TExcelApplication.Create(Self);
; ; ExcelWorkbook1 := TExcelWorkbook.Create(Self);
; ; ExcelWorkSheet1 := TExcelWorksheet.Create(Self);
; except
; ; Application.MessageBox('对不起,您没有安装Excel !','错误',MB_OK+MB_ICONERROR);
; ; Abort;
; end;
; ExcelApplication1.Connect; ;//报错
 
我想不是你的Excel不存在,而是你的用法不正确,请看下面:
(1)首先确保你已经正确安装了Excel;
(2)在一个窗体上放一个TExcelApplication,命名ExcelApplication1;
(3)放一个TButton,命名Button1;

unit Unit1;

interface

uses
; Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
; Excel97, StdCtrls, OleServer;

type
; TForm1 = class(TForm)
; ; Button1: TButton;
; ; ExcelApplication1: TExcelApplication;
; ; procedure Button1Click(Sender: TObject);
; private
; ; { Private declarations }
; public
; ; { Public declarations }
; end;

var
; Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
begin
//
{ ;with CoExcelApplication.Create do
; begin
; ; Visible:=True;
; end;}//也可以使用注释的这段代码;
; ExcelApplication1.Visible:=True;

end;

end.
 
ExcelApplication1.Visible:=True;不对
ExcelApplication1.Visible[0]:=True;
还是不行
 
Var ExcelApp: Variant;
begin
; try
; begin
; ; ExcelApp:= CreateOleObject('Excel.application');
; ; excelapp.visible:=true;
; ; ExcelApp.workbooks.add;
; end
; finally
; ; ExcelApp.Free;
; end;
end;
 
这种用法和TExcelApplication有什么区别
另外excelapp.free报错
 
应该是你的Office版本不匹配,导致接口错误

CreateOleObject 是所谓 late binding,编译时不检查接口,全部在运行器检查,效率低。
Delphi的 Server Component 是所谓的早期绑定,编译器会检查代码接口操作的合法性的

一般com程序员混合使用这两种方式,比如
FIXMLDOMDocument := CreateComObject(Class_DomDocument) as IXMLDOMDocument;
 
虽然不很明白,谢了!
 
后退
顶部