[原创]用BCB操作Word

上一篇 / 下一篇  2006-04-29 17:03:30 / 天气: 晴朗 / 心情: 高兴 / 个人分类:BCB

一段源代码,自己实际使用的。有用的话自己看看。

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);


}


TAG: 程序设计 BCB

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2009-01-08  
    123
45678910
11121314151617
18192021222324
25262728293031

数据统计

  • 访问量: 23090
  • 日志数: 19
  • 图片数: 2
  • 建立时间: 2006-04-28
  • 更新时间: 2007-06-11

RSS订阅

Open Toolbar