通过程序预览Office文档

时间:2023-03-09 17:21:51
通过程序预览Office文档

我承认,标题是夸大了,就是为了吸引注意力。这里只有Word文档和Excel文档的预览代码。

Word:
//此部分来源:http://princed.mblogger.cn/posts/11885.aspx
//uses ActiveX;
procedure TForm1.MenuPreviewClick(Sender: TObject);
var
    IOO: IOleInPlaceObject ;
begin
    OleContainer1.DoVerb(ovShow);
    if OleContainer1.State in [osUIActive] then
    begin
        OleContainer1.OleObjectInterface.QueryInterface(IOleInPlaceObject,IOO);
        IOO.UIDeactivate;
        IOO :=nil;
    end;
    OleContainer1.OleObject.PrintPreview;
    OleContainer1.DoVerb(ovShow);
    OleContainer1.Align := OleContainer1.Align;
end;

Excel:
//Excel可以通过把OleContainer1.OleObject.PrintPreview换成OleContainer1.OleObject.ActiveSheet.PrintPreview显示预览窗,但预览窗体严重走位,更严重的是程序没有是响应。
//正确的做法是:
procedure TForm1.MenuPreviewClick(Sender: TObject);
var
    ExcelApp: Variant;
begin
    ExcelApp := CreateOleObject( 'Excel.Application' );
    ExcelApp.WorkBooks.Open( FileName{文件名} );
    ExcelApp.Visible:=True;
    ExcelApp.ActiveSheet.PrintPreview;
    ExcelApp.WorkBooks.Close;
    ExcelApp.Quit;
end;

http://blog.****.net/nhconch/article/details/497352