在这里给出了一个Word操作的类,该类具备了对word 文档操作的基本功能,包括word 文档的新建,打开,保存,另存,插入图片,插入表格,插入文字,读取文字,定位光标位置,移动光标,移动到指定页等等操作。在下一篇文章中我将给出这个类实现的实例,读者可以借鉴下
程序引用的是Microsoft Word 14.0 Object Library 使用word 2007 +VS2010
- '*********************************************************************
- '作者:章鱼哥,QQ:3107073263 群:309816713
- '如有疑问或好的建议请联系我,大家一起进步
- '*********************************************************************
- Imports Microsoft.Office.Interop
- Public Class Class_Word1
- Public ZWordApplic As Word.Application
- Private ZDocument As Word.Document
- Public Sub New() '生成类实例
- ZWordApplic = New Word.Application
- ZWordApplic.Visible = True
- End Sub
- '新建一个Word文档
- Public Sub NewDocument()
- ZDocument = ZWordApplic.Documents.Add() '新建一个文档
- End Sub
- '使用模板新建一个文档
- Public Sub ModulNewDocument(ByVal FileAddress As String)
- ZDocument = ZWordApplic.Documents.Add(FileAddress)
- End Sub
- '打开一个文档
- Public Sub OpenWordDocument(ByVal FileAddress As String,ByVal IsReadOnly As Boolean)
- Try
- ZDocument = ZWordApplic.Documents.Open(FileAddress,Nothing,IsReadOnly)
- Catch ex As Exception
- MsgBox("您输入的地址不正确")
- End Try
- End Sub
- '关闭一个文档
- Public Sub CloseWordDocument()
- ZWordApplic.Quit()
- System.Runtime.InteropServices.Marshal.ReleaseComObject(ZWordApplic)
- ZWordApplic = Nothing
- End Sub
- '关闭所有打开的文档
- Public Sub CloseAllDocuments()
- ' ZWordApplic.Documents.Close(Word.WdSaveOptions.wdDoNotSaveChanges)
- ZWordApplic.Documents.Close(Word.WdSaveOptions.wdDoNotSaveChanges)
- End Sub
- '保存文档
- Public Sub Save()
- Try
- ZDocument.Save()
- MsgBox("保存成功")
- Catch ex As Exception
- MsgBox(ex.Message)
- End Try
- End Sub
- '另存为
- Public Sub SaveAs(ByVal FileAdress As String)
- Try
- ZDocument.SaveAs2(FileAdress)
- MsgBox("另存为成功!")
- Catch ex As Exception
- MsgBox(ex.Message)
- End Try
- End Sub
- '插入文字
- Public Sub InsertText(ByVal text As String)
- ZWordApplic.Selection.TypeText(text)
- End Sub
- '插入表格
- Public Sub InsertTabel(ByVal Tabel As DataTable)
- Dim ZTabel As Word.Table
- ZTabel = ZDocument.Tables.Add(ZWordApplic.Selection.Range,Tabel.Rows.Count + 1,Tabel.Columns.Count)
- '添加表头
- For i = 1 To Tabel.Columns.Count
- ZTabel.Rows(1).Cells(i).Range.InsertAfter(Tabel.Columns(i - 1).ColumnName)
- Next
- '添加表格数据
- For i = 2 To Tabel.Rows.Count + 1
- For j = 1 To Tabel.Columns.Count
- ZTabel.Rows(i).Cells(j).Range.InsertAfter(Tabel.Rows(i - 2).Item(j - 1).ToString)
- Next
- Next
- ZTabel.AllowAutoFit = True
- ZTabel.ApplyStyleFirstColumn = True
- ZTabel.ApplyStyleHeadingRows = True
- End Sub
- '插入图片
- Public Sub InsertPic(ByVal PicAddress As String)
- Try
- ZWordApplic.Selection.InlineShapes.AddPicture(PicAddress,False,True)
- Catch ex As Exception
- MsgBox("图片地址不正确 ")
- End Try
- End Sub
- '读取文字
- Public Sub ReadText()
- ZWordApplic.Selection.WholeStory()
- ZWordApplic.Selection.Copy()
- End Sub
- '获取当前的光标位置信息,存放在数组中
- Public Function GetCursor() As ArrayList
- Try
- Dim cursor As New ArrayList
- '当前光标所在的页数
- Dim Page As Object = ZDocument.Application.Selection.Information(Word.WdInformation.wdActiveEndAdjustedPageNumber)
- '当前光标所在行数
- Dim row As Object = ZDocument.Application.Selection.Information(Word.WdInformation.wdFirstCharacterLineNumber)
- '当前光标所在列数
- Dim cul As Object = ZDocument.Application.Selection.Information(Word.WdInformation.wdFirstCharacterColumnNumber)
- cursor.AddRange({Page,row,cul})
- Return cursor
- Catch ex As Exception
- MsgBox(ex.Message)
- Return Nothing
- End Try
- End Function
- '鼠标定位到指定页
- Public Sub GoToPage(ByVal Page As Integer)
- Try
- '跳转到指定页码
- ZDocument.Application.Selection.GoTo(Word.WdGoToItem.wdGoToPage,Word.WdGoToDirection.wdGoToFirst,Page)
- Catch ex As Exception
- MsgBox(ex.Message)
- End Try
- End Sub
- '光标调到指定行。这个是绝对跳转
- Public Sub GoToAbsolutLine(ByVal Row As Integer)
- Try
- '跳转到指定行,说明:这个行是相对于整个文档来算的,将如第一页就2行,你跳到第三行的时候,就是第2页的第1行
- '读者可自行测试,目前还实现不了给定页,行,列调到精确位置的功能。至少我还没实现。这里就不进行实现了
- ZDocument.Application.Selection.GoTo(Word.WdGoToItem.wdGoToLine,Row)
- Catch ex As Exception
- MsgBox(ex.Message)
- End Try
- End Sub
- '光标调到指定行。这个是相对跳转。大家应该理解什么意思的
- Public Sub GoToOppsiteLine(ByVal Row As Int16)
- Try
- '读者可自行测试,目前还实现不了给定页,行,列调到精确位置的功能。至少我还没实现
- If Row >= 0 Then '如果大于0,像后跳转
- ZDocument.Application.Selection.GoTo(Word.WdGoToItem.wdGoToLine,Word.WdGoToDirection.wdGoToNext,Math.Abs(Row))
- Else '小于0,像前跳转
- ZDocument.Application.Selection.GoTo(Word.WdGoToItem.wdGoToLine,Word.WdGoToDirection.wdGoToPrevIoUs,Math.Abs(Row))
- End If
- Catch ex As Exception
- MsgBox(ex.Message)
- End Try
- End Sub
- '左移光标
- Public Sub MoveLeft()
- ZDocument.Application.Selection.MoveLeft() '每次移动1位
- End Sub
- '右移
- Public Sub MoveRight()
- ZDocument.Application.Selection.MoveRight() '每次移动1位
- End Sub
- '上移
- Public Sub MoveUp()
- ZDocument.Application.Selection.MoveUp() '每次移动1位
- End Sub
- '下移
- Public Sub MoveDown()
- ZDocument.Application.Selection.MoveDown() '每次移动1位
- End Sub
- End Class