2013-05-12 56 views
0

以下是我正在做的要点。我有一个功能区按钮,需要将一列简单的2列CSV文件逐行读入1维数组,然后我需要将数组写入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_Click子,我发现了错误“范围是一种类型的,不能用作表达式”上Range("A1:B1").Value2 = fields

Button2_Click子,我只是想看看我是否可以写一个静态值到单个单元格。我在不同的SO或者MSDN上发现了精确的代码行......现在我不记得了。无论哪种方式,我得到“'工作表'是不明确的,从命名空间或类型'Microsoft.Office.Tools.Excel,Microsoft.Office.Interop.Excel'导入。”

我对此比较陌生,但我已经尝试了将数据导入到excel中的源代码/方法,尤其是将数据写入单元格/范围。

有没有人看到我失踪/在这里做错了?或者也许有另一件事我可以尝试将数据写入单元格/范围?

+0

所以你是在VB.NET上,你想创建一个新的Excel工作簿并添加CSV文件的值,对吧? – 2013-05-12 09:08:44

回答

0

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

+0

我试过了,得到这个错误: 'ActiveWorkbook'没有声明。由于其保护级别,它可能无法访问。 – user2374136 2013-05-12 04:00:47

0

你有没有在Button_2代码打交道的尝试?我想你可能需要使用类似下面的内容。

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

而且随着代码的第一位,你的数据文件中有一行和两列?因为如果有多行,看起来你会在每次迭代后重写第一个单元格。

你可以增加行数每一次迭代(简单的),或者你可以插入向下移动在第一单元以使其推先前的重复下去。您也可以创建一个包含所有数据的较大数组,并且只需一次设置所有行。