Eu faço 3 etapas:
Baseado em um modelo, eu crio um novo arquivo do Excel através do código (funciona bem):
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)
O modelo tem duas folhas:
"Circuito1 $", que preencherei com valores
"Formula $", onde tenho uma fórmula que resume os valores em "Circuito1 $"
Eu preencho o novo arquivo do Excel através do código da seguinte forma:
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
NOTA: A atualização automática está ativada nas pastas de trabalho, no modelo e nos arquivos gerados.
Não consigo descobrir por que isso está acontecendo porque, se preencher os valores manualmente, usando o teclado (em vez do código), ele funciona bem.
O que está causando esse comportamento?
NOTA: O arquivo de modelo pode ser baixado aqui link