关于Excel打印预览问题看者有分,就这么多分了 ( 积分: 50 )

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

jiangzhang3942

Unregistered / Unconfirmed
GUEST, unregistred user!
我写了下面的代码
procedure TForm1.Button1Click(Sender: TObject);
var
openfilename : string;
begin
OpenFileName := 'c:/book1.xls';
OleContainer1.CreateObjectFromFile(OPenFileName,FALSE);
OleContainer1.DoVerb(ovShow);
MExceL:=OleContainer1.OleObject;
MExceL.Application.CommandBars['Standard'].Visible:= False;
MExceL.Application.CommandBars['Formatting'].Visible:=false;
MExceL.application.ActiveSheet.Preview;
end;
时报错请问打印预览的那句代码怎么写呀
 
我写了下面的代码
procedure TForm1.Button1Click(Sender: TObject);
var
openfilename : string;
begin
OpenFileName := 'c:/book1.xls';
OleContainer1.CreateObjectFromFile(OPenFileName,FALSE);
OleContainer1.DoVerb(ovShow);
MExceL:=OleContainer1.OleObject;
MExceL.Application.CommandBars['Standard'].Visible:= False;
MExceL.Application.CommandBars['Formatting'].Visible:=false;
MExceL.application.ActiveSheet.Preview;
end;
时报错请问打印预览的那句代码怎么写呀
 
MExceL.application.ActiveSheet.PrintPreview;
 
也就是怎样掉出excel的预览窗口呀
 
不是给你写了么??
 
用 Anylib 做报表
http://www.anylib.com
 
不行呀大哥,你不信试一下呀,其中用了OleContainer倥件
 
//OleContainer 激活的情况下不能预览,需要改一下:
procedure TForm1.Button1Click(Sender: TObject);
var
OpenFileName : string;
begin
OpenFileName := 'c:/book1.xls';
OleContainer1.CreateObjectFromFile(OPenFileName, False);
OleContainer1.AllowActiveDoc := False;
OleContainer1.AllowInPlace := False;
OleContainer1.DoVerb(ovShow);
MExcel := OleContainer1.OleObject;
MExcel.ActiveSheet.PrintPreview;
end;
 
小弟是想调出Excel的打印预览窗口不是Excel窗口呀,但是我试了大哥您的代码是调出的EXcel窗口呀,求大哥在帮帮忙好吗
 
1、能调出打印预览窗口啊,你用我的代码啊:
procedure TForm1.Button1Click(Sender: TObject);
var
OpenFileName : string;
begin
OpenFileName := 'c:/book1.xls';
OleContainer1.CreateObjectFromFile(OPenFileName, False);
OleContainer1.AllowActiveDoc := False;
OleContainer1.AllowInPlace := False;
OleContainer1.DoVerb(ovShow);
MExcel := OleContainer1.OleObject;
MExcel.ActiveSheet.PrintPreview;
end;
2、另外打印预览窗口不能嵌入到 OleContainer 里。
 
我想咱俩想的不一样,刚才我试了一下,执行的是调用整个excel呀,还要点击一下excel的打印预览按钮才能打印预览呀
能不能直接就调用打印预览窗口而不用调用整个excel然后在点击一下excel的打印预览按钮,因为调用整个Excel文档我早就实现了,帮帮忙好吗,在您的机子上运行一下好吗,万分感谢,不管能不能行,都非常感谢
 
我知道了,可能你的 MExcel 是个控件吧,我没用控件。
procedure TForm1.Button1Click(Sender: TObject);
var
OpenFileName: string;
MExcel: OleVariant;
begin
OpenFileName := 'c:/book1.xls';
OleContainer1.CreateObjectFromFile(OPenFileName, False);
OleContainer1.AllowActiveDoc := False;
OleContainer1.AllowInPlace := False;
OleContainer1.DoVerb(ovShow);
MExcel := OleContainer1.OleObject;
MExcel.ActiveSheet.PrintPreview;
end;
这个过程只需要 OleContainer 参与,我试过没问题。
 
老大,你真的是在调用Excel文档,咱俩是不是理解错了,我不想调用Excel文档,我会调用excel文档,只是不会调用excel的浏览窗口
 
哥们,我知道你很急,不过错误可能不在编程上,没出现预览窗口的原因很多:
1、Excel 工作薄必须有可打印内容(也就是表格里要有点东西,不能是空的),才会出现预览窗口;
2、必须装上打印机驱动才能打开预览窗口,这个不多说了。
如果存在上述情况,只会弹出 Excel 文档而不会弹出预览窗口。
3、可能我理解错了,不过在我这确实没问题。调试环境:Windows XP + Delphi 7.0 + Office XP。
 
try
ExcelApp := CreateOleObject('Excel.Application');
//创建 Excel 对象
ExcelApp.caption:=title;
//更改 Excel 标题栏
{ FWillWriteHead := true;
if FileExists(FileName) then
DeleteFile(FileName);
aFileStream := TFileStream.Create(FileName, fmCreate);
Try
Save2Stream(aFileStream);
Finally
aFileStream.Free;
end;
}
ExcelApp.workBooks.Open(FileName);
// ExcelApp.WorkBooks.Add;
//添加新工作簿
except
showMessage('提示:'+#13#13+'你没有装Excel!');
exit;
end;
ExcelApp.visible:= true;
//显示当前窗口:
Application.ProcessMessages;
// 设置第1个工作表为活动工作表:
ExcelApp.WorkSheets[1].Activate;
//或
// ExcelApp.WorksSheets[ 'Sheet1' ].Activate;
//ExcelApp.WorkSheets['第四章'].activate;
//打开名为第四章的工作表
Sheet := ExcelApp.WorkSheets[1];
Sheet.PageSetup.Orientation:= Orientation;
////横向打印 2
Sheet.PageSetup.CenterHorizontally := HorToCenter;
//是否水平居中
Sheet.PageSetup.CenterVertically := VerToCenter;
//是否垂直居中
//选择画表格线的范围 //速度快
Range:=Sheet.Range[Sheet.cells[1,1].Address+':'
+Sheet.cells[dataset.RecordCount+1,dataset.FieldCount].Address];
Range.Borders.LineStyle:=1;
Range.Font.Name:=ContentFontName;
//设置字体和大小
Range.Font.Size:=StrToInt(ContentFontSize);
ExcelApp.ActiveSheet.Rows[1].Font.Name:= HeaderFontName;
ExcelApp.ActiveSheet.Rows[1].Font.Size:= StrToInt(HeaderFontSize);
Sheet.Cells.Columns.AutoFit;
//自动调整列宽
ExcelApp.ActiveSheet.Rows[1].RowHeight := 1/0.035/2;
// 1厘米
ExcelApp.ActiveSheet.PageSetup.CenterHeader := title;
ExcelApp.ActiveSheet.PageSetup.CenterHeader := '&' + '"' +
titleFontName+',加粗' + '"' + '&'+titleFontSize+title;
//b.页脚:
ExcelApp.ActiveSheet.PageSetup.CenterFooter := '第&P页';
//c.页眉到顶端边距0.5cm:
// ExcelApp.ActiveSheet.PageSetup.HeaderMargin := 0.5/0.035;
ExcelApp.ActiveSheet.PrintPreview;
 
谢谢大家,我知道了
尤其是vvyang,十分的感谢您,还有delfier我没有那么多分只有这些了
再次感谢
 
多人接受答案了。
 
后退
顶部