Module Module1
Private suptable As Hashtable
Private subtable As Hashtable
Sub Main(ByVal Args() As String)
implementSubAndSup(Args(0))
End Sub
Private Sub implementSubAndSup(ByVal excelName As String)
If (excelName.Length > 0) Then
Dim excelApp As Microsoft.Office.Interop.Excel.Application
Dim excelBook As Microsoft.Office.Interop.Excel.Workbook
Dim excelsheet As Microsoft.Office.Interop.Excel.Worksheet '定义工作表类
Try
excelBook = New Microsoft.Office.Interop.Excel.Workbook()
Catch ex As Exception
End Try
excelApp = CreateObject("Excel.Application")
excelApp.DisplayAlerts = False
Try
excelBook = excelApp.Workbooks.Open(excelName)
Catch ex As Exception
' System.Console.WriteLine("excelBook......." + ex.Message)
End Try
excelApp.Visible = False
Dim m As Integer
Dim sheetCount As Integer
Try
sheetCount = excelBook.Worksheets.Count
Catch ex As Exception
End Try
If (sheetCount > 0) Then
For m = 1 To sheetCount
Try
excelsheet = New Microsoft.Office.Interop.Excel.Worksheet()
Catch ex As Exception
End Try
Try
excelsheet = excelBook.Worksheets(m)
excelsheet.Select()
Catch ex As Exception
' System.Console.WriteLine("excelsheet......" + ex.Message)
End Try
Dim row As Integer
Dim col As Integer
Try
row = excelsheet.UsedRange.Rows.Count()
col = excelsheet.UsedRange.Columns.Count()
Catch ex As Exception
End Try
Dim i As Integer
Dim j As Integer
For i = 1 To row
For j = 2 To 6 '1-6列的单元格
Dim cellvalue As String
Try
cellvalue = New String(excelApp.Cells(i, j).value.ToString())
If ((cellvalue.IndexOf("{") >= 0)) Then
If ((cellvalue.IndexOf("}") >= 0)) Then
Dim range As Microsoft.Office.Interop.Excel.Range
suptable = New Hashtable
subtable = New Hashtable
setSupAndSub(cellvalue, excelApp, i, j)
If (suptable.Keys.Count > 0) Then
If (subtable.Keys.Count > 0) Then
If (subtable.Keys.Count = suptable.Keys.Count) Then
range = excelApp.Cells(i, j)
range.Select()
Dim supkeys As IEnumerator
supkeys = suptable.Keys.GetEnumerator()
Dim subkeys As IEnumerator
subkeys = subtable.Keys.GetEnumerator()
Dim k As Integer
For k = 0 To suptable.Keys.Count
supkeys.MoveNext()
Dim beginIndex As Integer
Dim supValue As String
beginIndex = supkeys.Current
supValue = suptable.Item(beginIndex).ToString
With range.Characters(Start:=beginIndex + 1, Length:=supValue).Font
.Superscript = True
.Subscript = False
End With
subkeys.MoveNext()
Dim endIndex As Integer
Dim subValue As String
endIndex = subkeys.Current
subValue = subtable.Item(endIndex)
With range.Characters(Start:=endIndex + 1, Length:=subValue).Font
.Superscript = False
.Subscript = True
End With
Next
End If
End If
End If
End If
End If
Catch ex As Exception
' System.Console.WriteLine("cell......" + ex.Message)
End Try
Next
Next
Next
End If
'工作表保存:
Try
If Not excelApp.ActiveWorkbook.Saved Then
excelApp.SaveWorkspace()
End If
Dim xlSheet1 As Microsoft.Office.Interop.Excel.Worksheet
xlSheet1 = excelBook.Worksheets(1)
xlSheet1.Select()
excelApp.Workbooks.Close()
Catch ex As Exception
End Try
End If
End Sub
'例如解析【叶片长度L{0,-0.05}】这种格式的值,0代表上标,-0.05代表下标。将来显示的结果是
Private Sub setSupAndSub(ByVal cellvalue As String, ByVal excelApp As Microsoft.Office.Interop.Excel.Application, ByVal i As Integer, ByVal j As Integer)
excelApp.DisplayAlerts = False
If ((cellvalue.IndexOf("{") >= 0)) Then
Dim beginIndex As Integer
Dim endIndex As Integer
Dim supAndsubInfo As String
Dim supValue As String
Dim subValue As String
beginIndex = cellvalue.IndexOf("{")
endIndex = cellvalue.IndexOf("}")
supAndsubInfo = New String(cellvalue.Substring(cellvalue.IndexOf("{") + 1, endIndex - beginIndex - 1))
If (supAndsubInfo.IndexOf(",") >= 0) Then
supValue = supAndsubInfo.Substring(0, supAndsubInfo.IndexOf(","))
subValue = supAndsubInfo.Substring(supAndsubInfo.IndexOf(",") + 1, supAndsubInfo.Length - supAndsubInfo.IndexOf(",") - 1)
If (supValue.Length = 0) Then
supValue = 0
End If
If (subValue.Length = 0) Then
subValue = 0
End If
Dim info As String
info = cellvalue.Substring(cellvalue.IndexOf("}") + 1)
excelApp.Cells(i, j).Value = (cellvalue.Substring(0, cellvalue.IndexOf("{"))) + supValue + subValue + info
Dim secondcellvalue As String
secondcellvalue = (cellvalue.Substring(0, cellvalue.IndexOf("{"))) + supValue + subValue + info
suptable.Add(beginIndex, supValue.Length)
subtable.Add(beginIndex + supValue.Length, subValue.Length)
If (secondcellvalue.IndexOf("{") >= 0) Then
If (secondcellvalue.IndexOf("}") >= 0) Then
setSupAndSub(secondcellvalue, excelApp, i, j)
End If
End If
End If
End If
End Sub
End Module
- 大小: 3 KB
分享到:
相关推荐
首先,我们要明白上下标是通过特定的文本格式化代码来实现的。在`RichTextBox`中,我们可以使用RTF(Rich Text Format)语言来控制文本的显示方式。RTF是一种标记语言,用于描述文本的格式,包括字体、颜色、大小...
在VB中,数组的下标默认从0开始,但这可以通过设置Option Base语句来改变。 ### 数组的声明 在VB中,声明数组的基本语法是这样的: ```vb Dim 数组名(下界 To 上界) As 数据类型 ``` 例如,如果你想要声明一个...
VB6.0实现彩票36选7选号程序,功能:生成14个过滤条件值保存DB,查询指定期的前X期开出的个数,七期随机选号法,统计每个号码出球规律,"随机选下注数据,从选定号码中遍历组合,在选中号码列表中继续筛选等。...
本话题将深入探讨如何实现VB6批量动态控件数组及其事件响应。 首先,我们要了解VB6中的控件数组。控件数组是由一组相同类型的控件组成,它们共享同一个名称,但通过索引来区分。例如,我们可以创建一个名为"txtBox...
### 一个基于VB与MATLAB实验系统的设计与实现 #### 概述 本文介绍了一种结合Visual Basic(VB)与MATLAB的混合编程方法来设计并实现了一个虚拟实验系统——《高等数学应用问题与数字信号处理虚拟实验系统》。该...
本篇将详细介绍如何在VB中实现矩阵按列存入一维数组的步骤。 首先,理解基本概念。矩阵是一个二维数据结构,而一维数组则是一条线性存储的数据结构。在VB中,矩阵通常以二维数组的形式表示,而一维数组则是一系列...
以下是一个使用VB实现线性规划的示例,它基于单纯形法。 在VB代码中,首先定义了几个动态数组,例如`a()`、`c()`、`b()`等,这些数组分别用来存储线性规划问题的系数矩阵、目标函数系数、约束条件的右端常数以及基...
在VB中,通过`Option Base`语句可以设置数组下标的起始值,默认情况下,数组下标是从0开始的。如果希望数组下标从1开始,则可以在文件开头加入`Option Base 1`语句。 ```vb Option Base 0 ' 数组下标从0开始 Option...
VB 提供的Form设计器使得创建用户界面变得直观,你可以通过拖放控件(如Label、Button、ListBox等)到窗体上,并设置其属性,如文字、颜色、大小等,以实现抽奖程序的界面布局。 6. **消息框与对话框**: MsgBox...
5. VB中判断两个数中的大数可以通过多种方式实现。选项中不正确的写法是“Max=xIfy>=xThenMax=y”,正确的写法应该是“Max=IIF(x>y,x,y)”或者“If x>y Then Max=x Else Max=y”。 6. 在VB中,数学表达式3≤x的逻辑...
13. **计算e的值**:利用泰勒级数或欧拉公式计算自然对数e的近似值,需要掌握数学知识并用VB实现循环累加。 14. **删除数组元素**:从数组中移除特定值,可能需要复制和重构数组,或使用ArrayList等动态数据结构。 ...
具体实现上,动态数据交换技术(DDE机制)用于在VB应用程序和MATLAB之间通过会话实现动态交换数据。文档中举例说明了如何使用DDE机制,通过VB与MATLAB混合编程来解决数学问题,例如绘制矩阵A的列对应下标的图形。 ...
通过上述分析可以看出,VB.NET相较于VB6.0有了巨大的飞跃,不仅仅是在语法和语言特性上的改进,更重要的是它为开发者提供了更加强大、灵活且高效的开发工具。无论是对于桌面应用还是Web应用,VB.NET都展现出了极大的...
#### VB代码实现 接下来,我们将详细介绍如何编写VB代码来读取这种格式的TXT文件,并提取指定`i`和`j`位置的`data`值。 1. **初始化变量**: ```vb Dim a As Variant, str1 As String, dt() As Double, k As ...
- **事件驱动编程**:VB中的控件可以响应用户操作,如Click事件,编写事件处理程序实现交互。 3. **控制结构** - **顺序结构**:代码按行顺序执行。 - **选择结构**:`If...Then...Else`用于条件判断,决定执行...
根据提供的VB代码片段来看,这段代码实现了一个简单的接金币游戏。接下来将对代码中的关键部分进行解析,并从中提炼出相关的知识点。 ### 关键知识点 #### 1. 变量声明与初始化 ```vb Dim time, sum, summ(4) As ...
使用RichTextLib实现的相关VisualBasic例子,让RichTextBox文本框支持程序间的拖放操作,也就是可以把其它窗体上选择的文字直接拖放至VB程序窗口的RichTextBox文本框中,经过本例的实现,你就可以为你的VB程序也添加...
在上述代码中,`Int(Rnd() * n)` 会生成一个0到n-1之间的整数,作为数组下标,从而随机选取一个参与者。如果需要抽取多个获奖者,可以将这个过程放在循环中,但要注意避免重复抽到同一人。 除了基本的随机抽奖,还...
VB.NET 是一种面向对象的编程语言,用于...综上所述,VB.NET的复合数据类型提供了处理复杂数据结构的能力,使得开发者能够有效地管理大量数据和实现更复杂的逻辑。理解和熟练运用这些概念对于进行VB.NET编程至关重要。