关键词搜索

源码搜索 ×
×

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

发布2022-06-14浏览467次

详情内容

        vb.net教程https://www.xin3721.com/eschool/vbnetxin3721/

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

Public Class WordOpLib
    Private oWordApplic As Word.Application
    Private oDocument As Word.Document
    Private oRange As Word.Range
    Private oSelection As Word.Selection
    Public Sub New()
        '激活com  word接口
        oWordApplic = New Word.Application
        oWordApplic.Visible = True
    End Sub
    '设置选定文本
    Public Sub SetRange(ByVal para As Integer)
        oRange = oDocument.Paragraphs(para).Range
        oRange.Select()
    End Sub
    Public Sub SetRange(ByVal para As Integer, ByVal sent As Integer)
        oRange = oDocument.Paragraphs(para).Range.Sentences(sent)
        oRange.Select()
    End Sub
    Public 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()
        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(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(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(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()
        Dim missing = System.Reflection.Missing.Value
        oWordApplic.Quit()
        System.Runtime.InteropServices.Marshal.ReleaseComObject(oWordApplic)
        oWordApplic = Nothing
    End Sub
    '关闭所有打开的文档
    Public Sub CloseAllDocuments()
        oWordApplic.Documents.Close(Word.WdSaveOptions.wdDoNotSaveChanges)
    End Sub
    '关闭当前的文档
    Public Sub CloseCurrentDocument()
        oDocument.Close(Word.WdSaveOptions.wdDoNotSaveChanges)
    End Sub
    '保存当前文档
    Public Sub Save()
        Try
            oDocument.Save()
        Catch
            MsgBox(Err.Description)
        End Try
    End Sub
    '另存为文档
    Public 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(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(ByVal text As String)
        oWordApplic.Selection.TypeText(text)
    End Sub
    '插入一个空行
    Public Sub InsertLineBreak()
        oWordApplic.Selection.TypeParagraph()
    End Sub
    '插入指定行数的空行
    Public Sub InsertLineBreak(ByVal lines As Integer)
        Dim i As Integer
        For i = 1 To lines
            oWordApplic.Selection.TypeParagraph()
        Next
    End Sub
    '插入表格
    Public 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(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(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()
        oWordApplic.Selection.Font.Bold = 0
        oWordApplic.Selection.Font.Italic = 0
        oWordApplic.Selection.Font.Subscript = 0
    End Sub
    '设置字体字号
    Public Sub SetFontSize(ByVal nSize As Integer)
        oWordApplic.Selection.Font.Size = nSize
    End Sub
    '跳过本页
    Public Sub InsertPageBreak()
        Dim pBreak As Integer
        pBreak = CInt(Word.WdBreakType.wdPageBreak)
        oWordApplic.Selection.InsertBreak(pBreak)
    End Sub
    '转到书签
    Public 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(ByVal strBookMark As String) As Boolean
        Dim Exist As Boolean
        Exist = oDocument.Bookmarks.Exists(strBookMark)
        Return Exist
    End Function
    '转到文档结尾
    Public Sub GotoTheEnd()
        Dim missing = System.Reflection.Missing.Value
        Dim unit = Word.WdUnits.wdStory
        oWordApplic.Selection.EndKey(unit, missing)
    End Sub
    '转到文档开头
    Public Sub GotoTheBegining()
        Dim missing = System.Reflection.Missing.Value
        Dim unit = Word.WdUnits.wdStory
        oWordApplic.Selection.HomeKey(unit, missing)
    End Sub
    '转到表格
    Public 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(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()
        Dim missing = System.Reflection.Missing.Value
        Dim direction = Word.WdUnits.wdCell
        oWordApplic.Selection.MoveRight(direction, missing, missing)
    End Sub
    '表格中转到左面的单元格
    Public Sub GotoLeftCell()
        Dim missing = System.Reflection.Missing.Value
        Dim direction = Word.WdUnits.wdCell
        oWordApplic.Selection.MoveLeft(direction, missing, missing)
    End Sub
    '表格中转到下面的单元格
    Public Sub GotoDownCell()
        Dim missing = System.Reflection.Missing.Value
        Dim direction = Word.WdUnits.wdCell
        oWordApplic.Selection.MoveDown(direction, missing, missing)
    End Sub
    '表格中转到上面的单元格
    Public Sub GotoUpCell()
        Dim missing = System.Reflection.Missing.Value
        Dim direction = Word.WdUnits.wdCell
        oWordApplic.Selection.MoveUp(direction, missing, missing)
    End Sub
    '插入图片
    Public Sub InsertPic(ByVal FileName As String)
        Dim missing = System.Reflection.Missing.Value
        oWordApplic.Selection.InlineShapes.AddPicture(FileName, False, True, missing)
    End Sub

End Class

相关技术文章

点击QQ咨询
开通会员
返回顶部
×
微信扫码支付
微信扫码支付
确定支付下载
请使用微信描二维码支付
×

提示信息

×

选择支付方式

  • 微信支付
  • 支付宝付款
确定支付下载