如何把数据库的内容写入到Word文档中

如何把数据库的内容写入到Word文档中?(陈勇)    huguangtao(原作)
 
关键字     数据库,Word,OLE
 


  在编程时,由于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 


下面是相关代码:
file://---------------------------------------------------------------------------

#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="";       
}

 

可以使用VBA将多条Excel记录和相应的图片插入到Word文档,具体的步骤如下: 1. 在Excel打开VBA编辑器(按ALT + F11),在“工具”菜单选择“参考”,勾选“Microsoft Word xx.x Object Library”和“Microsoft Office xx.x Object Library”。 2. 在VBA编辑器插入一个新的模块,编写以下代码: ```VBA Sub ExportToWord() Dim wdApp As Word.Application Dim wdDoc As Word.Document Dim wdRange As Word.Range Dim myPath As String Dim myFileName As String Dim myExcel As Excel.Application Dim myWorkbook As Excel.Workbook Dim myWorksheet As Excel.Worksheet Dim myChart As Excel.ChartObject Dim myPicture As Excel.Shape '创建一个新的Word应用程序 Set wdApp = CreateObject("Word.Application") wdApp.Visible = True '打开一个新的Word文档 Set wdDoc = wdApp.Documents.Add '设置Word文档的范围 Set wdRange = wdDoc.Range(0, 0) '设置Excel应用程序 Set myExcel = CreateObject("Excel.Application") myExcel.Visible = False '打开Excel文件 myPath = "C:\MyFolder\" myFileName = "MyFile.xlsx" Set myWorkbook = myExcel.Workbooks.Open(myPath & myFileName) '设置Excel工作表 Set myWorksheet = myWorkbook.Worksheets("Sheet1") '将Excel数据复制到Word文档 myWorksheet.Range("A1:C10").Copy wdRange.Paste '插入Excel图表 Set myChart = myWorksheet.ChartObjects(1) myChart.CopyPicture wdRange.Paste '插入Excel图片 Set myPicture = myWorksheet.Shapes(1) myPicture.Copy wdRange.Paste '关闭Excel文件和应用程序 myWorkbook.Close SaveChanges:=False myExcel.Quit '保存Word文档 wdDoc.SaveAs "C:\MyFolder\MyDocument.docx" '关闭Word文档和应用程序 wdDoc.Close wdApp.Quit '释放对象变量 Set wdRange = Nothing Set wdDoc = Nothing Set wdApp = Nothing Set myWorksheet = Nothing Set myWorkbook = Nothing Set myExcel = Nothing End Sub ``` 3. 修改代码的文件路径和文件名,将Excel数据范围、图表和图片的位置替换为实际位置。 4. 运行宏,它将创建一个新的Word文档,并将Excel数据、图表和图片插入到文档。 注意事项: 1. 如果在代码使用了旧版本的Office对象库(如“Microsoft Word 14.0 Object Library”),则需要打开Excel时使用旧版本的Excel对象库(如“Microsoft Excel 14.0 Object Library”)。 2. 在插入图片时,需要将图片复制到剪贴板,并在Word文档的范围使用Paste方法粘贴图片。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值