Office Operation

来源:互联网 发布:hypervisor软件 编辑:程序博客网 时间:2024/04/18 13:01
VB.NET操作WORD
  1Public Class WordOpLib
  
2
  
3
  
4    Private oWordApplic As Word.ApplicationClass
  
5    Private oDocument As Word.Document
  
6    Private oRange As Word.Range
  
7    Private oShape As Word.Shape
  
8    Private oSelection As Word.Selection
  
9
 
10
 
11    Public Sub New()
 
12        '激活com  word接口
 13        oWordApplic = New Word.ApplicationClass
 
14        oWordApplic.Visible = False
 
15
 
16    End Sub
 
17    '设置选定文本
 18    Public Sub SetRange(ByVal para As Integer)
 
19        oRange = oDocument.Paragraphs(para).Range
 
20        oRange.Select()
 
21    End Sub
 
22    Public Sub SetRange(ByVal para As Integer, ByVal sent As Integer)
 
23        oRange = oDocument.Paragraphs(para).Range.Sentences(sent)
 
24        oRange.Select()
 
25    End Sub
 
26    Public Sub SetRange(ByVal startpoint As Integer, ByVal endpoint As Integer, ByVal flag As Boolean)
 
27        If flag = True Then
 
28            oRange = oDocument.Range(startpoint, endpoint)
 
29            oRange.Select()
 
30        Else
 
31
 
32        End If
 
33    End Sub
 
34
 
35    '生成空的新文档
 36    Public Sub NewDocument()
 
37        Dim missing = System.Reflection.Missing.Value
 
38        Dim isVisible As Boolean = True
 
39        oDocument = oWordApplic.Documents.Add(missing, missing, missing, missing)
 
40        oDocument.Activate()
 
41    End Sub
 
42    '使用模板生成新文档
 43    Public Sub NewDocWithModel(ByVal FileName As String)
 
44        Dim missing = System.Reflection.Missing.Value
 
45        Dim isVisible As Boolean = False
 
46        Dim strName As String
 
47        strName = FileName
 
48        oDocument = oWordApplic.Documents.Add(strName, missing, missing, isVisible)
 
49        oDocument.Activate()
 
50    End Sub
 
51    '打开已有文档
 52    Public Sub OpenFile(ByVal FileName As String)
 
53        Dim strName As String
 
54        Dim isReadOnly As Boolean
 
55        Dim isVisible As Boolean
 
56        Dim missing = System.Reflection.Missing.Value
 
57
 
58        strName = FileName
 
59        isReadOnly = False
 
60        isVisible = True
 
61
 
62        oDocument = oWordApplic.Documents.Open(strName, missing, isReadOnly, missing, missing, missing, missing, missing, missing, missing, missing, isVisible, missing, missing, missing, missing)
 
63        oDocument.Activate()
 
64
 
65    End Sub
 
66    Public Sub OpenFile(ByVal FileName As String, ByVal isReadOnly As Boolean)
 
67        Dim strName As String
 
68        Dim isVisible As Boolean
 
69        Dim missing = System.Reflection.Missing.Value
 
70
 
71        strName = FileName
 
72        isVisible = True
 
73
 
74        oDocument = oWordApplic.Documents.Open(strName, missing, isReadOnly, missing, missing, missing, missing, missing, missing, missing, missing, isVisible, missing, missing, missing, missing)
 
75        oDocument.Activate()
 
76    End Sub
 
77    '退出Word
 78    Public Sub Quit()
 
79        Dim missing = System.Reflection.Missing.Value
 
80        oWordApplic.Quit()
 
81        System.Runtime.InteropServices.Marshal.ReleaseComObject(oWordApplic)
 
82        oWordApplic = Nothing
 
83    End Sub
 
84    '关闭所有打开的文档
 85    Public Sub CloseAllDocuments()
 
86        oWordApplic.Documents.Close(Word.WdSaveOptions.wdDoNotSaveChanges)
 
87    End Sub
 
88    '关闭当前的文档
 89    Public Sub CloseCurrentDocument()
 
90
 
91        oDocument.Close(Word.WdSaveOptions.wdDoNotSaveChanges)
 
92    End Sub
 
93    '保存当前文档
 94    Public Sub Save()
 
95        Try
 
96            oDocument.Save()
 
97        Catch
 
98            MsgBox(Err.Description)
 
99        End Try
100    End Sub
101    '另存为文档
102    Public Sub SaveAs(ByVal FileName As String)
103        Dim strName As String
104        Dim missing = System.Reflection.Missing.Value
105
106        strName = FileName
107
108        oDocument.SaveAs(strName, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing)
109    End Sub
110    '保存为Html文件
111    Public Sub SaveAsHtml(ByVal FileName As String)
112        Dim missing = System.Reflection.Missing.Value
113        Dim strName As String
114
115        strName = FileName
116        Dim format = CInt(Word.WdSaveFormat.wdFormatHTML)
117
118        oDocument.SaveAs(strName, format, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing)
119    End Sub
120    '插入文本
121    Public Sub InsertText(ByVal text As String)
122        oWordApplic.Selection.TypeText(text)
123    End Sub
124    '插入一个空行
125    Public Sub InsertLineBreak()
126        oWordApplic.Selection.TypeParagraph()
127    End Sub
128    '插入指定行数的空行
129    Public Sub InsertLineBreak(ByVal lines As Integer)
130        Dim i As Integer
131        For i = 1 To lines
132            oWordApplic.Selection.TypeParagraph()
133        Next
134    End Sub
135    '插入表格
136    Public Sub InsertTable(ByRef table As DataTable)
137        Dim oTable As Word.Table
138        Dim rowIndex, colIndex, NumRows, NumColumns As Integer
139        rowIndex = 1
140        colIndex = 0
141        If (table.Rows.Count = 0) Then
142            Exit Sub
143        End If
144
145        NumRows = table.Rows.Count + 1
146        NumColumns = table.Columns.Count
147        oTable = oDocument.Tables.Add(oWordApplic.Selection.Range(), NumRows, NumColumns)
148
149
150        '初始化列
151        Dim Row As DataRow
152        Dim Col As DataColumn
153        'For Each Col In table.Columns
154        '    colIndex = colIndex + 1
155        '    oTable.Cell(1, colIndex).Range.InsertAfter(Col.ColumnName)
156        'Next
157
158        '将行添入表格
159        For Each Row In table.Rows
160            rowIndex = rowIndex + 1
161            colIndex = 0
162            For Each Col In table.Columns
163                colIndex = colIndex + 1
164                oTable.Cell(rowIndex, colIndex).Range.InsertAfter(Row(Col.ColumnName))
165            Next
166        Next
167        oTable.Rows(1).Delete()
168        oTable.AllowAutoFit = True
169        oTable.ApplyStyleFirstColumn = True
170        oTable.ApplyStyleHeadingRows = True
171
172    End Sub
173    '插入表格(修改为在原有表格的基础上添加数据)
174    Public Sub InsertTable2(ByRef table As DataTable, ByVal strbmerge As String, ByVal totalrow As Integer)
175        Dim oTable As Word.Table
176        Dim rowIndex, colIndex, NumRows, NumColumns As Integer
177        Dim strm() As String
178        Dim i As Integer
179        rowIndex = 1
180        colIndex = 0
181
182        If (table.Rows.Count = 0) Then
183            Exit Sub
184        End If
185
186        NumRows = table.Rows.Count + 1
187        NumColumns = table.Columns.Count
188        'oTable = oDocument.Tables.Add(oWordApplic.Selection.Range(), NumRows, NumColumns)
189
190
191        '初始化列
192        Dim Row As DataRow
193        Dim Col As DataColumn
194        'For Each Col In table.Columns
195        '    colIndex = colIndex + 1
196        '    oTable.Cell(1, colIndex).Range.InsertAfter(Col.ColumnName)
197        'Next
198
199        '将行添入表格
200        For Each Row In table.Rows
201            colIndex = 0
202            GotoRightCell()
203            oWordApplic.Selection.InsertRows(1)
204            For Each Col In table.Columns
205                GotoRightCell()
206                colIndex = colIndex + 1
207                Try
208                    oWordApplic.Selection.TypeText(Row(Col.ColumnName))
209                Catch ex As Exception
210                    oWordApplic.Selection.TypeText(" ")
211                End Try
212                'oWordApplic.Selection.Cell(rowIndex, colIndex).Range.InsertAfter(Row(Col.ColumnName))
213            Next
214        Next
215        '如果strbmerge不为空.则要合并相应的行和列
216        If strbmerge.Trim().Length <> 0 Then
217            strm = strbmerge.Split(";")
218            For i = 1 To strm.Length - 1
219                If strm(i).Split(",").Length = 2 Then
220                    MergeDouble(totalrow, strm(0), strm(i).Split(",")(1), strm(i).Split(",")(0))
221                End If
222                MergeSingle(totalrow, strm(0), strm(i))
223            Next
224        End If
225        '删除可能多余的一行
226        'GotoRightCell()
227        'GotoDownCell()
228        'oWordApplic.Selection.Rows.Delete()
229        'oTable.AllowAutoFit = True
230        'oTable.ApplyStyleFirstColumn = True
231        'oTable.ApplyStyleHeadingRows = True
232    End Sub
233    '插入表格(专门适应工程结算工程量清单)
234    Public Sub InsertTableQD(ByRef table As DataTable, ByRef table1 As DataTable)
235        Dim oTable As Word.Table
236        Dim rowIndex, colIndex, NumRows, NumColumns As Integer
237        Dim xmmc As String
238        Dim i As Integer
239        Dim j As Integer
240        rowIndex = 1
241        colIndex = 0
242
243        If (table.Rows.Count = 0) Then
244            Exit Sub
245        End If
246
247        NumRows = table.Rows.Count + 1
248        NumColumns = table.Columns.Count
249        'oTable = oDocument.Tables.Add(oWordApplic.Selection.Range(), NumRows, NumColumns)
250
251
252        '初始化列
253        Dim Row As DataRow
254        Dim rowtemp As DataRow
255        Dim row1() As DataRow
256        Dim Col As DataColumn
257        Dim coltemp As DataColumn
258        'For Each Col In table.Columns
259        '    colIndex = colIndex + 1
260        '    oTable.Cell(1, colIndex).Range.InsertAfter(Col.ColumnName)
261        'Next
262
263        '将行添入表格
264        For Each Row In table.Rows
265            colIndex = 0
266            xmmc = Row("项目名称")
267            GotoRightCell()
268            oWordApplic.Selection.InsertRows(1)
269            For Each Col In table.Columns
270                GotoRightCell()
271                Try
272                    If (Col.ColumnName = "项目序号") Then
273                        oWordApplic.Selection.TypeText(intToUpint(Val(Row(Col.ColumnName))))
274                    Else
275                        oWordApplic.Selection.TypeText(Row(Col.ColumnName))
276                    End If
277                Catch ex As Exception
278                    oWordApplic.Selection.TypeText(" ")
279                End Try
280                'oWordApplic.Selection.Cell(rowIndex, colIndex).Range.InsertAfter(Row(Col.ColumnName))
281            Next
282            row1 = table1.Select("项目名称='" + xmmc + "'")
283
284            For i = 0 To row1.Length - 1
285                GotoRightCell()
286                oWordApplic.Selection.InsertRows(1)
287                For j = 0 To table1.Columns.Count - 1
288                    If (table1.Columns(j).ColumnName <> "项目名称") Then
289                        GotoRightCell()
290                        Try
291                            oWordApplic.Selection.TypeText(row1(i)(j))
292                        Catch ex As Exception
293                            oWordApplic.Selection.TypeText(" ")
294                        End Try
295                    End If
296                    'oWordApplic.Selection.Cell(rowIndex, colIndex).Range.InsertAfter(Row(Col.ColumnName))
297                Next
298            Next
299
300
301
302        Next
303        '删除可能多余的一行
304        'GotoRightCell()
305        'GotoDownCell()
306        'oWordApplic.Selection.Rows.Delete()
307        'oTable.AllowAutoFit = True
308        'oTable.ApplyStyleFirstColumn = True
309        'oTable.ApplyStyleHeadingRows = True
310    End Sub
311    '插入表格,为了满足要求,在中间添加一根竖线
312    Public Sub InsertTable3(ByRef table As DataTable, ByVal introw As Integer, ByVal intcol As Integer)
313        Dim rowIndex, colIndex, NumRows, NumColumns As Integer
314        Dim Row As DataRow
315        Dim Col As DataColumn
316        If (table.Rows.Count = 0) Then
317            Exit Sub
318        End If
319        '首先是拆分选中的单元格
320        oDocument.Tables(1).Cell(introw, 3).Split(table.Rows.Count, 2)
321        '选中初始的单元格
322        oDocument.Tables(1).Cell(introw, 3).Select()
323        '将行添入表格
324        For Each Row In table.Rows
325            Try
326                oDocument.Tables(1).Cell(introw, 3).Range.InsertAfter(Row(0))
327                oDocument.Tables(1).Cell(introw, 4).Range.InsertAfter(Row(1))
328            Catch ex As Exception
329                oDocument.Tables(1).Cell(introw, 3).Range.InsertAfter(" ")
330                oDocument.Tables(1).Cell(introw, 4).Range.InsertAfter(" ")
331            End Try
332            introw = introw + 1
333        Next
334    End Sub
335    '设置对齐
336    Public Sub SetAlignment(ByVal strType As String)
337        Select Case strType
338            Case "center"
339                oWordApplic.Selection.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter
340            Case "left"
341                oWordApplic.Selection.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphLeft
342            Case "right"
343                oWordApplic.Selection.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphRight
344            Case "justify"
345                oWordApplic.Selection.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphJustify
346        End Select
347    End Sub
348    '设置字体
349    Public Sub SetStyle(ByVal strFont As String)
350        Select Case strFont
351            Case "bold"
352                oWordApplic.Selection.Font.Bold = 1
353            Case "italic"
354                oWordApplic.Selection.Font.Italic = 1
355            Case "underlined"
356                oWordApplic.Selection.Font.Subscript = 1
357        End Select
358    End Sub
359    '取消字体风格
360    Public Sub DissableStyle()
361        oWordApplic.Selection.Font.Bold = 0
362        oWordApplic.Selection.Font.Italic = 0
363        oWordApplic.Selection.Font.Subscript = 0
364    End Sub
365    '设置字体字号
366    Public Sub SetFontSize(ByVal nSize As Integer)
367        oWordApplic.Selection.Font.Size = nSize
368    End Sub
369    '跳过本页
370    Public Sub InsertPageBreak()
371        Dim pBreak As Integer
372        pBreak = CInt(Word.WdBreakType.wdPageBreak)
373        oWordApplic.Selection.InsertBreak(pBreak)
374    End Sub
375    '转到书签
376    Public Sub GotoBookMark(ByVal strBookMark As String)
377        Dim missing = System.Reflection.Missing.Value
378        Dim BookMark = CInt(Word.WdGoToItem.wdGoToBookmark)
379        oWordApplic.Selection.GoTo(BookMark, missing, missing, strBookMark)
380    End Sub
381    '判断书签是否存在
382    Public Function BookMarkExist(ByVal strBookMark As String) As Boolean
383        Dim Exist As Boolean
384        Exist = oDocument.Bookmarks.Exists(strBookMark)
385        Return Exist
386    End Function
387    '替换书签的内容
388    Public Sub ReplaceBookMark(ByVal icurnum As String, ByVal strcontent As String)
389        strcontent = strcontent.Replace("0:00:00""")
390        oDocument.Bookmarks(icurnum).Select()
391        oWordApplic.Selection.TypeText(strcontent)
392    End Sub
393
394    '得到书签的名称
395    Public Function GetBookMark(ByVal icurnum As String, ByRef bo As Boolean) As String
396        Dim strReturn As String
397        If Right(oDocument.Bookmarks(icurnum).Name, 5= "TABLE" Then
398            bo = True
399            Dim strTemp As String
400            strTemp = oDocument.Bookmarks(icurnum).Name()
401            strReturn = Mid(strTemp, 1, Len(strTemp) - 5)
402        Else
403            bo = False
404            strReturn = oDocument.Bookmarks(icurnum).Name
405        End If
406        Return strReturn
407    End Function
408    '得到书签的名称
409    Public Function GetBookMark1(ByVal icurnum As String) As String
410        Return oDocument.Bookmarks(icurnum).Name
411    End Function
412    '转到文档结尾
413    Public Sub GotoTheEnd()
414        Dim missing = System.Reflection.Missing.Value
415        Dim unit = Word.WdUnits.wdStory
416        oWordApplic.Selection.EndKey(unit, missing)
417    End Sub
418    '转到文档开头
419    Public Sub GotoTheBegining()
420        Dim missing = System.Reflection.Missing.Value
421        Dim unit = Word.WdUnits.wdStory
422        oWordApplic.Selection.HomeKey(unit, missing)
423    End Sub
424    '删除多余的一行
425    Public Sub DelUnuseRow()
426        oWordApplic.Selection.Rows.Delete()
427    End Sub
428    '转到表格
429    Public Sub GotoTheTable(ByVal ntable As Integer)
430        'Dim missing = System.Reflection.Missing.Value
431        'Dim what = Word.WdGoToItem.wdGoToTable
432        'Dim which = Word.WdGoToDirection.wdGoToFirst
433        'Dim count = ntable
434
435        'oWordApplic.Selection.GoTo(what, which, count, missing)
436        'oWordApplic.Selection.ClearFormatting()
437
438        'oWordApplic.Selection.Text = ""
439        oRange = oDocument.Tables(ntable).Cell(11).Range
440        oRange.Select()
441
442    End Sub
443    '转到表格的某个单元格
444    Public Sub GotoTableCell(ByVal ntable As Integer, ByVal nRow As Integer, ByVal nColumn As Integer)
445        oRange = oDocument.Tables(ntable).Cell(nRow, nColumn).Range
446        oRange.Select()
447    End Sub
448    '表格中转到右面的单元格
449    Public Sub GotoRightCell()
450        Dim missing = System.Reflection.Missing.Value
451        Dim direction = Word.WdUnits.wdCell
452        oWordApplic.Selection.MoveRight(direction, missing, missing)
453    End Sub
454    '表格中转到左面的单元格
455    Public Sub GotoLeftCell()
456        Dim missing = System.Reflection.Missing.Value
457        Dim direction = Word.WdUnits.wdCell
458        oWordApplic.Selection.MoveLeft(direction, missing, missing)
459    End Sub
460    '表格中转到下面的单元格
461    Public Sub GotoDownCell()
462        Dim missing = System.Reflection.Missing.Value
463        Dim direction = Word.WdUnits.wdCell
464        oWordApplic.Selection.MoveDown(direction, missing, missing)
465    End Sub
466    '表格中转到上面的单元格
467    Public Sub GotoUpCell()
468        Dim missing = System.Reflection.Missing.Value
469        Dim direction = Word.WdUnits.wdCell
470        oWordApplic.Selection.MoveUp(direction, missing, missing)
471    End Sub
472    '文档中所有的书签总数
473    Public Function TotalBkM() As Integer
474        Return oDocument.Bookmarks.Count
475    End Function
476    '选中书签
477    Public Sub SelectBkMk(ByVal strName As String)
478        oDocument.Bookmarks.Item(strName).Select()
479    End Sub
480    '插入图片
481    Public Sub InsertPic(ByVal FileName As String)
482        Dim missing = System.Reflection.Missing.Value
483        oWordApplic.Selection.InlineShapes.AddPicture(FileName, False, True, missing).Select()
484        oShape = oWordApplic.Selection.InlineShapes(1).ConvertToShape
485        oWordApplic.Selection.WholeStory()
486        oShape.ZOrder(Microsoft.Office.Core.MsoZOrderCmd.msoSendBehindText)
487    End Sub
488    '统一调整图片的位置.也就是往上面调整图片一半的高度
489    Public Sub SetCurPicHei()
490        Dim e As Word.Shape
491        For Each e In oDocument.Shapes
492            oDocument.Shapes(e.Name).Select()
493            oWordApplic.Selection.ShapeRange.RelativeHorizontalPosition = Word.WdRelativeHorizontalPosition.wdRelativeHorizontalPositionPage
494            oWordApplic.Selection.ShapeRange.RelativeVerticalPosition = Word.WdRelativeVerticalPosition.wdRelativeVerticalPositionParagraph
495            oWordApplic.Selection.ShapeRange.LockAnchor = True
496            'oWordApplic.Selection.ShapeRange.IncrementTop(oDocument.Shapes(e.Name).Height)
497        Next
498    End Sub
499
500    Public Sub SetCurPicHei1()
501        Dim e As Word.Shape
502        For Each e In oDocument.Shapes
503            oDocument.Shapes(e.Name).Select()
504            oWordApplic.Selection.ShapeRange.IncrementTop(oDocument.Shapes(e.Name).Height / 2)
505        Next
506    End Sub
507    Public Sub SetCurPicHei2()
508        Dim e As Word.Shape
509        For Each e In oDocument.Shapes
510            oDocument.Shapes(e.Name).Select()
511            oWordApplic.Selection.ShapeRange.IncrementTop(-oDocument.Shapes(e.Name).Height / 2)
512        Next
513    End Sub
514    Public Function intToUpint(ByVal a As Integer) As String
515        Dim result As String = "一百"
516        Dim a1, a2 As Integer
517        Dim strs() As String = {""""""""""""""""""""""}
518        If (a <= 10) Then
519            result = strs(a)
520        ElseIf (a < 100) Then
521            a1 = a / 10
522            a2 = a Mod 10
523            If (a = 1) Then
524                result = "" + strs(a2)
525            End If
526        Else
527            result = strs(a1) + "" + strs(a2)
528        End If
529        Return result
530    End Function
531    '合并没有参照的某一列,一般来讲对应第一列
532    'itotalrow 总行数
533    'initrow   初始开始的行数,一般情况下该值不为0,没有标题栏的一般为0
534    'intcol    列数
535    Public Sub MergeSingle(ByVal itotalrow As Integer, ByVal initrow As Integer, ByVal intcol As Integer)
536        oDocument.Tables(1).Cell(initrow + 1, intcol).Select()
537        Dim irow As Integer      '当前行数
538        Dim strValue As String   '循环比较的行初值
539        Dim i As Integer
540        Dim direction = Word.WdUnits.wdLine
541        Dim extend = Word.WdMovementType.wdExtend
542
543        i = 0
544        irow = 1 + initrow '初始值为1
545        For i = 2 + initrow To itotalrow + initrow
546
547            strValue = oDocument.Tables(1).Cell(irow, intcol).Range.Text
548            If (oDocument.Tables(1).Cell(i, intcol).Range.Text = oDocument.Tables(1).Cell(irow, intcol).Range.Text) Then
549                '这是对最后一次处理的特殊情况.
550                If (i = itotalrow + initrow) Then
551                    oWordApplic.Selection.MoveDown(direction, (i - irow), extend)
552                    If (i - irow >= 1) Then
553                        oWordApplic.Selection.Cells.Merge()
554                    End If
555                    oDocument.Tables(1).Cell(irow, intcol).Range.Text = strValue
556                End If
557            Else
558                oWordApplic.Selection.MoveDown(direction, (i - irow - 1), extend)
559                If (i - irow - 1 >= 1) Then
560                    oWordApplic.Selection.Cells.Merge()
561                End If
562                oDocument.Tables(1).Cell(irow, intcol).Range.Text = strValue
563                irow = i
564                oDocument.Tables(1).Cell(irow, intcol).Select()
565            End If
566        Next i
567    End Sub
568    '合并有参照的某一列
569    'itotalrow 总行数
570    'initrow   初始开始的行数,一般情况下该值不为0,没有标题栏的一般为0
571    'intcol    列数
572    'basecol   参照合并的那一列
573    Public Sub MergeDouble(ByVal itotalrow As Integer, ByVal initrow As Integer, ByVal intcol As Integer, ByVal basecol As Integer)
574        oDocument.Tables(1).Cell(initrow + 1, intcol).Select()
575        Dim irow As Integer      '当前行数
576        Dim strValue As String   '循环比较的行初值
577        Dim i As Integer
578        Dim direction = Word.WdUnits.wdLine
579        Dim extend = Word.WdMovementType.wdExtend
580
581        i = 0
582        irow = 1 + initrow '初始值为1
583        For i = 2 + initrow To itotalrow + initrow
584
585            strValue = oDocument.Tables(1).Cell(irow, intcol).Range.Text
586            If (oDocument.Tables(1).Cell(i, intcol).Range.Text = oDocument.Tables(1).Cell(irow, intcol).Range.Text) And (getdata(i, basecol) = getdata(irow, basecol)) Then
587                '这是对最后一次处理的特殊情况.
588                If (i = itotalrow + initrow) Then
589                    oWordApplic.Selection.MoveDown(direction, (i - irow), extend)
590                    If (i - irow >= 1) Then
591                        oWordApplic.Selection.Cells.Merge()
592                    End If
593                    oDocument.Tables(1).Cell(irow, intcol).Range.Text = strValue
594                End If
595            Else
596                oWordApplic.Selection.MoveDown(direction, (i - irow - 1), extend)
597                If (i - irow - 1 >= 1) Then
598                    oWordApplic.Selection.Cells.Merge()
599                End If
600                oDocument.Tables(1).Cell(irow, intcol).Range.Text = strValue
601                irow = i
602                oDocument.Tables(1).Cell(irow, intcol).Select()
603            End If
604        Next i
605    End Sub
606    '得到某个单元的值,如果为空的话,有两种情况.
607    '其一:是一个合并的单元格,取其上面的值
608    '其二:该单元格本来就是空值
609    Public Function getdata(ByVal introw As Integer, ByVal intcol As Integer) As String
610        Try
611            If (oDocument.Tables(1).Cell(introw, intcol).Range.Text = "" Or (oDocument.Tables(1).Cell(introw, intcol).Range.Text = Nothing)) Then
612                getdata = getdata(introw - 1, intcol)
613            Else
614                getdata = oDocument.Tables(1).Cell(introw, intcol).Range.Text
615            End If
616        Catch ex As Exception
617            getdata = getdata(introw - 1, intcol)
618        End Try
619
620
621    End Function
622End Class



C#操作Word完全方法

前提: 
导入COM库:Microsoft word 11.0 Object Library. 
引用里面就增加了: 

创建新Word 

复制  保存
object oMissing = System.Reflection.Missing.Value;Word._Application oWord;Word._Document oDoc;oWord = new Word.Application();oWord.Visible = true;oDoc = oWord.Documents.Add(ref oMissing, ref oMissing, ref oMissing, ref oMissing);


打开文档: 

复制  保存
object oMissing = System.Reflection.Missing.Value;Word._Application oWord;Word._Document oDoc;oWord = new Word.Application();oWord.Visible = true;object fileName = @"E:CCCXCXXTestDoc.doc";oDoc = oWord.Documents.Open(ref fileName,ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing);


导入模板 

复制  保存
object oMissing = System.Reflection.Missing.Value;Word._Application oWord;Word._Document oDoc;oWord = new Word.Application();oWord.Visible = true;object fileName = @"E:XXXCCXTest.doc";oDoc = oWord.Documents.Add(ref fileName, ref oMissing, ref oMissing, ref oMissing);


添加新表 

复制  保存
object oMissing = System.Reflection.Missing.Value;Word._Application oWord;Word._Document oDoc;oWord = new Word.Application();oWord.Visible = true;oDoc = oWord.Documents.Add(ref oMissing, ref oMissing, ref oMissing, ref oMissing);object start = 0;object end = 0;Word.Range tableLocation = oDoc.Range(ref start, ref end);oDoc.Tables.Add(tableLocation, 3, 4, ref oMissing, ref oMissing);


表插入行 

复制  保存
object oMissing = System.Reflection.Missing.Value;Word._Application oWord;Word._Document oDoc;oWord = new Word.Application();oWord.Visible = true;oDoc = oWord.Documents.Add(ref oMissing, ref oMissing, ref oMissing, ref oMissing);object start = 0;object end = 0;Word.Range tableLocation = oDoc.Range(ref start, ref end);oDoc.Tables.Add(tableLocation, 3, 4, ref oMissing, ref oMissing);Word.Table newTable = oDoc.Tables[1];object beforeRow = newTable.Rows[1];newTable.Rows.Add(ref beforeRow);


单元格合并 

复制  保存
object oMissing = System.Reflection.Missing.Value;Word._Application oWord;Word._Document oDoc;oWord = new Word.Application();oWord.Visible = true;oDoc = oWord.Documents.Add(ref oMissing, ref oMissing, ref oMissing, ref oMissing);object start = 0;object end = 0;Word.Range tableLocation = oDoc.Range(ref start, ref end);oDoc.Tables.Add(tableLocation, 3, 4, ref oMissing, ref oMissing);Word.Table newTable = oDoc.Tables[1];object beforeRow = newTable.Rows[1];newTable.Rows.Add(ref beforeRow);Word.Cell cell = newTable.Cell(1, 1);cell.Merge(newTable.Cell(1, 2));


单元格分离 

复制  保存
object oMissing = System.Reflection.Missing.Value;Word._Application oWord;Word._Document oDoc;oWord = new Word.Application();oWord.Visible = true;oDoc = oWord.Documents.Add(oMissing, ref oMissing, ref oMissing);object start = 0;object end = 0;Word.Range tableLocation = oDoc.Range(ref start, ref end);oDoc.Tables.Add(tableLocation, 3, 4, ref oMissing, ref oMissing);Word.Table newTable = oDoc.Tables[1];object beforeRow = newTable.Rows[1];newTable.Rows.Add(ref beforeRow);Word.Cell cell = newTable.Cell(1, 1);cell.Merge(newTable.Cell(1, 2));object Rownum = 2;object Columnnum = 2;cell.Split(ref Rownum, ref  Columnnum);


通过段落控制插入 

复制  保存
object oMissing = System.Reflection.Missing.Value;object oEndOfDoc = @"endofdoc"; /* endofdoc is a predefined bookmark *///Start Word and create a new document.Word._Application oWord;Word._Document oDoc;oWord = new Word.Application();oWord.Visible = true;oDoc = oWord.Documents.Add(ref oMissing, ref oMissing, ref oMissing, ref oMissing);//Insert a paragraph at the beginning of the document.Word.Paragraph oPara1;oPara1 = oDoc.Content.Paragraphs.Add(ref oMissing);oPara1.Range.Text = "Heading 1";oPara1.Range.Font.Bold = 1;oPara1.Format.SpaceAfter = 24;    //24 pt spacing after paragraph.oPara1.Range.InsertParagraphAfter();
原创粉丝点击