Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在vb.net中以Excel表格单元格显示文本框结果_Vb.net_Excel - Fatal编程技术网

在vb.net中以Excel表格单元格显示文本框结果

在vb.net中以Excel表格单元格显示文本框结果,vb.net,excel,Vb.net,Excel,我在表单上有两个文本框;一个保存单词,另一个保存根据用户键入的内容计算的数值。我有一个子集,它将每个句子分开,并在Excel中显示每个句子的总数。这是从下面列出的vb.net代码生成的输出。所有单词都在一列中,所有值都在B列中。如何修改代码,使其在两列中插入每个句子及其值?在它到达字符串“句子1总计”之后,它应该开始在C和D列中插入单词及其值,以此类推。 第一句及其值应显示在A列和B列,第二句及其值应显示在C列和D列,依此类推。 请参阅所附图片。红色文本是我目前拥有的,下面是期望的结果。谢谢 我

我在表单上有两个文本框;一个保存单词,另一个保存根据用户键入的内容计算的数值。我有一个子集,它将每个句子分开,并在Excel中显示每个句子的总数。这是从下面列出的vb.net代码生成的输出。所有单词都在一列中,所有值都在B列中。如何修改代码,使其在两列中插入每个句子及其值?在它到达字符串“句子1总计”之后,它应该开始在C和D列中插入单词及其值,以此类推。 第一句及其值应显示在A列和B列,第二句及其值应显示在C列和D列,依此类推。 请参阅所附图片。红色文本是我目前拥有的,下面是期望的结果。谢谢

我在vb.net中的代码是:

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(“总计”),则