怎么用word模板写数据,打印。(300分)

  • 主题发起人 主题发起人 ddmcall
  • 开始时间 开始时间
D

ddmcall

Unregistered / Unconfirmed
GUEST, unregistred user!
真烦。
有现成的数据软件不用。
搞什么<b> word</b> 保护方式录入数据。
一个合同登记。就几个数据
编号,单位,时间,条件
用WORD保护方式录人。
其他的什么是模板内写好。

 
你能说明白一点吗?不太清楚你的要求!
要是一般的做word摸版的问题好象不用到这里来讨论
假如还要用把录入的数据存到数据库中,然后再在事先作好的word摸版中打印的话
可能算是一个问题的!

你最好说明白点!
 
是这样的
先用WORD的模板先把合同写好。
然后填写数据(合同编号、单位名称、地址、合同签定日期等)。
这些要入库。
领导只会WORD。合同要一个字一个字的对。现在是1800个 *.doc
每天要有20~50个新合同。
我看了实际就只有(合同编号、单位名称、地址、合同签定日期等)变化。
每张合同就300字变了

什么格式东东、其他的没变化。有26K
把(合同编号、单位名称、地址、合同签定日期等)变化的写个库管理下方便些。
那才难找。

领导只会WORD。录入,打印就是WORD。每件事亲自过问
我头大了。
我写了个delphi的程序。他不用。说没看到条款,不放心。

我倒
 
做 Delphi 也有几年了,高手谈不上,一般的应用还可以对付,我在北京,平时有点闲
功夫,有意的话,请跟我联系。 crab2000@yeah.net
 
学习!!!
 
打开 word 文件后,定位到填入的各个项上,取出约定的字符数,填入字段中,应该是
可以的(未试)
 
Crab
发个列子
xianghonglin@wx88.net
 
你可以用delphi的wordapplication &worddocument
先连接上word 摸版
var
ddd,grid:olevariant;
begin
ddd:='d:/ddd.doc';
worda.Documents.Open(ddd,emptyparam,emptyparam,emptyparam,emptyparam,emptyparam,emptyparam,emptyparam,emptyparam,emptyparam);
worda.Visible:=true;
grid:=worda.item(1)(取表格1)
Table1.FieldByName('QUANTITY').Asstring := grid.cell(1,1).range.text;
//表格1的单元格(1,1)这样就可以把摸版中的相应位置的数据取到数据库中了

end;


 
通过程序在 word 中定位,大概有以下几种方法:
1、搜索特定的字符串
2、通过书签
3、通过域
4、通过表格
特定字符串看来不行,因为无法隐藏;书签在这里也不行,因为通过模板填写时,会把书签
冲掉,域我没试过,看来最好的办法是通过表格来定位了,也就是小文说的方法。你可以
在模板中把需要提取的内容都做在表格里,不需要表格线时,则把表格线设为无色。
 
>:xiao_wen
>grid:=worda.item(1)(取表格1)
什么意思?无法通过。
>:Crab
怎么用
 
侃侃word的帮助把。一定要会word的vba操作,才能在delphi中实现的.
 
你用错了,应该通过其 Tables 属性来访问。如下:
wTable := MyDoc.Tables.Item(1);
wTable 也是一个 OleVariant 对象
完整的程序我可以发给你
 
To : Crab 兄
能不能把代码也发给我一份,谢谢!!!
ajianzeng@263.net
 
Crab 兄
能不能把代码也发给我
xianghonglin@china.com
 
我用的是bookmark,例程如下:
procedure TForm1.butSaveClick(Sender: TObject);
var
ItemIndex:OleVariant;
i,j: integer;
TempDoc,NewTempDoc,TempWord,TempEmpty:OleVariant;
TempW:OleVariant;
Temp1,Temp2,Temp3,Temp4:OleVariant;
TempTemp : string;
Tt : String;
T: OleVariant;
begin
try
for j := 0 to RzListView1.Items.Count-1 do
begin
TempEmpty := EmptyParam;
TempDoc := EmptyParam;
NewTempDoc := True;
ItemIndex := 1;
try
Wordapplication1.Connect;
except
MessageDlg('无法打开Word,请确认已安装Word。', mtError, [mbOk], 0);
Abort;
end;
//打开指定WORD文档
TempWord := Edit1.Text ;
//WordApplication1.Visible := True;
WordApplication1.Documents.Open(TempWord,TempEmpty,TempEmpty,
TempEmpty,TempEmpty,TempEmpty,TempEmpty,
TempEmpty,TempEmpty,TempEmpty);
TempDoc := EmptyParam;
NewTempDoc := False;

TempWord := wdGoToBookmark;
//方法:用Bookmarks;
//i := wordapplication1.ActiveDocument.Bookmarks.Count;
//showmessage(inttostr(i));

for i:= 0 to wordapplication1.ActiveDocument.Bookmarks.Count-1 do
begin
T := i+1;
TempEmpty := EmptyParam;
//取出bookmard的名字
TempW := WordApplication1.ActiveDocument.Bookmarks.Item(T).Name;
IF TempW = 'c' then
begin
TempTemp := RzListView1.Items[j].Caption;
wordapplication1.Selection.GoTo_(TempWord,TempEmpty,TempEmpty,TempW);
wordapplication1.Selection.TypeText(TempTemp);//'一个好人'
end;
if TempW = 'd' then
begin
TempTemp := RzListView1.Items[j].SubItems.Strings[0];
wordapplication1.Selection.GoTo_(TempWord,TempEmpty,TempEmpty,TempW);
wordapplication1.Selection.TypeText (TempTemp);//'一个好人';
end;
end;

//保存退出WORD
try
wordapplication1.ChangeFileOpenDirectory('C:/My Documents');
Temp1 := 'b.rtf';
Temp2 := wdFormatDocument;
Temp3 := '';
Temp4 := True;
TempW := False;
WordApplication1.ActiveDocument.SaveAs(Temp1,Temp2,TempW,
Temp3,Temp4,Temp3,TempW,TempW,TempW,TempW,TempW);
wordApplication1.Quit;
WordApplication1.Disconnect;
showmessage('保存成功');

except
on E: Exception do
begin
Showmessage(E.Message);
WordApplication1.Disconnect;
end;
end;
end;
except
on E: Exception do
begin
ShowMessage(E.Message);
WordApplication1.Disconnect;
end;
end;

end;
 
过于麻烦的,这么做没有什么意思反而惹一身骚,自己劳累而不讨好,
还是想老板或者客户说说,不能什么事情老是按他们的意思。
 
有答案了就请尽快自己结束吧 :)
 
我老进不来
 
Crab 兄
能不能把代码也发给我
qzhu@gliet.edu.cn
 

Similar threads

后退
顶部