query2.First;
  for c1:=1 to query2.RecordCount do
   begin
  d4:=1;
  for b1:=2 to query2.Fields.Count do
    beginif  not Query2.FieldByName('bjds12').IsNull then
         begin         JpegMap:=TJpegImage.Create;
         blobstream:=TBlobStream.Create(TBlobField(Query2.FieldByName('bjds12')),bmRead);
        try         JpegMap.LoadFromStream(blobstream);         dbImage1.Picture.BitMap.Assign(JpegMap);
     //    dbimage1.Picture.Bitmap.Height:=210;
     //    dbimage1.Picture.Bitmap.Width:=202;
         dbimage1.CopyToClipboard;         excelworkSheet1.Range[excelworksheet1.cells.item[b3+9,2],excelworksheet1.Cells.item[b3+9,2]].Select;         excelworksheet1.Paste;
            finally
         jpegmap.free;
         blobstream.free;
       end;
       end
       else
       dbimage1.picture:=nil;
       b3:=b3+11;
       end;
       if c1=3 then
       begin
        b3:=b3+10;
        end;
      if (((c1 mod 3)=0) and (c1<>3))then
       begin
       b3:=b3+15;
       end;
       query2.Next;
    end;
  end;
這是我寫的原代碼,就是沒辦法在excel當中放小.不知道是不是excelworksheet1這個東東不支持呀..我錄了段宏想代里面的代碼但就是代不上.不知道為什么請各位指點一下吧.

解决方案 »

  1.   

    我是用dbimage當中的圖像复制到excel指定的單元格當中,便是沒有辦法控制圖片的大小.
    ActiveWindow.SmallScroll ToRight:=2
        ActiveWindow.SmallScroll Down:=6
        Selection.ShapeRange.ScaleWidth 0.39, msoFalse, msoScaleFromTopLeft
        Selection.ShapeRange.ScaleHeight 0.39, msoFalse, msoScaleFromTopLeft
        ActiveWindow.SmallScroll Down:=-6
    我把它改為
    excelworkSheet1.shapes.rang[].ShapeRange.ScaleHeight(0.35,msoFalse, msoScaleFromTopLeft);
     excelworkSheet1.shapes.rang[].ShapeRange.ScaleWidth(0.35,msoFalse, msoScaleFromTopLeft);
    定義,msoFalse, msoScaleFromTopLeft:olevariant;
    不知哪里不對.
      

  2.   

    //参考如下代码
    //主要是利用OleVariant变量实现
    uses Clipbrd, Office2000;procedure TForm1.Button1Click(Sender: TObject);
    var
      vSelection: OleVariant;
    begin
      Image1.Picture.LoadFromFile('c:\winnt\Greenstone.bmp');
      Clipboard.Assign(Image1.Picture.Bitmap);
      ExcelApplication1.Connect;
      ExcelApplication1.Visible[0] := True;
      ExcelApplication1.Workbooks.Add(Null, 0);
      ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks[1]);
      ExcelWorksheet1.ConnectTo(ExcelWorkbook1.Worksheets[1] as _Worksheet);  ExcelWorksheet1.Range[ExcelWorksheet1.Cells.Item[9, 2],
        ExcelWorksheet1.Cells.Item[9, 2]].Select;
      ExcelWorksheet1.Paste;  vSelection := ExcelApplication1.Selection[0];
      vSelection.ShapeRange.ScaleWidth(0.53, msoFalse, msoScaleFromTopLeft);
      vSelection.ShapeRange.ScaleHeight(0.53, msoFalse, msoScaleFromTopLeft);
      ExcelWorksheet1.Disconnect;
      ExcelWorkbook1.Disconnect;
      ExcelApplication1.Disconnect;
    end;