如何同时将word中的文本和图片写入数据库! (100分)

  • 主题发起人 主题发起人 lcl800
  • 开始时间 开始时间
L

lcl800

Unregistered / Unconfirmed
GUEST, unregistred user!

1 如何同时将word中的文本和图片写入数据库!
procedure TForm1.Button1Click(Sender: TObject);
var
range:Variant;
_str:string;
_start,_end:integer;
begin
wordApp:= createOleObject('word.Application');
wordApp.Visible := True;
wordapp.Documents.open('C:/temp.doc');
wordapp.Selection.MoveDown(Unit:=wdLine, Count:=3, Extend:=wdExtend);
wordapp.Selection.Copy;
//下列代码能将文本和图片单独复制到数据库
//问题:如果一段文字中既有文本、又有图形(例如:一道数学试题)如何复制到数据库?
//使用olecontainer控件?代码如何写?


if Clipboard.HasFormat(CF_BITMAP) then begin
table1.Edit;
dbimage1.Picture.Bitmap.Assign(Clipboard);
dbimage2.Picture.Bitmap.Assign(clipboard);
table1.Post;
table1.Refresh;
end else
if clipboard.HasFormat(CF_TEXT) then
memo.PasteFromClipboard;
wordapp.Selection.MoveDown(Unit:=wdLine, Count:=1);
wordapp.Selection.TypeParagraph;
wordapp.Selection.Paste;
end;

2 word文档中的文本、图形同时存储到数据库的问题
OLE自动化问题!!! 如何同时将word文档中的文字、图形对象写入数据库中?
用Clipbrd单元很容易单独将word文档中的文字或图片写入数据库的memo字段
或graphic字段,现在想直接选择word的一部分文字和图片写入数据库,应该怎么办?
例如,我想将一道试题写入试题库,试题中既有文字又有公式,怎样同时将试题内容写入
试题库中?假设一个文档中有多道试题,每道试题一个记录。
 
1.是不是使用qr报表控件的,要升级打印机驱动程序就行.
2.直接选择的文字或图片存入剪贴板中然后用STREAM写入数据库中应该行的.
 
用Bolb:Tblobfield(table1.fieldbyname('image')).loadfromfile('filename');
 
这种型号打印机好像就是有问题,我这儿几台笔记本接这种打印机,平均
三天就出一次问题,不重启几次就打印不出来。
 
数据库<-->word文档--编辑打印
一个word(Rtf格式)文件可存放多道试题,分别导入到数据库的不同字段。
RxRichEdit控件中介,RxDBRichEdit和数据库连接。
 
你知道存在BLOB字段还有什么问题?
ORACLE有工具实现BLOB字段的处理,用用再讨论。
 
考虑一下使用vba
 
RxDBRichEdit就是db是Data controls控件的DBRichEdit组件吗
 
RxDBRichEdit就是db是Data controls控件的DBRichEdit组件吗
--是的,它比DBRichEdit组件功能要强大。
 
to笑天宇
Tblobfield(table1.fieldbyname('image')).loadfromfile('filename')如何使用?
我的作法:
1 添加table1
2 右击,select New fields
3 添加blob字段 name:my type:blob
4 添加事件
Tblobfield(table2.fieldbyname('my')).loadfromfile('c:/temp.doc');
5 编译错误:stream write error?
问题:
1 如何读出temp.doc文件?
2 如何将读入的temp.doc文件写入表的graphic字段?

 
Bolb:Tblobfield(table1.fieldbyname('image')).loadfromfile('filename');
我看跟打印机驱动程序的关系极大的,什么打印机,就是HP的!!!用HP LaserJet 6L打印也正常!!


 
要读出word 方法很多,提供一种吧
var
oleDY:TMemoryStream; //取出数据库中的WORD 文件
// ss:string;
begin
PageControl.ActivePageIndex :=1;
openfile.Enabled :=false;
oleDY := TMemoryStream.Create;
oledy.Clear;
(ADOQ_HTGL.FieldByName('URL') as TBlobField).SaveToStream(oleDY);
if oledy.size>0 then
begin
oleDY.Position := 0;
OLE.LoadFromSTREAM(oleDY);
ole.DoVerb(1);
End ELSE begin
ole.Enabled:=true;
ole.CreateObjectFromFile(ExtractFilePath(Paramstr(0))+'yiss.doc',false);
ole.DoVerb(ovShow); //运行此句,才可以启动Word进程,才能让WordApp连上
WordApp.Connect;
WordDoc.ConnectTo(WordApp.ActiveDocument);
// WordApp.CommandBars['Standard'].Set_Enabled(false); //将工具栏设为不可见
wordApp.CommandBars['Formatting'].Set_Enabled(true);
ole.DoVerb(ovShow); //运行此句让工具栏不再出现
// end;
//end;
end;
end;


procedure TFrm_ht.saveasClick(Sender: TObject);
Var
OleStream : TMemoryStream;
begin
OleStream := TMemoryStream.Create; //save to Image字段
try
if Adoq_htgl.State<>dsedit then
Adoq_htgl.Edit ;
olestream.Clear ;
ole.SaveToStream(OleStream);
OleStream.Position := 0; //回零点
ADOQ_HTGL.edit;
(ADOQ_HTGL.FieldByName('url') as TBlobField).LoadFromStream(OleStream);
ADOQ_HTGL.Post ;
finally
openfile.Enabled :=true;
OleStream.Free;
end;
end;
有些是无用的,我的代码只是给你参考,并且ole问题很多,不好用
 
如何在Olecontainer控件中粘贴word文档中的内容?
 
读出word 方法,好像用Servers控件更好一些。
 
想通过网页浏览,怎样读取?ole在网页格式里面是不可以用的!
 
to linsb:
Servers控件如何使用?我找遍了相关的资料,只学会了如何用server控件连接word,却不知道如何
利用它的属性。请指教
 
To lcl800
http://www.djpate.freeserve.co.uk/Automation.htm
Delphi与Word之间的融合技术:
http://www.delphibbs.com/delphibbs/dispq.asp?LID=737517
关键字‘Word’搜一下,many many!

 
我查找了不少,包括dfw.chm 但没找到答案
 
留下地址,个你发一个demo
此例:在word内编图文混排的文档,存入数据库的相应字段。
 
to linsb:
my E_mail: lcl@sicnu.edu.cn
 
后退
顶部