DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: rlatershee
今日帖子: 43
在线用户: 14
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
男 asdfzxcv66 (asdfzxcv) ▲▲▲▲▲ -
注册会员
2019/2/11 13:07:13
标题:
如何将Excel中的图片显示到image控件中(我是把Excel作为数据库),谢谢 浏览:267
加入我的收藏
楼主: procedure TForm2.BitBtn2Click(Sender: TObject);
var
  i, num: Integer;
 
begin
adoQuery2.close;
adoQuery2.SQL.Clear;
adoQuery2.SQL.Add('select * from [题库$] ');     //'+'"%'+edit62.Text+'%"
adoQuery2.Open;

Randomize;   //初始化随机数;
for i :=1 to adoQuery2.RecordCount  do
begin
num := random(adoQuery2.RecordCount);   //生成随机数;
adoQuery2.Recno := num+1;          //定位到随机数所指记录;
richedit1.text  :=ADOQuery2.FieldByName('题目').AsString;
richedit2.text  :=ADOQuery2.FieldByName('答案').AsString;
//下面如何将Excel中的图片显示到image1控件中,ADOQuery2.FieldByName('图片').AsString



  end;
end;
end;
----------------------------------------------
-
作者:
男 wntee (wntee) ▲▲△△△ -
注册会员
2019/2/11 14:32:03
1楼: function OpenCdsExcel(AFileName: string; var ACds: TClientDataSet; FieldsStr: string): Boolean;
var
  fileext: string;
  MyTableName: string;
  MyProvider: TDataSetProvider;
  MyQuery: TADOQuery;
  MyAdo: TADOConnection;
  MyList: TStrings;
begin
  Result := False;
  ACds.Close;
  MyList := TStringList.Create;
  MyAdo := TADOConnection.Create(nil);
  MyQuery := TADOQuery.Create(nil);
  MyProvider := TDataSetProvider.Create(nil);
  try
    //连接excel
    fileext := ExtractFileExt(AFileName);

    if LowerCase(fileext) = '.xls' then
    begin
      MyAdo.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;' + 'Data Source= ' + AFileName + ';' +
        'Extended Properties=''Excel 8.0;HDR=Yes;IMEX=1;' + 'Persist Security Info=false'''
    end
    else if LowerCase(fileext) = '.xlsx' then
    begin
      MyAdo.ConnectionString := 'Provider=Microsoft.Ace.OLEDB.12.0;' + 'Data Source= ' + AFileName + ';' +
        'Extended Properties=''Excel 12.0;HDR=Yes;IMEX=1;' + 'Persist Security Info=false'''
    end
    else
    begin
      MsgBox('不支持的文件类型!');
      Exit;
    end;

    MyAdo.LoginPrompt := False;
    MyAdo.Connected := True;

    //获取第一个工作簿的名称
    MyAdo.GetTableNames(MyList, False);
    if MyList.Count <= 0 then
      Exit; //如果没有工作簿,那么退出
    MyTableName := MyList[0];

    //查询第一个工作簿的信息
    MyProvider.DataSet := MyQuery;
    MyQuery.Connection := MyAdo;
    if FieldsStr <> '' then
      MyQuery.SQL.Text := 'select ' + FieldsStr + ' from [' + MyTableName + ']'
    else
      MyQuery.SQL.Text := 'select * from [' + MyTableName + ']';

    MyQuery.Open;

    //数据赋值
    ACds.Data := MyProvider.Data;

    Result := True;
  finally
    MyQuery.Close;
    MyAdo.Close;
    MyList.Free;
    MyProvider.Free;
    MyQuery.Free;
    MyAdo.Free;
  end;
end;



看着改
----------------------------------------------
当前后左右都没有路时,命运一定是鼓励你向上飞了...
作者:
男 asdfzxcv66 (asdfzxcv) ▲▲▲▲▲ -
注册会员
2019/2/11 14:42:57
2楼: wntee (wntee)  我没看明白,我要将Excel中的图片显示到image控件中。
----------------------------------------------
-
作者:
男 asdfzxcv66 (asdfzxcv) ▲▲▲▲▲ -
注册会员
2019/2/12 8:40:00
3楼: 谁会?帮帮忙
----------------------------------------------
-
作者:
男 bahamut8348 (leonna) ★☆☆☆☆ -
普通会员
2019/2/12 9:13:42
4楼: excel支持图片??

如果是用ado的话,可以用流的方式去读写图片。

q: tadoquery;
s: tmemorystream;
b: tbitmap;
...
a.fieldbyname(...).savetostream(s);
b.loadfromstream(s);
...

类似这样
----------------------------------------------
--
作者:
男 asdfzxcv66 (asdfzxcv) ▲▲▲▲▲ -
注册会员
2019/2/12 12:12:15
5楼: bahamut8348 (leonna) 谢谢,我试一试
----------------------------------------------
-
作者:
男 he_19_79 (he) ▲▲▲▲△ -
注册会员
2019/2/12 16:01:28
6楼: 如果实在没办法,把图片拷贝到剪贴板。

(这代码是我很久很久以前的程序中的,不知现在是否还可以用)

      if ExcelApp.ActiveSheet.Pictures.Count > 0 then
      begin
        TempJPEG := TJPEGImage.Create;
        TempPicture := TPicture.Create;

        try
          ExcelApp.ActiveSheet.Pictures[1].Copy;

          if Clipboard.HasFormat(CF_PICTURE) then
          begin
          TempPicture.Assign(Clipboard);

          if not TempPicture.Bitmap.Empty then
          begin
          TempJPEG.Assign(TempPicture.Bitmap);

          TempStream := TMemoryStream.Create;

          try
          TempStream.Position := 0;

          TempJPEG.SaveToStream(TempStream);

          TempStream.Position := 0;

          (FieldByName('StyleImage') as TDAField)
          .LoadFromStream(TempStream);
          finally
          TempStream.Free;
          end;
          end;
          end;
        finally
          TempPicture.Free;
          TempJPEG.Free;
        end;
      end;
----------------------------------------------
-
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v2.1 版权所有 页面执行15.625毫秒 RSS