delphi 显示EXCELL文件 用delphi 如何把EXCELL文件显示在自己程序中(例如显示在TPanel等容器控件上),但不能修改,却可以取到EXCELL文件单元格内容,就象只读的DBGrid一样。PS:不要用TOleContainer控件,这个太恶心了。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 直接当数据源来用,例如function ConnectExcel(FileName: string): Boolean;begin Result := False; FExcelConn := TADOConnection.Create(self); if FExcelConn.Connected then FExcelConn.Connected := False; FExcelConn.LoginPrompt := False ; FExcelConn.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+FileName+';Extended Properties="Excel 8.0";Persist Security Info=False'; try FExcelConn.Connected := True; Result := FExcelConn.Connected; except ShowMessage('连接['+FileName+']失败!'); end;end; 以一下供参考。用 Delphi 读取 Excel 文档:uses ComObj;function GetExcelItems(xlsFileName: string; var OutItems: TStringList): string;var i,j:Integer; eclApp:Variant;begin result:= ''; try eclApp:= CreateOleObject('Excel.Application'); eclApp.WorkBooks.Open(xlsFileName); eclApp.Visible:= False; except result:= '您的电脑中可能未安装Microsoft Excel!'; exit; end; try for i:=1 to eclApp.ActiveSheet.UsedRange.Rows.Count do begin for j:=1 to eclApp.ActiveSheet.UsedRange.Columns.Count do OutItems.Add(eclApp.Cells[i,j].Value); Memo1.Lines.Add(''); end; except result:= '读取失败!'; end; eclApp.ActiveWorkBook.close; eclApp.Quit; eclApp:=Unassigned;end; 谢谢楼上两位,我要的不是读取Excell内容,而是要Excell在自己程序中显示出来。TOleContainer一定要鼠标去双击打开激活,而且工具栏隐去也麻烦。失去焦点后又不会显示了,太恶心了。怎想不通一个强大的delphi工具竟然无法显示一个excell,真是晕啊!我找一个控件容器twebbrower可以显示Excell,可是不能控制修改! 用TF1Book控制,procedure TForm1.Button1Click(Sender: TObject);var i:smallint;s:string;begin i:=11; s:='d:\Book2.xls'; F1Book1.Read(s,i);end; 把EXCELE嵌套到PANEL上?没做过,但用OLE对象,传递个句柄上去,我想应该可以. 除了TOleContainer,好象也没有什么办法了 我看楼主有点极端TOleContainer为什么不可以.TOleContainer一定要鼠标去双击打开激活,而且工具栏隐去也麻烦。失去焦点后又不会显示了,太恶心了。 OleContainer1.CreateObjectFromFile(ExcelFile,false); OleContainer1.Run; OleContainer1.Enabled := true; OleContainer1.DoVerb(ovShow);试验以上方法,看可以自动打开激活不,自己不会,口气不少. 我看楼主有点极端 TOleContainer为什么不可以. TOleContainer一定要鼠标去双击打开激活,而且工具栏隐去也麻烦。失去焦点后又不会显示了,太恶心了。 OleContainer1.CreateObjectFromFile(ExcelFile,false); OleContainer1.Run; OleContainer1.Enabled := true; OleContainer1.DoVerb(ovShow); 试验以上方法,看可以自动打开激活不,自己不会,口气不少.---------------------我试了,自动激活是可以。失去焦点后,不能正常excel显示啊!我没有说绝对不能自动激活,我上面说了象twebbrower就能自激活,但是twebbrower不能控制, http://blog.csdn.net/soweb/archive/2008/03/14/2182678.aspxTOleContainer 焦点问题我现在的项目就是用的TOleContainer 嵌入 Excel 。自动激活、焦点显示、用VBA隐藏菜单、文档保护等,效果很好。 twebbrower 应该用在网页浏览吧,用来显示有点过头哦。其实 twebbrower也是一个COM对象,内核嵌入IE,只是没明白他是怎么做到不用TOleContainer 显示IE.而Excel也是一个COM对象,却非要一个TOleContainer 来显示。期待高手来解释 NMFTP控件是否有BUG? 关于DELPHI引用的问题 请教!WinCvs如何配置进行权限控制???? 关于在word中生成表格的问题!!! 如何让Form上的组件例如Panel随着Form的大小的变化而变化呢? 怎样解除celeon 4 1.7G 倍频锁定?BIOS的的倍频超频无效. 循环步进值控制 启耀OLAP,为商业智能提供澎湃动力 寻找SynMemo Help! 删除FoxPro 数据的新问题 把字符串写入流的代码 DataGrid如何实现同时滚动
begin
Result := False;
FExcelConn := TADOConnection.Create(self);
if FExcelConn.Connected then FExcelConn.Connected := False;
FExcelConn.LoginPrompt := False ;
FExcelConn.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+FileName+';Extended Properties="Excel 8.0";Persist Security Info=False';
try
FExcelConn.Connected := True;
Result := FExcelConn.Connected;
except
ShowMessage('连接['+FileName+']失败!');
end;
end;
var
i,j:Integer;
eclApp:Variant;
begin
result:= '';
try
eclApp:= CreateOleObject('Excel.Application');
eclApp.WorkBooks.Open(xlsFileName);
eclApp.Visible:= False;
except
result:= '您的电脑中可能未安装Microsoft Excel!';
exit;
end; try
for i:=1 to eclApp.ActiveSheet.UsedRange.Rows.Count do
begin
for j:=1 to eclApp.ActiveSheet.UsedRange.Columns.Count do
OutItems.Add(eclApp.Cells[i,j].Value);
Memo1.Lines.Add('');
end;
except
result:= '读取失败!';
end;
eclApp.ActiveWorkBook.close;
eclApp.Quit;
eclApp:=Unassigned;
end;
TOleContainer一定要鼠标去双击打开激活,而且工具栏隐去也麻烦。失去焦点后又不会显示了,太恶心了。怎想不通一个强大的delphi工具竟然无法显示一个excell,真是晕啊!我找一个控件容器twebbrower可以显示Excell,可是不能控制修改!
procedure TForm1.Button1Click(Sender: TObject);
var i:smallint;
s:string;
begin
i:=11;
s:='d:\Book2.xls';
F1Book1.Read(s,i);
end;
TOleContainer为什么不可以.
TOleContainer一定要鼠标去双击打开激活,而且工具栏隐去也麻烦。失去焦点后又不会显示了,太恶心了。 OleContainer1.CreateObjectFromFile(ExcelFile,false);
OleContainer1.Run;
OleContainer1.Enabled := true;
OleContainer1.DoVerb(ovShow);试验以上方法,看可以自动打开激活不,自己不会,口气不少.
TOleContainer为什么不可以.
TOleContainer一定要鼠标去双击打开激活,而且工具栏隐去也麻烦。失去焦点后又不会显示了,太恶心了。 OleContainer1.CreateObjectFromFile(ExcelFile,false);
OleContainer1.Run;
OleContainer1.Enabled := true;
OleContainer1.DoVerb(ovShow); 试验以上方法,看可以自动打开激活不,自己不会,口气不少.---------------------
我试了,自动激活是可以。失去焦点后,不能正常excel显示啊!我没有说绝对不能自动激活,我上面说了象twebbrower就能自激活,但是twebbrower不能控制,
TOleContainer 焦点问题我现在的项目就是用的TOleContainer 嵌入 Excel 。自动激活、焦点显示、用VBA隐藏菜单、文档保护等,效果很好。
而Excel也是一个COM对象,却非要一个TOleContainer 来显示。
期待高手来解释