输出数据库表的记录到.doc文件

时间:2022-12-28 21:47:15
基本上就是输出一个表该条记录的字段名和该字段的值

当然除了这个我还要在该文件最上面输出一个变量,如日期


在VB中客户需求是用mail merge,问题是现在是用.net有办法实现吗?

5 个解决方案

#1


我有现成的代码,等一下我考下来!
Dim xlApp As Object
        Dim xlBook As Object

        On Error Resume Next
        xlApp = CreateObject("word.application")
        xlBook = xlApp.Documents.Open(VB6.GetPath & "\格式.doc")

        xlBook.AcceptAllRevisions()
        xlBook.Activate()

        xlBook.Tables(1).Cell(1, 2).Select()
        xlBook.Tables(1).Cell(1, 2).Range.InsertAfter(Str(Ht))
        xlBook.Tables(1).Cell(1, 4).Range.InsertAfter(Str(He))
        xlBook.Tables(1).Cell(2, 2).Range.InsertAfter(Str(HJing))
        xlBook.Tables(1).Cell(2, 4).Range.InsertAfter(Str(Nden))
        xlBook.Tables(1).Cell(3, 2).Range.InsertAfter(Str(Gr))
        xlBook.Tables(1).Cell(3, 4).Range.InsertAfter(Taoguan)
        xlBook.Tables(1).Cell(4, 2).Range.InsertAfter(Str(Pi))

        '***打开数据库,从表中读取数据到word中***'
        Dim cN As ADODB.Connection
        Dim Rs As ADODB.Recordset

        Rs = New ADODB.Recordset
        cN = New ADODB.Connection

        Dim strdatafile As String
        strdatafile = VB6.GetPath & "\result.mdb"
        cN.Provider = "Microsoft.Jet.OLEDB.4.0"
        cN.Open(strdatafile, "Admin")

        Rs.let_ActiveConnection(cN)
        Rs.CursorType = ADODB.CursorTypeEnum.adOpenKeyset
        Rs.LockType = ADODB.LockTypeEnum.adLockOptimistic

        Rs.Open("select * from auto_result", cN)
        Rs.MoveFirst()

        While Not Rs.EOF
            Temp1(i) = Rs.Fields(0).Value
            Temp2(i) = Rs.Fields(1).Value
            Temp3(i) = Rs.Fields(2).Value
            Temp4(i) = Rs.Fields(3).Value
            Temp5(i) = Rs.Fields(4).Value
            Temp6(i) = Rs.Fields(5).Value
            Temp7(i) = Rs.Fields(6).Value
            Temp8(i) = Rs.Fields(7).Value
            Temp9(i) = Rs.Fields(8).Value
            Temp10(i) = Rs.Fields(9).Value

            Rs.MoveNext()
            i = i + 1
        End While

        xlBook.Tables(11).Cell(1, 1).Select()
        xlBook.Tables(11).Cell(j + 1, 1).Range.InsertAfter(Temp1(j))

        Rs.Close()
        cN.Close()

#2


不行啊


注意这是用在web页面上的,可能有权限问题

#3


在服务器后台生成好Doc文件(操作Word对象)然后把文件发送到客户端

#4


我觉得也是,比较有效安全的方法是,先把数据暂时存在临时目录的文本文件里,然后在WORD中有VB编辑器,可以设计成你需要的格式,然后在WORD中写宏,VBA,把临时目录数据装入

#5


具体怎么操作呢?

#1


我有现成的代码,等一下我考下来!
Dim xlApp As Object
        Dim xlBook As Object

        On Error Resume Next
        xlApp = CreateObject("word.application")
        xlBook = xlApp.Documents.Open(VB6.GetPath & "\格式.doc")

        xlBook.AcceptAllRevisions()
        xlBook.Activate()

        xlBook.Tables(1).Cell(1, 2).Select()
        xlBook.Tables(1).Cell(1, 2).Range.InsertAfter(Str(Ht))
        xlBook.Tables(1).Cell(1, 4).Range.InsertAfter(Str(He))
        xlBook.Tables(1).Cell(2, 2).Range.InsertAfter(Str(HJing))
        xlBook.Tables(1).Cell(2, 4).Range.InsertAfter(Str(Nden))
        xlBook.Tables(1).Cell(3, 2).Range.InsertAfter(Str(Gr))
        xlBook.Tables(1).Cell(3, 4).Range.InsertAfter(Taoguan)
        xlBook.Tables(1).Cell(4, 2).Range.InsertAfter(Str(Pi))

        '***打开数据库,从表中读取数据到word中***'
        Dim cN As ADODB.Connection
        Dim Rs As ADODB.Recordset

        Rs = New ADODB.Recordset
        cN = New ADODB.Connection

        Dim strdatafile As String
        strdatafile = VB6.GetPath & "\result.mdb"
        cN.Provider = "Microsoft.Jet.OLEDB.4.0"
        cN.Open(strdatafile, "Admin")

        Rs.let_ActiveConnection(cN)
        Rs.CursorType = ADODB.CursorTypeEnum.adOpenKeyset
        Rs.LockType = ADODB.LockTypeEnum.adLockOptimistic

        Rs.Open("select * from auto_result", cN)
        Rs.MoveFirst()

        While Not Rs.EOF
            Temp1(i) = Rs.Fields(0).Value
            Temp2(i) = Rs.Fields(1).Value
            Temp3(i) = Rs.Fields(2).Value
            Temp4(i) = Rs.Fields(3).Value
            Temp5(i) = Rs.Fields(4).Value
            Temp6(i) = Rs.Fields(5).Value
            Temp7(i) = Rs.Fields(6).Value
            Temp8(i) = Rs.Fields(7).Value
            Temp9(i) = Rs.Fields(8).Value
            Temp10(i) = Rs.Fields(9).Value

            Rs.MoveNext()
            i = i + 1
        End While

        xlBook.Tables(11).Cell(1, 1).Select()
        xlBook.Tables(11).Cell(j + 1, 1).Range.InsertAfter(Temp1(j))

        Rs.Close()
        cN.Close()

#2


不行啊


注意这是用在web页面上的,可能有权限问题

#3


在服务器后台生成好Doc文件(操作Word对象)然后把文件发送到客户端

#4


我觉得也是,比较有效安全的方法是,先把数据暂时存在临时目录的文本文件里,然后在WORD中有VB编辑器,可以设计成你需要的格式,然后在WORD中写宏,VBA,把临时目录数据装入

#5


具体怎么操作呢?