在編程時,由於Microsoft Word的編輯功能非常強大,所以我們經常希望將一些數據保存為WORD文檔,以便我們專業編輯。
在保存為Word文檔時,我們可以通過OLE,但經常遇到把真正的Word編輯界面調入到了程序中,以使得程序界面混亂。還有,普通的調用Word的方法都必須指定Word可執行文件的絕對地址,由於很多用戶安裝Word的路徑都不一致,故,我們經常遇到調用錯誤的問題,能不能有一種方法調用Word不將它顯示出來,與版本、安裝路徑無關呢?答案是肯定的。
下面,我就來做一個小程序給大家演示一下,只起到一個拋磚引玉的作用。僅供朋友們參考。
首先,我們建立一個Access2000數據庫data.mdb,在庫中我們建立一個表userdata,裡面有“工號”、“姓名”、“性別”、“部門”四個字段,都是字符型的,再輸入一些數據,我們再建立一個窗體Form1,在Form1中,放置以下控件:
控件名稱
屬性
值
說明
Tlabel1
Caption
"請輸入文件名"
TEdit1
Name
""
用來輸入文件名,帶擴展名的
TButton1
Caption
"保存"
TButton2
Caption
"退出"
ADOTable1
Active
ConnectionString
TableName
True
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=data.mdb;Persist Security Info=False
userdata
下面是相關代碼:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Variant OLEObject;
AnsiString dataword;
if(Trim(Edit1->Text)=="")
{
ShowMessage("請輸入文件名");
return;
}
String currentPath=GetCurrentDir()+"//"+Trim(Edit1->Text);
OLEObject=CreateOleObject("Word.Basic");
OLEObject.Exec(Procedure("FileNew"));
OLEObject.Exec(Procedure("EndOfDocument"));
ADOTable1->First();
while(ADOTable1->Eof!=True)
{
dataword=ADOTable1->FieldValues["工號"]+ADOTable1->FieldValues["姓名"]+ADOTable1->FieldValues["性別"]+ADOTable1->FieldValues["部門"];
OLEObject.Exec(Procedure("Insert")<<dataword);
ADOTable1->Next();
}
OLEObject.Exec(Procedure("StartOfDocument"));
OLEObject.Exec(Procedure("FileSaveAs")<<currentPath);
OLEObject.Exec(Procedure("FileClose")<<1);
ShowMessage("文件已經寫入!謝謝使用!");
}
---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
this->Close();
}
---------------------------------------------------------------------------
void __fastcall TForm1::Edit1Click(TObject *Sender)
{
Edit1->Text="";
}
---------------------------------------------------------------------------
大家如果有什麼更好的建議和意見請與我聯系。([email protected])