请问如何根据图片路径把图片导出到excel或word? |
答題得分者是:timhuang
|
jtp
初階會員 發表:39 回覆:81 積分:29 註冊:2003-04-20 發送簡訊給我 |
|
jtp
初階會員 發表:39 回覆:81 積分:29 註冊:2003-04-20 發送簡訊給我 |
|
timhuang
尊榮會員 發表:78 回覆:1815 積分:1608 註冊:2002-07-15 發送簡訊給我 |
請問你存的是路徑還是圖檔的內容?
若是路徑的話, 可以配合 Pictures.Insert 來寫, 程式如下:
procedure TForm1.Button1Click(Sender: TObject); var excel, wb, ws: Variant; begin excel := CreateOleObject('Excel.Application'); wb := excel.WorkBooks.Add; ws := wb.WorkSheets[1]; ws.Pictures.Insert( 'C:\Sample.jpg'); excel.Visible:=true; end; |
jtp
初階會員 發表:39 回覆:81 積分:29 註冊:2003-04-20 發送簡訊給我 |
引言: 請問你存的是路徑還是圖檔的內容? 若是路徑的話, 可以配合 Pictures.Insert 來寫, 程式如下:procedure TForm1.Button1Click(Sender: TObject); var excel, wb, ws: Variant; begin excel := CreateOleObject('Excel.Application'); wb := excel.WorkBooks.Add; ws := wb.WorkSheets[1]; ws.Pictures.Insert( 'C:\Sample.jpg'); excel.Visible:=true; end;运行不了 [Warning] caseembryo1.pas(335): Variable 'ImageH' might not have been initialized [Error] caseembryo1.pas(1427): Undeclared identifier: 'CreateOleObject' [Fatal Error] main.dpr(93): Could not compile used unit 'samplespic\caseembryo1.pas' 请问该如何处理,是不是要先声明变量,怎么声明啊 |
timhuang
尊榮會員 發表:78 回覆:1815 積分:1608 註冊:2002-07-15 發送簡訊給我 |
|
jtp
初階會員 發表:39 回覆:81 積分:29 註冊:2003-04-20 發送簡訊給我 |
|
timhuang
尊榮會員 發表:78 回覆:1815 積分:1608 註冊:2002-07-15 發送簡訊給我 |
引言: 如果我有几十个图形,按timhuang大哥的做法只可以把图形重叠在一块显示,能不能一张一张分开来显示啊 procedure TForm1.Button1Click(Sender: TObject); var excel, wb, ws, p1: Variant; begin excel := CreateOleObject('Excel.Application'); wb := excel.WorkBooks.Add; ws := wb.WorkSheets[1]; p1 := ws.Pictures.Insert( 'C:\Sample.jpg'); p1.ShapeRange.IncrementLeft(200); p1.ShapeRange.IncrementTop(100); excel.Visible:=true; end;配合 IncrementLeft, IncrementTop 來進行即可!! |
jtp
初階會員 發表:39 回覆:81 積分:29 註冊:2003-04-20 發送簡訊給我 |
timhuang大哥,小弟十分之愚蠢,我照你所说写的程序如下
procedure TForm_caseembryo1.SpeedButton5Click(Sender: TObject);
var
excel,wb,ws,p1:Variant;
int:integer;
begin
Qry1.First; excel:=CreateOleObject('Excel.Application');
wb := excel.WorkBooks.Add;
ws := wb.WorkSheets[1]; while not Qry1.Eof do
begin
if qry1.FieldByName('picpath').AsString=null then abort else
p1:=ws.Pictures.Insert(Qry1.FieldByname('picpath').asstring);
p1.ShapeRange.IncrementLeft(100);
p1.ShapeRange.IncrementTop(50);
Qry1.Next;
end;
excel.Visible:=true;
end; 但图片在excel中还是重叠在一块,请问如何使它们分开,还请明示,THKS
|
timhuang
尊榮會員 發表:78 回覆:1815 積分:1608 註冊:2002-07-15 發送簡訊給我 |
sorry. 我沒有說清楚.
IncrementLeft, IncrementTop 是用來調整插入圖片的位置用的, 所以你要調整一下放進去的參數, 例如你要每 100 個 pixel 來放置的話, 你可以修改一下你的程式為:
var i:integer; i:=0; while not Qry1.Eof do begin if qry1.FieldByName('picpath').AsString=null then abort else begin p1:=ws.Pictures.Insert(Qry1.FieldByname('picpath').asstring); p1.ShapeRange.IncrementLeft(i); p1.ShapeRange.IncrementTop(50); i:=i 100; end; Qry1.Next; end; |
jtp
初階會員 發表:39 回覆:81 積分:29 註冊:2003-04-20 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |