vb .net使用excel automation将数据粘贴到打开的工作簿

问题描述:

是否可以使用vb.net中的办公自动化将数据粘贴到已打开的工作表中? (我使用oledb完成,但速度很慢。)vb .net使用excel automation将数据粘贴到打开的工作簿

 Dim Folder As String = "C:\Users\gm1\Desktop\" 
     Dim Filename As String = "Raw2Eng.xlsx" 
     Dim ConnectionString As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Folder & "\" & Filename & ";Extended Properties=""Excel 12.0;HDR=YES;""" 
     Dim MyConnection As New OleDbConnection(ConnectionString) 

     MyConnection.Open() 
     Dim cmd1 As New OleDbCommand 
     cmd1.Connection = MyConnection 
     cmd1.CommandText = "DROP TABLE [Sheet2$A1:E1027]" 
     cmd1.ExecuteNonQuery() 

     cmd1.CommandText = "CREATE TABLE [Sheet2$A1:E1027] (HiResAngle FLOAT, CH2 FLOAT, CH4 FLOAT, CH5 FLOAT, CH6 FLOAT)" 
     cmd1.ExecuteNonQuery() 

     For j As Integer = 0 To TrimmedSegmentSize - 1 
      sb = New StringBuilder 
      sb.Append("INSERT INTO [Sheet2$A" & 1 & ":E" & j + 1 & "] (HiResAngle, CH2, CH4, CH5, CH6) values ('") 
      sb.Append(eng(i, j, 0)) : sb.Append("' , '") 
      sb.Append(eng(i, j, 1)) : sb.Append("' , '") 
      sb.Append(eng(i, j, 2)) : sb.Append("' , '") 
      sb.Append(eng(i, j, 3)) : sb.Append("' , '") 
      sb.Append(eng(i, j, 4)) : sb.Append("')") 
      cmd1.CommandText = sb.ToString 
      cmd1.ExecuteNonQuery() 
     Next 
     MyConnection.Close() 
+0

看来你有一个surrouding循环(与变量i)。它有什么作用 ? – 2013-03-25 09:02:27

+0

除了声明(第1行4),代码将重复i次。所以输出会随着我遍历3D数组的第一维而变化。谢谢。 – Gergo 2013-03-25 09:18:37

OleDb比自动化方式快。 向我们显示您的代码,可能会有另一个问题。

[编辑] 如果你真的想使用自动化(因为要保持工作簿打开),你可以阅读这篇文章:How to transfer data to an Excel workbook by using Visual Basic .NET

+0

嗨Dude Pascalou。请看我的oledb代码。我需要覆盖旧的数据,因为删除不允许我drop-create表。代码工作,但如果工作簿打开,插入1024行大约需要30秒。任何建议如何改善代码? – Gergo 2013-03-25 09:02:37

+0

尝试一个封闭的工作簿,可能这就是为什么它如此缓慢...... – 2013-03-25 09:34:38

+0

我尝试关闭工作簿,插入缩短为2秒。但是我需要在打开的工作簿上进行“实时更新”。 – Gergo 2013-03-25 09:39:26