Visual Basic 2017 操作Excel和word【2】持续更新……

1.控制台程序创建Excel,并设置状态栏显示“Hello World”文本

Module Module1

    Private exitXL As Boolean = False
Dim WithEvents myExcelApp As Excel.Application 'withEvents 表示定义的变量具有相对应的事件,此处myExcelApp对象具有Excel.Application所对应的事件过程 Sub Main() myExcelApp = New Excel.Application
myExcelApp.Visible = True
myExcelApp.StatusBar = "Hello World"
myExcelApp.Workbooks.Add() While exitXL = False
'若没有这一句,控制台窗口将自动关闭,System.Windows.Forms.Application.DoEvents()方法可以使窗体处理其他事件,所以窗体能够进行重绘。不至于出现假死现象。
System.Windows.Forms.Application.DoEvents()
End While End Sub
Private Sub myExcelApp_SheetBeforeDoubleClick(ByVal sheet As Object, ByVal target As Excel.Range, ByRef cancel As Boolean) Handles myExcelApp.SheetBeforeDoubleClick
exitXL = True
End Sub End Module

运行结果:

Visual Basic 2017  操作Excel和word【2】持续更新……

2.实时显示60秒的倒计时效果

核心语句:System.Windows.Forms.Application.DoEvents()方法的作用

Imports System.Threading
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim i As Integer =
While i >=
TextBox1.Text = i.ToString()
System.Windows.Forms.Application.DoEvents() '若我们去掉此行代码,则会出现界面卡死的现象,无法实现每隔一秒钟显示当前倒计时的效果。
i = i -
Thread.Sleep()
End While
End Sub
End Class
'*********************************************************************************************************
'* MSDN针对System.Windows.Forms.Application.DoEvents()的解释: *
'* 当运行Windows窗体时, 会创建新窗体, 然后窗体将等待处理各种事件, 而窗体每次处理事件时, *
'* 都会处理完与该事件关联的所有代码, 才会去处理其他事件, 这时其他事件将会在队列中等待。 *
'* 因此, 在处理事件时, 程序并不进行响应, 当然也不会进行窗口重绘操作。 *
'* 但是System.Windows.Forms.Application.DoEvents()方法可以使窗体处理其他事件,所以窗体能够进行重绘。 *
'*********************************************************************************************************

运行结果:

Visual Basic 2017  操作Excel和word【2】持续更新……

表2.1  显示Word的加载项对象的属性和方法的简表

属性或方法

名    称

返回类型

属性

Application

Application

属性

Autoload

Boolean

属性

Compiled

Boolean

属性

Creator

Int32

方法

Delete

Void

属性

Index

Int32

属性

Installed

Boolean

属性

Name

String

属性

Parent

Object

属性

Path

String

 清单2.3  完整的WordWiki实现(将文本文档test.txt中的内容以表格的形式存入word中)

Imports System.Collections.Generic
Imports System.Text
Imports System.IO
Imports Office = Microsoft.Office.Core
Imports Word = Microsoft.Office.Interop.Word Module Module1
Sub Main(ByVal args As String()) Dim theApplication As New Word.Application '定义word程序
theApplication.Visible = True '使word程序可视
Dim theDocument As Word.Document '定义word文档
theDocument = theApplication.Documents.Add() '为程序添加word文档 Dim reader As TextReader '定义Txt文本读取器
reader = New System.IO.StreamReader(My.Application.Info.DirectoryPath & "/test.txt") '实例化读取文本接口,My.Application.Info.DirectoryPath指的是本程序的\bin\Debug目录 Dim separators() As String '定义分隔符字符串
separators() = "||" '为分隔符变量赋值
Dim rowCount As Integer = '定义行数
Dim columnCount As Integer = '定义列数 ' 读取行并计算行数和列数
Dim rowList As New System.Collections.Generic.List(Of String) '定义字符串型的列表集对象
Dim row As String = reader.ReadLine() '读取文本存储器中的一行
While row IsNot Nothing '读取行没有到结尾
rowCount += '读取下一行
rowList.Add(row) '将所读取的一行文本存储在列表集对象中 ' 如果这是第一行,就计算列数
If rowCount = Then
Dim splitHeaderRow As String() = row.Split(separators, StringSplitOptions.None) 'StringSplitOptions.None,就是分开的数组元素包括空元素
columnCount = splitHeaderRow.Length - ' 忽略第一和最后一个分隔符
End If
row = reader.ReadLine()
End While ' 在word中创建一个表
Dim range As Word.Range = theDocument.Range() '定义文档单元格
Dim table As Word.Table = range.Tables.Add(range, rowCount, columnCount) '创建一个rowCount行columnCount列的表格 ' 操作word中所创建的表
Dim columnIndex As Integer =
Dim rowIndex As Integer = For Each r As String In rowList
Dim splitRow As String() = r.Split(separators, StringSplitOptions.None) 'StringSplitOptions.None,就是分开的数组元素包括空元素
For columnIndex = To columnCount
Dim cell As Word.Cell = table.Cell(rowIndex, columnIndex) '\bin\Debug目录中test.txt文件中的结尾不能有多余的空行,不然会提示超出索引范围而出现错误
cell.Range.Text = splitRow(columnIndex)
Next
rowIndex +=
Next ' 格式化表格
table.Rows().Range.Bold =
table.AutoFitBehavior(Word.WdAutoFitBehavior.wdAutoFitContent) 'AutoFitBehavior()方法的作用就是以某种方法调整表格,ord.WdAutoFitBehavior.wdAutoFitContent表示表格根据内容来调节 ' 退出前等待命令输入
System.Console.WriteLine("Table complete.")
System.Console.ReadLine() ' 没有保存更改而退出
theApplication.Quit(False)
End Sub
End Module

test.txt文档中的内容

||Property or Method||Name||Return Type||
||Property||Application||Application||
||Property||Autoload||Boolean||
||Property||Compiled||Boolean||
||Property||Creator||Int32||
||Method||Delete||Void||
||Property||Index||Int32||
||Property||Installed||Boolean||
||Property||Name||String||
||Property||Parent||Object||
||Property||Path||String||

运行结果:

Visual Basic 2017  操作Excel和word【2】持续更新……

上一篇:wordpress使用技巧


下一篇:springMVC3学习(八)--全局的异常处理