有一个窗体,上面放一个dbgrid里面有数据
姓名    性别    年龄    工资
张三     男      22      1000
李四     女      20       800
王五     男      25      1500
赵六     女      22      1300下面有一个WebBrowser1,显示一个Word 文件
Word 里有一个表格
姓名    性别    年龄    工资
张三     
李四     
王五     
赵六    要求将上面的数据对应填入Word 的表格里,请高手帮忙!

解决方案 »

  1.   

    网上现在有太多的关于delphi对word和excel进行操作的帖子,搜索一下吧!编程也没有什么难度。
    或者在word里面用宏跟踪一下,察看一下VBA的代码也就可以了。小CASE
      

  2.   

    具体到你的问题,先逐行读取WORD里面的内容,和数据集里面的内容进行比较,如果姓名相同(是不是应该设置一个更加有效的唯一的识别码啊!),就把数据集里面当前记录里需要的数据写进WORD相应的位置就可以了。从不给代码!很多东西还是你自己做比较好!
      

  3.   

    给你个delphi操作word表格的例子,研究一下,可以达到你的要求:Delphi与Word例1//================== Word_VBA 代码 ====================//
    sub inWord()
      Dim myTable As Table
      Dim myBox, myPict, myShape As Shape
      
      '画第一个矩形框
      Set myBox = ActiveDocument.Shapes.AddTextbox(Orientation:=1, Left:=90, Top:=70, Width:=414, Height:=200)
      
      '画一条竖线
      Set myLine = ActiveDocument.Shapes.AddLine(255, 70, 255, 270)  '画第一幅图
      Set myPict = ActiveDocument.Shapes.AddPicture("D:\test\test\load_jpg1\photo\108259.jpg", _
      LinkToFile:=False, SaveWithDocument:=True, Left:=180, Top:=80, Width:=65, Height:=80)
      
      '画第二幅图
      Set myPict = ActiveDocument.Shapes.AddPicture("D:\test\test\load_jpg1\photo\108259.jpg", _
      LinkToFile:=False, SaveWithDocument:=True, Left:=262, Top:=80, Width:=65, Height:=80)
      
      '姓名
      Set myShape = ActiveDocument.Shapes.AddTextbox(Orientation:=1, Left:=108, Top:=198, Width:=126, Height:=18)
      myShape.Line.Visible = msoFalse
      myShape.TextFrame.TextRange.Text = "姓名:新之助"  '年龄
      Set myShape = ActiveDocument.Shapes.AddTextbox(Orientation:=1, Left:=108, Top:=225, Width:=126, Height:=18)
      myShape.Line.Visible = msoFalse
      myShape.TextFrame.TextRange.Text = "年龄:12"
      
      '个人信息
      Set myShape = ActiveDocument.Shapes.AddTextbox(Orientation:=1, Left:=351, Top:=90, Width:=126, Height:=99)
      myShape.Line.Visible = msoFalse
      myShape.TextFrame.TextRange.Text = "个人信息"  '文本框中添加表格
      Set myShape = ActiveDocument.Shapes.AddTextbox(Orientation:=1, Left:=288, Top:=198, Width:=189, Height:=63)
      myShape.Line.Visible = msoFalse  Set myTable = ActiveDocument.Tables.Add(Range:=myShape.TextFrame.TextRange, NumRows:=3, NumColumns:= _
            2, DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:=wdAutoFitFixed)
      myTable.Cell(1, 1).Range.Text = "体重"
      myTable.Cell(1, 2).Range.Text = "40kg"
      myTable.Cell(2, 1).Range.Text = "身高"
      myTable.Cell(2, 2).Range.Text = "120cm"
      myTable.Cell(3, 1).Range.Text = "坐高"
      myTable.Cell(3, 2).Range.Text = "65cm"
    end sub
    //================== Delphi代码 ====================//
    procedure inDelphi;
    var
    WordApp,WordDoc,WordTable,wordShape:OleVariant;  //  se:Selection;
    filename:string;
    begin
      SaveDialog1.InitialDir:=ExtractFilePath(Application.ExeName)+'out_file';
      SaveDialog1.Execute;
      self.Refresh;
      filename:=savedialog1.FileName;
      if length(filename)=0 then
      begin
         application.MessageBox('  没有选择统计文件的存储位置,不能保存统计的数据!  ','提示框',mb_ok);
         exit;
      end;
      WordApp:=CreateOleObject('Word.Application');
      WordApp.Visible:=True;
      WordDoc:=WordApp.Documents.Add;
      try  //画第一个矩形框
      worddoc.SHAPES.AddTextbox(Orientation:=1,  Left:=90, Top:=70, Width:=414, Height:=200);
      //画一条竖线
      worddoc.Shapes.AddLine(255, 70, 255,270);
      //画第一幅图
      worddoc.SHAPES.addpicture(ExtractFilePath(Application.ExeName)+'photo\108259.jpg',
      LinkToFile:=False, SaveWithDocument:=True, Left:=180, Top:=80, Width:=65, Height:=80);
      //画第二幅图
      worddoc.SHAPES.addpicture(ExtractFilePath(Application.ExeName)+'photo\108259.jpg',
      LinkToFile:=False, SaveWithDocument:=True, Left:=262, Top:=80, Width:=65, Height:=80);  //画 姓名 框
      wordShape:=worddoc.Shapes.AddTextbox(Orientation:=1, Left:=108, Top:=198, Width:=126, Height:=18);
      wordShape.Line.Visible := false;
      wordShape.TextFrame.TextRange.Text := '姓名:新之助';
      //年龄  框
      wordShape:=worddoc.Shapes.AddTextbox(Orientation:=1, Left:=108, Top:=225, Width:=126, Height:=18);//.Select;
      wordShape.Line.Visible := false;
      wordShape.TextFrame.TextRange.Text := '年龄:12';
      //个人信息  框
      wordShape:=worddoc.Shapes.AddTextbox(Orientation:=1, Left:=351, Top:=90, Width:=126, Height:=99);//.Select;
      wordShape.Line.Visible := false;
      wordShape.TextFrame.TextRange.Text := '个人信息';
      //文本框中添加表格
      wordShape:=worddoc.Shapes.AddTextbox(Orientation:=1, Left:=288, Top:=198, Width:=189, Height:=63);//.Select;
      wordShape.Line.Visible := false;
      WordTable := worddoc.Tables.Add(Range:=wordShape.TextFrame.TextRange, NumRows:=3, NumColumns:=2,
             DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:=wdAutoFitFixed);
      WordTable.Cell(1, 1).Range.Text := '体重';
      WordTable.Cell(1, 2).Range.Text := '40kg';
      WordTable.Cell(2, 1).Range.Text := '身高';
      WordTable.Cell(2, 2).Range.Text := '120cm';
      WordTable.Cell(3, 1).Range.Text := '坐高';
      WordTable.Cell(3, 2).Range.Text := '65cm';  WordDoc.saveas(filename);
      application.MessageBox('  输出成功!  ','提示框',mb_ok);  finally
      WordDoc.Saved:=true;
      WordDoc.Close;
      WordApp.Quit;
      end;end;
      

  4.   

    谢谢楼上各位的回复,不过我不打算用外连和内嵌式的解决方法,这两种方法都要从后台启动WORD.EXE,而浏览器可以很快的载入DOC文件。我现在要解决的问题是将从数据库查询的数据填入到DOC文件中,DOC文件是已编辑好的固定模板,里面的表格已经存在,不是动态的画表格。
      

  5.   

    用OLE或Richview可以实现,在WebBrowser1组件中实现起来太复杂了,
    有兴趣的话可以加我的QQ上谈一下:26445245 群:7524526