0

这是我在做什么的要点。我有一个功能区按钮,需要将一个简单的 2 列 CSV 文件逐行读取到一维数组中,然后我需要将数组写入 excel 的前两列。

我已经成功地读入了数组(下面的 msgbox 行确认),但我一辈子都无法将任何东西写入工作表。

Imports Microsoft.Office.Tools.Ribbon
Imports Microsoft.Office.Interop.Excel
Imports Microsoft.Office.Tools.Excel
Imports System.Text
Imports Microsoft.Office.Core
Imports Microsoft.VisualBasic.FileIO

Public Class MyRibbon

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As Microsoft.Office.Tools.Ribbon.RibbonControlEventArgs) Handles Button1.Click

        Dim filename As String = "C:\DATA_csvtest.TXT"
        Dim fields As String()
        Dim delimiter As String = ","
        Using parser As New TextFieldParser(filename)
            parser.SetDelimiters(delimiter)
            While Not parser.EndOfData
                ' Read in the fields for the current line
                fields = parser.ReadFields()
                ' Add code here to use data in fields variable.

                MsgBox(fields(0) + " " + fields(1)) 'verifies above code is working

                Range("A1:B1").Value2 = fields

            End While
        End Using

    End Sub



    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As Microsoft.Office.Tools.Ribbon.RibbonControlEventArgs) Handles Button2.Click

        Worksheet("Sheet1").Range("A1").Value = 3.14159

    End Sub



    Private Sub MyRibbon_Load(ByVal sender As System.Object, ByVal e As Microsoft.Office.Tools.Ribbon.RibbonUIEventArgs) Handles MyBase.Load

    End Sub

End Class

Button1_Clicksub 中,我收到错误“范围是一种类型,不能用作表达式” Range("A1:B1").Value2 = fields

Button2_Clicksub 中,我只是想看看是否可以将静态值写入单个单元格。我在不同的 SO 或 MSDN 帖子上找到了确切的代码行......我现在不记得了。无论哪种方式,我都得到“'Worksheet' 是模棱两可的,从命名空间或类型' Microsoft.Office.Tools.ExcelMicrosoft.Office.Interop.Excel'导入。”

我对此比较陌生,但我已经尝试了数百种将分隔数据导入excel的来源/方法,更具体地说,将数据写入单元格/范围。

有谁看到我在这里错过/做错了什么?或者也许还有另一件事我可以尝试将数据写入单元格/范围?

4

2 回答 2

0

尝试使用ActiveWorkbook.Sheets("Sheet1").Range("A1").Value=3.14159

于 2013-05-12T03:32:51.490 回答
0

您在 Button_2 中的代码有效吗?我认为您可能需要使用以下内容。

Globals.ThisWorkbook.Worksheets("Sheet1").Range("A1").Value2 = 3.14159

使用您的第一段代码,您的数据文件是否有一行和两列?因为如果有多行,看起来你只会在每次迭代后覆盖第一个单元格。

您可以在每次迭代时增加行号(最简单),或者您可以插入并向下移动第一个单元格以使其向下推动先前的迭代。您还可以创建一个包含所有数据的更大数组,并一次设置所有行。

于 2013-05-12T11:35:26.553 回答