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(1, 1).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