Visual Basic 2017 操作Excel和word持续更新……
Posted 眸眸
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Visual Basic 2017 操作Excel和word持续更新……相关的知识,希望对你有一定的参考价值。
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
运行结果:
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 = 60 While i >= 0 TextBox1.Text = i.ToString() System.Windows.Forms.Application.DoEvents() \'若我们去掉此行代码,则会出现界面卡死的现象,无法实现每隔一秒钟显示当前倒计时的效果。 i = i - 1 Thread.Sleep(1000) End While End Sub End Class \'********************************************************************************************************* \'* MSDN针对System.Windows.Forms.Application.DoEvents()的解释: * \'* 当运行Windows窗体时, 会创建新窗体, 然后窗体将等待处理各种事件, 而窗体每次处理事件时, * \'* 都会处理完与该事件关联的所有代码, 才会去处理其他事件, 这时其他事件将会在队列中等待。 * \'* 因此, 在处理事件时, 程序并不进行响应, 当然也不会进行窗口重绘操作。 * \'* 但是System.Windows.Forms.Application.DoEvents()方法可以使窗体处理其他事件,所以窗体能够进行重绘。 * \'*********************************************************************************************************
运行结果:
表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(1) As String \'定义分隔符字符串 separators(0) = "||" \'为分隔符变量赋值 Dim rowCount As Integer = 0 \'定义行数 Dim columnCount As Integer = 0 \'定义列数 \' 读取行并计算行数和列数 Dim rowList As New System.Collections.Generic.List(Of String) \'定义字符串型的列表集对象 Dim row As String = reader.ReadLine() \'读取文本存储器中的一行 While row IsNot Nothing \'读取行没有到结尾 rowCount += 1 \'读取下一行 rowList.Add(row) \'将所读取的一行文本存储在列表集对象中 \' 如果这是第一行,就计算列数 If rowCount = 1 Then Dim splitHeaderRow As String() = row.Split(separators, StringSplitOptions.None) \'StringSplitOptions.None,就是分开的数组元素包括空元素 columnCount = splitHeaderRow.Length - 2 \' 忽略第一和最后一个分隔符 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 = 1 Dim rowIndex As Integer = 1 For Each r As String In rowList Dim splitRow As String() = r.Split(separators, StringSplitOptions.None) \'StringSplitOptions.None,就是分开的数组元素包括空元素 For columnIndex = 1 To columnCount Dim cell As Word.Cell = table.Cell(rowIndex, columnIndex) \'\\bin\\Debug目录中test.txt文件中的结尾不能有多余的空行,不然会提示超出索引范围而出现错误 cell.Range.Text = splitRow(columnIndex) Next rowIndex += 1 Next \' 格式化表格 table.Rows(1).Range.Bold = 1 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持续更新……的主要内容,如果未能解决你的问题,请参考以下文章
Visual Basic 2017 操作Excel和word持续更新……
将电子表格 (OpenOffice) 导入 Visual Basic .net 组合框
ZipFile 未在 Visual basic 2017 中声明
如何使用Visual Studio 2017在Windows窗体应用程序中查看和编辑Visual Basic Power Pack形状?