我采取了 3 个步骤:
根据模板,我通过代码创建一个新的 Excel 文件(运行良好):
Shared Sub FillExcel() Dim extension As String = ".xlsx" Dim sourcePath As String = "c:\Temp\libro" & extension Dim targetPath As String = "c:\Temp\libro - " & DateTime.Now.Hour & DateTime.Now.Minute & extension 'Generar archivo nuevo a partir del anterior FileIO.FileSystem.CopyFile(sourcePath, targetPath, True)
该模板有两张表:
“Circuito1$”,我将用值填充
“Formula$”,其中我有一个公式,它总结了“Circuito1$”中的值
我通过代码填充新的Excel文件如下:
Dim strInsertIntoExcel As String = "" Dim cn As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & targetPath & ";Extended Properties='Excel 12.0;HDR=Yes;IMEX=0'" strInsertIntoExcel = "INSERT INTO [Circuito1$] (Fecha,Hora,Valor) values(@date,@time,@values)" Using cnn As New System.Data.OleDb.OleDbConnection(cn) cnn.Open() Dim cant As Integer = 0 Dim value As Decimal While cant < 10 value = Convert.ToDecimal(cant * DateTime.Now.Second) Dim fecha As Object = DateTime.Now Using cmd As OleDbCommand = cnn.CreateCommand() cmd.Parameters.AddWithValue("@date", "fecha") cmd.Parameters.AddWithValue("@time", "daf1") cmd.Parameters.AddWithValue("@values", value) Console.WriteLine(value) cmd.CommandText = strInsertIntoExcel cmd.ExecuteNonQuery() End Using cant = cant + 1 End While End Using
- 我在最近更新的 Excel 文件中验证值在“公式$”表中,但它们没有显示更新。但是如果我转到单元格 B1,按 F2 然后按 Enter,公式结果将使用正确的值进行更新。我期望的正确行为是公式结果会自动显示更新,而无需按 F2 然后按 Enter。
注意:工作簿、模板和生成的文件均已启用自动更新。
我不知道为什么会发生这种情况,因为如果使用键盘(而不是代码)手动填充值,它可以正常工作。
什么原因导致了这种现象?
注:模板文件可在此处下载https://www.dropbox.com/s/duii11fyfh7u2kw/libro.xlsx?dl=0