一段源代码,自己实际使用的。有用的话自己看看。
void __fastcall TFormPrintNBD::BtnPrintClick(TObject *Sender)
{
AnsiString FileName = "Lch\\Mydot1.dot";
//测试文件是否存在
if(!FileExists(FileName))
{
MessageDlg("很包歉,本系统一些重要文件丢失,程序将自动关闭!",mtError,TMsgDlgButtons()<<mbYes, 0 );
Application->Terminate();
}
try
{
//文件路径
AnsiString TemplateName = ExtractFilePath(ParamStr(0));;
TVariant PathFileName = TemplateName + FileName;
OleVariant ItemIndex=1;
WordApplication1->Visible=true;
WordApplication1->Connect();//连接Word应用程序
// OleVariant Template=TemplateName;
OleVariant NewTemplate=False;
OleVariant DocumentType;
OleVariant Visible;
WordApplication1->Documents->Add(PathFileName,NewTemplate,DocumentType,Visible);//添加文档
WordDocument1->ConnectTo(WordApplication1->Documents->Item(ItemIndex));
TDateTime curDate=Date(); //取得当前时间
AnsiString DateStr;
DateStr=curDate.FormatString("yyyy")+"年"+curDate.FormatString("mm")+"月"+curDate.FormatString("dd")+"日";
FindAndReplaceField("<1>",DBEditJG->Text);
FindAndReplaceField("<2>",DateStr);
FindAndReplaceField("<3>",DBEditXFFS->Text);
FindAndReplaceField("<4>",DBEditLY->Text);
FindAndReplaceField("<5>",DBEditHH->Text);
FindAndReplaceField("<6>",DBEditBFYName->Text);
// FindAndReplaceField("<6>", DataModule2->ADOQuery1->FieldValues["BFYName"]);
FindAndReplaceField("<7>",DBEditBFYDW->Text);
FindAndReplaceField("<8>",DBCbBoxBFYZW->Text);
FindAndReplaceField("<9>",DBCbBoxBFYJB->Text);
FindAndReplaceField("<10>",DBEditFYName->Text);
FindAndReplaceField("<11>",DBEditFYDW->Text);
FindAndReplaceField("<12>",DBCbBoxFYZW->Text);
FindAndReplaceField("<13>",DBEditDH->Text);
FindAndReplaceField("<14>",DBMemoWTZY->Text);
FindAndReplaceField("<15>",DBMemoNBYJ->Text);
FindAndReplaceField("<16>",DBEditCBRName->Text);
FindAndReplaceField("<17>",DBMemoBMYJ->Text);
FindAndReplaceField("<18>",DateStr);
//打印本件所有领导批示
AnsiString PSYJ="";
DataModule2->ADOQuery2->First();
for(int i=0;i<DataModule2->ADOQuery2->RecordCount;i++)
{
PSYJ = PSYJ + "("+IntToStr(i+1)+")"+DataModule2->ADOQuery2->FieldByName("批示日期")->AsString + " " + DataModule2->ADOQuery2->FieldByName("领导姓名")->AsString + "批示:" + DataModule2->ADOQuery2->FieldByName("领导附加批示")->AsString + " ";
DataModule2->ADOQuery2->Next();
}
FindAndReplaceField("<19>",PSYJ);
FindAndReplaceField("<20>",DBEditXFGJ->Text+DBEditXFNo->Text);
}
catch(...)
{
MessageDlg("您可能没有安装Word!",mtError,TMsgDlgButtons()<<mbYes, 0 );
WordApplication1->Disconnect();
}
}
//--------------------------
void __fastcall TFormPrintNBD::FindAndReplaceField(AnsiString OldWord,AnsiString NewWord)
{
TVariant RepPara=wdReplaceAll;
TVariant EmptyPara=TNoParam();
WordApplication1->Selection->Find->Text=WideString(OldWord).c_bstr();
WordApplication1->Selection->Find->Replacement->Text=WideString(NewWord).c_bstr();
WordApplication1->Selection->Find->Execute(&EmptyPara,&EmptyPara,&EmptyPara,&EmptyPara,
&EmptyPara,&EmptyPara,&EmptyPara,&EmptyPara,
&EmptyPara,&EmptyPara,&RepPara,&EmptyPara,
&EmptyPara,&EmptyPara,&EmptyPara);
}