我用TWordDocument打开一个word文件拷贝到剪贴板中,再保存为bmp文件
主要步骤如下:
   1。WordDoc.Range.CopyAsPicture;
   2。Image1.Picture.Assign(Clipboard);
   3。Image1.Picture.SaveToFile(SaveDialog1.FileName);
保存后系统不认识保存的文件,但是用ACDSee工具可以打开。
我又测试Image1.Picture直接加载一个正常的bmp文件在保存,系统可以认识并打开
我再测试用考屏键保存屏幕,再用我的程序保存(执行 截屏,2,3 步骤)系统也可以认识并打开,我想问,是否是word的剪切板的问题。如何解决。对了,保存成的文件好想少了bmp头信息,如何处理?

解决方案 »

  1.   

    我帮你写了函数,你用看看吧。
    {向Excel中插入图片的函数}
    procedure PasteImage(MyWorkSheet: TExcelWorksheet; PasPicture: Tpicture);
    var
     Adata: Thandle; //临时句柄变量。
     Apalette: HPALETTE; //临时变量。
     MyFormat: Word; //Word类型变量
     TempImage: Timage; //Image类型的临时变量。
    begin
     TempImage := Timage.Create(application);//产生一个Image的实例。
     TempImage.Parent := nil;
     TempImage.Picture.Assign(PasPicture); //给实例付值。
    try
     TempImage.Picture.SaveToClipboardFormat(MyFormat, Adata, Apalette);//把剖面图发送到剪贴板,设定句柄。
     ClipBoard.SetAsHandle(MyFormat, Adata);
    finally
     MyWorkSheet.Paste;//把剪贴板上的图片贴到Excel的当前位置。
    end;
    end;{调用时}
      tempPicture := TPicture.Create;
      tempPicture.LoadFromFile('c:\xx\xx.jpg');//从文件调JPG图片,必须uses Jpeg单元,否则delphi不认JPG图。
      ExcelWorksheet1.Cells.Item[i,j].Select;//移动到要插入的单元格
      PasteImage(DM.ExcelWorksheet1,tempPicture);//粘贴图片