如何控制数据表中的图片和文本信息在word中的输出? ( 积分: 200 )

  • 主题发起人 主题发起人 zyr76
  • 开始时间 开始时间
Z

zyr76

Unregistered / Unconfirmed
GUEST, unregistred user!
我现在做一个随机试卷生成系统,需要把试题信息和相关的图片输出到word中,以生成试卷用,但是不知道怎么控制文本输出的格式(字体类型,大小,段落缩进等),如以下格式:

一、根据下面轴承座的三视图,参考其三角轴测图,进行三维建模,并以1_Bearing命名保存(共40分) //以上小四黑体
具体要求如下: //以下五号宋体
(1)图形尺寸正确
(2)隐藏建立特征过程中使用的基准面
看了一本书关于使用wordapplication和worddocument控件来在word上输出,但是没说怎么控制格式问题,另外想问一下在word中怎么创建宏,怎么用delphi控制宏?最好有类似的源代码,跪求!先谢谢有心人了!
 
请有心人和各位高手帮帮忙,不胜感激!!!
 
建议看 http://www.delphibbs.com/delphibbs/dispq.asp?lid=737517
有问题再问。您的问题很容易解决。
 
此网址我以看过,内容确实不少,但是能不能根据我的问题给个答案呀,因为里面没有直接的可以找,另外想问一下添加一行和一列的宏代码(在word)中怎么录制呀,或直接代码?
 
那个帖子很经典,既然看过了我想一时半会您也不一定能完全明白。给您一个例子吧,注意在运行这个例子前要把word的normal.dot模板复制到程序所在的目录下,您也可以自己建个试卷模板,文档的保存和退出word应该会吧?
procedure TfrmWord.btnOleVariantClick(Sender: TObject);
var
WordApp, WordDoc, WordParagraph, WordRange: OleVariant;
Template, NewTemplate, documenttype: OleVariant;
begin
try
WordApp := GetActiveOleObject('Word.Application');
except
try
WordApp := CreateOleObject('word.application');
WordApp.Visible := True;
{
二、Delphi程序新建Word文稿
格式:WordDocuments.Add(Template,NewTemplate,DocumentType,Visible)
Template: 使用模板的名称,
NewTemplate: 新建文档的类型,True表示为模板,False表示为文档
DocumentType: 文档类型,默认为空白文档
Visible: 打开的窗口是否可见
}
template := ExtractFilePath(Application.ExeName) + 'Normal.dot';
newtemplate := false;
documenttype := emptyparam; //默认参数
visible := true;
WordDoc := WordApp.Documents.Add(template, newtemplate, documenttype, Visible);

WordDoc.Range.Text := '使用OleVariant处理Word文档' +
'可以实现对Word文档的所有控制功能!';
//...可以进行其他需要的处理
WordParagraph := WordApp.activedocument.paragraphs.add;
WordRange := WordParagraph.range;
WordRange.Collapse(wdCollapseEnd);
WordRange.ParagraphFormat.FirstLineIndent := 25;
WordRange.text := '一、根据下面轴承座的三视图,参考其三角轴测图,进行三维建模,并以1_Bearing命名保存(共40分)';
WordRange.Font.Size := '12';
WordRange.Font.Name := '黑体';
// WordRange.Font.color:=clgreen;
// WordRange.Font.Format.Alignment:=wdAlignParagraphCenter;
WordRange.Collapse(wdCollapseEnd);

WordParagraph := WordApp.activedocument.paragraphs.add; //新增一行
WordRange := WordParagraph.range;
WordRange.Collapse(wdCollapseEnd);

WordRange.text := '具体要求如下:' + #13#10 +
'(1)图形尺寸正确' + #13#10 +
'(2)隐藏建立特征过程中使用的基准面';
WordRange.Font.Size := '10';
WordRange.Font.Name := '宋体';
WordRange.Collapse(wdCollapseEnd);

except
ShowMessage('打开Word文件时出错!');
end;
end;
end;
 
先感谢newsmile的帮助,我把你的源代码运行后出现了下列问题:
1。如果Word程序没打开,则系统提示在行:WordApp := GetActiveOleObject('Word.Application');出现错误信息(raise exception class EOleSysError with message '操作无法使用'),继续运行程序则可以新建word文档,但不是接在建立的模板文件下,原来模板文件的内容没有了,我现在是想接在原来的模板文件下(比如试卷头下方适换行后输出)输出,请问怎么实现呢?
2。如果Word已打开,则该源代码没反应,请问如何解决?
请newsmile能再续笔,非常感谢,我调试通过后,马上给200分。
 
use comobj,word2000
 
newsmile您好,use comobj,word2000我已加过了,因为这几个函数以前也碰到过。现在的问题还是前面的,请问能告诉我怎么接在已有模板的文字下方输入试题信息呀?另外如果还要在适当位置加入图片怎么处理?
 
我的代码是经过了测试的环境xp2+d7,没有出现异常。但代码确实有点小问题。第一个try是判断是否建立了WordApp,第二个try建立WordApp对象,由于我的疏忽第二个except应该放在WordApp := CreateOleObject('word.application');后,并且在showmessage后加上exit。如果您那里出错,不如把第一个try...except...end;去掉。您要用自己的模板文件名替换掉template := ExtractFilePath(Application.ExeName) + 'Normal.dot';中的Normal.dot。您的模板文件要放在您的程序目录下。在word中定位要查找模板中的特定内容的。建议您多查查大富翁离线包,会有收获的。
插入图片等可参考:http://www.delphibbs.com/delphibbs/dispq.asp?lid=2052997
 
newsmile您好,我的代码运行环境也是xp2+d7,模板文件我是改成我的模板文件的,不过运行出现的错误还是前面的两个,您看,您能否把你的这个代码包括窗体等(就是源代码了)发到我的邮箱:zyr76@21cn.com,先谢谢您了。其实我想问的是如何在word中通过插入书签或运行宏来实现在特定的位置插入图片,可是我设置了书签,运行后确没用,宏又不知怎么录制,真郁闷那!你的文本输出功能确实实现了,但是在我这儿是出错后点击运行按钮后才打开word文档的。说了这么多,您也烦了,我看你再回答我一次我就散分了,以后有机会再请教吧!
 
接受答案了.
 
在word中录制宏:工具->宏->录制新宏,查看宏的内容:工具->宏->宏->编辑。要把宏转成delphi代码请看我推荐的帖子中关于替换的那一段内容。
关于书签的操作请看 http://www.delphibbs.com/delphibbs/dispq.asp?lid=2415501
我的代码很简单啊,就是在form上放个按钮,uses子句的内容如下:
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Excel2000, OleServer, StdCtrls, Word2000, ComObj, ShellAPI,
OleCtrls, SHDocVw, OleCtnrs, WordXP;
 
后退
顶部