怎么样把数据库表的Blob 字段的图形导入Excel中? (50分)

  • 主题发起人 主题发起人 mo
  • 开始时间 开始时间
M

mo

Unregistered / Unconfirmed
GUEST, unregistred user!
在dfw上查了很久,也试过很久,
但还是没结果,不知是否能够实现把数据库表的Blob字段的图形导入到excel中?

请各位大哥帮帮忙,怎么做才行?
 
使用数据流
 
TO:owangqiang
能否详细点?
to:All
怎样才能把用剪板内的图像导入的excel?
 
应该现在先把要导入的图片显示出来,利用copy的方式粘贴到指定的位置。
这种方法我在Word中实现过。我想也无非是定位到一个Cell的问题。
 
给你一段我在Word中实现的代码,我想思路应该是这样的,你参考一下吧。
procedure PasteImage(Mydoc: TWordDocument{目标Word文档}; PasPicture: TPicture; ParagraphsNum: integer{段落序号});
{向Word中插入图片。}
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
Mydoc.Paragraphs.Item(ParagraphsNum).Range.Paste;//把剪贴板上的图片贴到word的指定段落。
end;
end;
 
谢谢天与地,
不知各位大哥有没做过把图片导入到excel?
 
TO:天与地,
我以下面的方式去调用你的写的过程
procedure TForm1.Button5Click(Sender: TObject);
var
WordDocument:TWordDocument;
begin
PasteImage(WordDocument,image1.Picture,1);
end;
但程序每次执行到:
Mydoc.Paragraphs.Item(ParagraphsNum).Range.Paste;//把剪贴板上的图片贴到word的指定段落。
电脑就出现蓝屏,
请继续关注

谢谢!
 
你要先利用TWordApplication和TWordDocument打开或新建一个Word文档。

然后粘贴到这个文档里面。

 
不知为什么,delphi自带的操作word的两个例子也总不能编辑,
试了很多次TWordApplication和TWordDocument也都不能打开word,
不知是不是我的word 2000 有问题,明去找张盘重装下,看有不有问题。

请大家继续关注,我也特别想知道,BLOB字段道底能不能导入到excel中,
请各位大哥帮忙,来解决这个问题吧
 
to:mo
下面这个函数我以前贴过,可以用的。
你肯定偷懒了,没有搜索过。:)
procedure openwordfile(Myword: TWordApplication; Myfile: string;IsVisible:Boolean); //打开Word文档函数。
//Myword:文档工程名称;Myfile:word文件名;IsVisible来控制是否显示。
var
FileName, ConfirmConversions, ReadOnly, AddToRecentFiles,
PasswordDocument, PasswordTemplate, Revert,WritePasswordDocument,
WritePasswordTemplate, Format,MatchCase, MatchWholeWord, find1, rep1,
MatchWildcards, MatchSoundsLike, MatchAllWordForms, Forward,
Wrap, Replace: OleVariant;
{以上的变量都是TDocument.open函数所必需的,都是系统默认的,详情请参看Word的Help}
{可能会碰到错误的提示,一种情况是Uses一下Office97就可以了。}
begin
Myword.Connect;
Myword.Visible :=false;
FileName := MyFile; //打开的文件名称。
confirmConversions := False;
ReadOnly := False;
AddToRecentFiles := False;
PasswordDocument := '';
PasswordTemplate := '';
Revert := True;
WritePasswordDocument := '';
WritePasswordTemplate := '';
Format := wdOpenFormatDocument;
myWord.Documents.Open(FileName, ConfirmConversions,
readOnly, AddToRecentFiles, PasswordDocument, PasswordTemplate,
Revert, WritePasswordDocument, WritePasswordTemplate, Format);
Myword.Visible :=True;
Myword.Disconnect;
end;
//打开Word文档函数(结束)

再给你贴一个打开Excel的源程序,再不能提示了,再提示我就替你做出来了。散分吧!
var
i,TempInt:integer;
aa,bb,cc:string;
begin
ExcelApplication1.FindFile;
Try
ExcelApplication1.Connect;
Except
MessageDlg('Excel 没有安装,请安装后运行。', mtError, [mbOk], 0);
Abort;
End;
ProgressBar1.Visible:=True;

// ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks[ExcelApplication1.Workbooks.count]);
// ExcelWorksheet1.ConnectTo(ExcelWorkbook1.Worksheets[1] as _Worksheet);
ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks[1]);
ExcelWorksheet1.ConnectTo(ExcelWorkbook1.Worksheets[1] as _Worksheet);

TempInt:=round(FloatEdit1.Value);
ProgressBar1.Max:=TempInt;
ProgressBar1.StepIt;
for i:=1 to TempInt do begin
aa:=ExcelWorksheet1.Cells.item[i,1];
bb:=ExcelWorksheet1.Cells.item[i,2];
cc:=aa+bb;
ExcelWorksheet1.Cells.item[i,3]:=cc;
Application.ProcessMessages;
ProGressBar1.StepBy(1);
end;
ProgressBar1.Visible:=false;
ExcelWorkbook1.Disconnect;
ExcelWorksheet1.Disconnect;
ExcelApplication1.Disconnect;
ExcelApplication1.Visible[1]:=True;
// ExcelApplication1.Quit;


 
TO:天与地
首先,让我再一次感谢你!
其次我也想告诉你,我没有偷懒的啊:为了解决这个问题我在“大富翁全文检索”里,找了好几天的啊。
本来我写过从数据库导入到excelr的东东的,但没试过导入BLOB的字段记录。
但现在遇到了这个问题后,就必须要解决了;一开始我是找excel方面的,但在全文检索里找了很久
还没有答案,还看到什么cell不支持图形之类的说法,另也看到贴子上有图形导入word的例子
(后来又想excel不能解决,用word也行了);但不知怎么的(也因自己水平有限吧),
用他们那办法在我机子就是用不了,后又去读delphi自带的调word的例子,但在我机子就是不能编辑;
完了,自己以前对这方面也不了解,DFW上的旧贴子里也没找到答案,所以就自己开一贴了
所以现在我的问题就成了:1.若想导入图片到excel能不能实现?
(我把图片已调入到剪贴板,但就不能paste到excel中)
当然导入到word可以的话,也行,我也想学学word这方面的东东
我现在试试 天与地 的方法,我也希望这次能成功了:)
 
TO:天与地
谢谢你,现把图片导入到word已成功了;但你的
myWord.Documents.Open(FileName, ConfirmConversions,readOnly, AddToRecentFiles, PasswordDocument, PasswordTemplate,Revert, WritePasswordDocument, WritePasswordTemplate, Format);
编辑时老说参数不够,要改为:
myWord.Documents.Open(FileName, ConfirmConversions,readOnly, AddToRecentFiles, PasswordDocument, PasswordTemplate,Revert, WritePasswordDocument, WritePasswordTemplate, Format,TempEmpty,TempEmpty);
才行。
另有点不明白的是:运行后,第一次调用你的函数,老是提示:“消息筛选程序表明应用程序正忙”,要再一次调用openwordfile才能把word文档真正打开

谢再关注一次,有答案后我就马上结贴;谢谢!


 
Wordapplication1.Disconnect;
打开文件后,你应该断一下。

嗨,当时把Word搞定,用了我好几个星期的时间。50分,少点,清仓处理了。:)
 
TO:天与地
非常感谢你,你的帮助让我解决了以上的问题了:)
今天我在“大富翁全文检索”看到很多你的贴子,还找到了你曾发的一个贴子:
http://www.delphibbs.com/delphibbs/dispq.asp?lid=576396,当然还有你给其它朋友解决的问题

为此我想:先把这个贴子的50分给你记上;
但我还想问你一个问题:关于word中位置的定位的问题,
现知怎么导数据进word中,但却不清楚怎么控制它们的位置(如我要在某行的某个位置导入一张图片,
或插入几个字符串),
希望能得到你的帮助,最好能有例子给我学下(至少再给你加上200分),若还不够的话,可以再加的;
(一直到我所有家产送空为止)

(这个问题搜了好几天,眼睛也看痛了,但问题还没有解决;所以现在好希望你能帮忙的),谢谢

 
to:mo,
多谢大侠的慷慨先。
至于插入图片的定位,恐怕要多说几句了。有很多方式和方法。
1、我们当时是要求用图片替换一个关键字。就是先在模板里面定义一个标记,
然后寻找这个标记,用图片替换它。
2、另一种方式,就是在写文字的过程中贴图片,这种方式也比较好实现,因为写文字的过程中,你就知道当前的paragrap。
然后贴图片就可以了。
3、第三种方式就比较麻烦了,就是在没有任何条件的基础上,指定任意的位置贴图片。其实,
指定位置就是确定它的“行”和“列”。在Word里面是通过回车来分割pagagraph ,包括表格里面每一个Cell,
Word都认为是一个paragraph,所以“行”可以通过回车来确定,通过向Word中输入回车符,定位行。
“列”的定位可以通过“左对齐”、“右对齐”、“居中”和输入空格来定位。
怎么样?还感觉难吗?:)
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部