在vb.net中以Excel表格单元格显示文本框结果
我在表单上有两个文本框;一个保存单词,另一个保存根据用户键入的内容计算的数值。我有一个子集,它将每个句子分开,并在Excel中显示每个句子的总数。这是从下面列出的vb.net代码生成的输出。所有单词都在一列中,所有值都在B列中。如何修改代码,使其在两列中插入每个句子及其值?在它到达字符串“句子1总计”之后,它应该开始在C和D列中插入单词及其值,以此类推。 第一句及其值应显示在A列和B列,第二句及其值应显示在C列和D列,依此类推。 请参阅所附图片。红色文本是我目前拥有的,下面是期望的结果。谢谢 我在vb.net中的代码是:在vb.net中以Excel表格单元格显示文本框结果,vb.net,excel,Vb.net,Excel,我在表单上有两个文本框;一个保存单词,另一个保存根据用户键入的内容计算的数值。我有一个子集,它将每个句子分开,并在Excel中显示每个句子的总数。这是从下面列出的vb.net代码生成的输出。所有单词都在一列中,所有值都在B列中。如何修改代码,使其在两列中插入每个句子及其值?在它到达字符串“句子1总计”之后,它应该开始在C和D列中插入单词及其值,以此类推。 第一句及其值应显示在A列和B列,第二句及其值应显示在C列和D列,依此类推。 请参阅所附图片。红色文本是我目前拥有的,下面是期望的结果。谢谢 我
Private Sub Export_Click(sender As System.Object, e As System.EventArgs) Handles btnCreate.Click
xlWorkBook = xlApp.Workbooks.Add
xlApp.Visible = True
xlWorkSheet = xlWorkBook.Sheets("Sheet1")
Dim columnANum As Integer
Dim columnBNum
columnBNum = 2
columnANum = 2
With xlWorkSheet
.Range("A1").Value = "Word"
For Each cellA As String In txtWord.Text.Split(vbLf)
.Range("A" & columnANum.ToString).Value = cellA
columnANum += 1
Next
.Range("B1").Value = "Value"
For Each cellB As String In txtValue.Text.Split(vbLf)
.Range("B" & columnBNum.ToString).Value = Convert.ToInt32(cellB)
columnBNum += 1
Next
End With
End Sub
试用
Dim RowNum as Integer = 1
Dim ColNum as Integer = 1
使用.cells而不是.range
xlWorkSheet.Cells(RowNum, ColNum).value = "Word"
xlWorkSheet.Cells(RowNum, ColNum).value = "Value"
根据需要更新行和列
RowNum += 1
ColNum += 1
编辑:我对这段代码做了重大修改并进行了测试;它应该满足你的需求
Sub testExcelColumns()
Dim xlApp As Object = CreateObject("Excel.Application")
Dim xlWorkBook As Object
Dim xlWorkSheet As Object
xlWorkBook = xlApp.Workbooks.Add
xlApp.Visible = True
xlWorkSheet = xlWorkBook.Sheets("Sheet1")
Dim RowNum As Integer = 1
Dim ColNum As Integer = 1
'use .cells(row, column) instead of .range
xlWorkSheet.cells(RowNum, ColNum).Value = "Word"
For Each cellA As String In txtWord.Text.Split(vbLf)
'increment the row
RowNum += 1
'set the value
xlWorkSheet.cells(RowNum, ColNum).value = cellA
If cellA.StartsWith("Total") Then
ColNum += 2
RowNum = 1
xlWorkSheet.cells(RowNum, ColNum).Value = "Word"
End If
Next
'increment to the second column and first row
ColNum = 2
RowNum = 1
'set title
xlWorkSheet.cells(RowNum, ColNum).Value = "Value"
For Each cellB As String In txtValue.Text.Split(vbLf)
'increment the row
RowNum += 1
'set the value
xlWorkSheet.cells(RowNum, ColNum).value = cellB
'get value of cell to the left
Dim t As String = xlWorkSheet.cells(RowNum, ColNum).offset(0, -1).value
If Not t Is Nothing AndAlso t.StartsWith("Total") Then
ColNum += 2
RowNum = 1
xlWorkSheet.cells(RowNum, ColNum).Value = "Value"
End If
Next
End Sub
xlWorkSheet.Cells(1,1).value=“Word”xlWorkSheet.Cells(1,2).value=“value”在txtWord.Text.Split(vbLf)xlWorkSheet.Cells(RowNum,1).value=cellA如果A列中的单元格值为“总计”,则如何移动到下一列C&D?RowNum+=1 ColNum+=2 Next RowNum=2对于txtValue.Text.Split(vbLf)xlsheetwork.Cells(RowNum,2)中的每个cellB作为字符串。value=cellB RowNum+=1 ColNum+=2 Next当我运行代码时,我得到了“对象引用未设置为对象vb.net的实例”以if.t.StartWith(“Total”)开头的行出错。此外,值仅插入B列,不会循环并转到下一列,如B、E等。此外,标题词不会像C一样转到下一列。标题值根本没有填充。谢谢!哦,错误“对象引用未设置为对象vb.net的实例”是因为有时t将为零。测试这种情况:如果不是,t为零,也为t.StartWith(“总计”),则