操作Word文档的类(VB.NET)

有时候我们需要在程序中操作Word文档,虽然C#可以用来写这样的一个类,但由于VB先天的优势(对VBA的完全支持),用VB来写显然是更好的选择。下面这个类基于网上的一个类,修改了其中的一些错误,添加了几个方法,在我的运行环境(VS.NET,Office2003)中运行通过。使用时,在“引用”中添加这个类的引用,就可以直接用C#调用类中的方法来操作Word文档了。

Public Class WordOpLibClass WordOpLib

    Private oWordApplic As Word.Application

    Private oDocument As Word.Document

    Private oRange As Word.Range

    Private oSelection As Word.Selection

    Public Sub New()Sub New()

        '激活com  word接口

        oWordApplic = New Word.Application

        oWordApplic.Visible = True

    End Sub

    '设置选定文本

    Public Sub SetRange()Sub SetRange(ByVal para As Integer)

        oRange = oDocument.Paragraphs(para).Range

        oRange.Select()

    End Sub

    Public Sub SetRange()Sub SetRange(ByVal para As Integer, ByVal sent As Integer)

        oRange = oDocument.Paragraphs(para).Range.Sentences(sent)

        oRange.Select()

    End Sub

    Public Sub SetRange()Sub SetRange(ByVal startpoint As Integer, ByVal endpoint As Integer, ByVal flag As Boolean)

        If flag = True Then

            oRange = oDocument.Range(startpoint, endpoint)

            oRange.Select()

        Else



        End If

    End Sub



    '生成空的新文档

    Public Sub NewDocument()Sub NewDocument()

        Dim missing = System.Reflection.Missing.Value

        Dim isVisible As Boolean = True

        oDocument = oWordApplic.Documents.Add(missing, missing, missing, missing)

        oDocument.Activate()

    End Sub

    '使用模板生成新文档

    Public Sub NewDocWithModel()Sub NewDocWithModel(ByVal FileName As String)

        Dim missing = System.Reflection.Missing.Value

        Dim isVisible As Boolean = True

        Dim strName As String

        strName = FileName



        oDocument = oWordApplic.Documents.Add(strName, missing, missing, isVisible)

        oDocument.Activate()

    End Sub

    '打开已有文档

    Public Sub OpenFile()Sub OpenFile(ByVal FileName As String)

        Dim strName As String

        Dim isReadOnly As Boolean

        Dim isVisible As Boolean

        Dim missing = System.Reflection.Missing.Value



        strName = FileName

        isReadOnly = False

        isVisible = True



        oDocument = oWordApplic.Documents.Open(strName, missing, isReadOnly, missing, missing, missing, missing, missing, missing, missing, missing, isVisible, missing, missing, missing, missing)

        oDocument.Activate()



    End Sub

    Public Sub OpenFile()Sub OpenFile(ByVal FileName As String, ByVal isReadOnly As Boolean)

        Dim strName As String

        Dim isVisible As Boolean

        Dim missing = System.Reflection.Missing.Value



        strName = FileName

        isVisible = True



        oDocument = oWordApplic.Documents.Open(strName, missing, isReadOnly, missing, missing, missing, missing, missing, missing, missing, missing, isVisible, missing, missing, missing, missing)

        oDocument.Activate()

    End Sub

    '退出Word

    Public Sub Quit()Sub Quit()

        Dim missing = System.Reflection.Missing.Value

        oWordApplic.Quit()

        System.Runtime.InteropServices.Marshal.ReleaseComObject(oWordApplic)

        oWordApplic = Nothing

    End Sub

    '关闭所有打开的文档

    Public Sub CloseAllDocuments()Sub CloseAllDocuments()

        oWordApplic.Documents.Close(Word.WdSaveOptions.wdDoNotSaveChanges)

    End Sub

    '关闭当前的文档

    Public Sub CloseCurrentDocument()Sub CloseCurrentDocument()

        oDocument.Close(Word.WdSaveOptions.wdDoNotSaveChanges)

    End Sub

    '保存当前文档

    Public Sub Save()Sub Save()

        Try

            oDocument.Save()

        Catch

            MsgBox(Err.Description)

        End Try

    End Sub

    '另存为文档

    Public Sub SaveAs()Sub SaveAs(ByVal FileName As String)

        Dim strName As String

        Dim missing = System.Reflection.Missing.Value



        strName = FileName



        oDocument.SaveAs(strName, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing)

    End Sub

    '保存为Html文件

    Public Sub SaveAsHtml()Sub SaveAsHtml(ByVal FileName As String)

        Dim missing = System.Reflection.Missing.Value

        Dim strName As String



        strName = FileName

        Dim format = CInt(Word.WdSaveFormat.wdFormatHTML)



        oDocument.SaveAs(strName, format, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing)

    End Sub

    '插入文本

    Public Sub InsertText()Sub InsertText(ByVal text As String)

        oWordApplic.Selection.TypeText(text)

    End Sub

    '插入一个空行

    Public Sub InsertLineBreak()Sub InsertLineBreak()

        oWordApplic.Selection.TypeParagraph()

    End Sub

    '插入指定行数的空行

    Public Sub InsertLineBreak()Sub InsertLineBreak(ByVal lines As Integer)

        Dim i As Integer

        For i = 1 To lines

            oWordApplic.Selection.TypeParagraph()

        Next

    End Sub

    '插入表格

    Public Sub InsertTable()Sub InsertTable(ByRef table As DataTable)

        Dim oTable As Word.Table

        Dim rowIndex, colIndex, NumRows, NumColumns As Integer

        rowIndex = 1

        colIndex = 0



        NumRows = table.Rows.Count + 1

        NumColumns = table.Columns.Count

        oTable = oDocument.Tables.Add(oWordApplic.Selection.Range(), NumRows, NumColumns)





        '初始化列

        Dim Row As DataRow

        Dim Col As DataColumn

        For Each Col In table.Columns

            colIndex = colIndex + 1

            oTable.Cell(1, colIndex).Range.InsertAfter(Col.ColumnName)

        Next



        '将行添入表格

        For Each Row In table.Rows

            rowIndex = rowIndex + 1

            colIndex = 0

            For Each Col In table.Columns

                colIndex = colIndex + 1

                oTable.Cell(rowIndex, colIndex).Range.InsertAfter(Row(Col.ColumnName))

            Next

        Next

        oTable.AllowAutoFit = True

        oTable.ApplyStyleFirstColumn = True

        oTable.ApplyStyleHeadingRows = True

    End Sub

    '设置对齐

    Public Sub SetAlignment()Sub SetAlignment(ByVal strType As String)

        Select Case strType

            Case "center"

                oWordApplic.Selection.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter

            Case "left"

                oWordApplic.Selection.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphLeft

            Case "right"

                oWordApplic.Selection.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphRight

            Case "justify"

                oWordApplic.Selection.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphJustify

        End Select

    End Sub

    '设置字体

    Public Sub SetStyle()Sub SetStyle(ByVal strFont As String)

        Select Case strFont

            Case "bold"

                oWordApplic.Selection.Font.Bold = 1

            Case "italic"

                oWordApplic.Selection.Font.Italic = 1

            Case "underlined"

                oWordApplic.Selection.Font.Subscript = 1

        End Select

    End Sub

    '取消字体风格

    Public Sub DissableStyle()Sub DissableStyle()

        oWordApplic.Selection.Font.Bold = 0

        oWordApplic.Selection.Font.Italic = 0

        oWordApplic.Selection.Font.Subscript = 0

    End Sub

    '设置字体字号

    Public Sub SetFontSize()Sub SetFontSize(ByVal nSize As Integer)

        oWordApplic.Selection.Font.Size = nSize

    End Sub

    '跳过本页

    Public Sub InsertPageBreak()Sub InsertPageBreak()

        Dim pBreak As Integer

        pBreak = CInt(Word.WdBreakType.wdPageBreak)

        oWordApplic.Selection.InsertBreak(pBreak)

    End Sub

    '转到书签

    Public Sub GotoBookMark()Sub GotoBookMark(ByVal strBookMark As String)

        Dim missing = System.Reflection.Missing.Value

        Dim BookMark = CInt(Word.WdGoToItem.wdGoToBookmark)

        oWordApplic.Selection.GoTo(BookMark, missing, missing, strBookMark)

    End Sub

    '判断书签是否存在

    Public Function BookMarkExist()Function BookMarkExist(ByVal strBookMark As String) As Boolean

        Dim Exist As Boolean

        Exist = oDocument.Bookmarks.Exists(strBookMark)

        Return Exist

    End Function

    '转到文档结尾

    Public Sub GotoTheEnd()Sub GotoTheEnd()

        Dim missing = System.Reflection.Missing.Value

        Dim unit = Word.WdUnits.wdStory

        oWordApplic.Selection.EndKey(unit, missing)

    End Sub

    '转到文档开头

    Public Sub GotoTheBegining()Sub GotoTheBegining()

        Dim missing = System.Reflection.Missing.Value

        Dim unit = Word.WdUnits.wdStory

        oWordApplic.Selection.HomeKey(unit, missing)

    End Sub

    '转到表格

    Public Sub GotoTheTable()Sub GotoTheTable(ByVal ntable As Integer)

        'Dim missing = System.Reflection.Missing.Value

        'Dim what = Word.WdGoToItem.wdGoToTable

        'Dim which = Word.WdGoToDirection.wdGoToFirst

        'Dim count = ntable



        'oWordApplic.Selection.GoTo(what, which, count, missing)

        'oWordApplic.Selection.ClearFormatting()



        'oWordApplic.Selection.Text = ""

        oRange = oDocument.Tables(ntable).Cell(1, 1).Range

        oRange.Select()

    End Sub

    '转到表格的某个单元格

    Public Sub GotoTableCell()Sub GotoTableCell(ByVal ntable As Integer, ByVal nRow As Integer, ByVal nColumn As Integer)

        oRange = oDocument.Tables(ntable).Cell(nRow, nColumn).Range

        oRange.Select()

    End Sub

    '表格中转到右面的单元格

    Public Sub GotoRightCell()Sub GotoRightCell()

        Dim missing = System.Reflection.Missing.Value

        Dim direction = Word.WdUnits.wdCell

        oWordApplic.Selection.MoveRight(direction, missing, missing)

    End Sub

    '表格中转到左面的单元格

    Public Sub GotoLeftCell()Sub GotoLeftCell()

        Dim missing = System.Reflection.Missing.Value

        Dim direction = Word.WdUnits.wdCell

        oWordApplic.Selection.MoveLeft(direction, missing, missing)

    End Sub

    '表格中转到下面的单元格

    Public Sub GotoDownCell()Sub GotoDownCell()

        Dim missing = System.Reflection.Missing.Value

        Dim direction = Word.WdUnits.wdCell

        oWordApplic.Selection.MoveDown(direction, missing, missing)

    End Sub

    '表格中转到上面的单元格

    Public Sub GotoUpCell()Sub GotoUpCell()

        Dim missing = System.Reflection.Missing.Value

        Dim direction = Word.WdUnits.wdCell

        oWordApplic.Selection.MoveUp(direction, missing, missing)

    End Sub

    '插入图片

    Public Sub InsertPic()Sub InsertPic(ByVal FileName As String)

        Dim missing = System.Reflection.Missing.Value

        oWordApplic.Selection.InlineShapes.AddPicture(FileName, False, True, missing)

    End Sub



End Class

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值