Cargar DataGridView similar a Excel
Publicado por Andrés (27 intervenciones) el 07/11/2018 18:34:37
Buenas tardes amigos, me encuentro intentando pasar una tabla de Excel a un DataGridView, es decir hacer los mismos cálculos que hago en excel pero en este caso pasarlos a VB.Net mediante un DataGridView.
Específicamente lo que se hace es calcular una ecuación diferencial mediante el método de Runge Kutta. Llevo una parte del código pero inicialmente los datos de la primera fila del DataGridView, no me coinciden con los datos de la primera del Excel. No se si por algo que esta mal en la declaración del tipo de datos en alguna de las variables (Creería que es la de "pasoh").
La variable pasoh debe aceptar enteros y decimales. Por eso la declare de tipo Double. No se si estoy bien en esto...
Aqui les muestro lo que se hace en el excel...

El código que llevo es este...
Esto es lo que me da en la salida, teniendo en cuenta las condiciones iniciales que el usuario ingrese por teclado (pasoh, valorX, valorY, valorZ)...

En este caso el programa deberá seguir haciendo el calculo dependiendo de N Iteracciones...
En la segunda fila el valor de la columna X debe ser igual al valor anterior de X + el pasoh y así sucesivamente.
En la segunda fila el valor de la columna Y debe ser igual al valor anterior de Y1 y así sucesivamente.
En la segunda fila el valor de la columna Z debe ser igual al valor anterior de Z1 y así sucesivamente.
-------------------------------------------------------------------------------------------------------------------------------
Los cálculos que hago en las columnas KY1, KZ1, KY2, KZ2, KY3, KZ3, KY4, KZ4, Y1, Z1, corresponde a las formulas del Método de Runge Kutta.
Para hacer los cálculos N Iteracciones utilizo un ciclo For, pero pues quisiera que me ayudaran en por que no me da lo mismo que el Excel en la primera fila del DataGridView y pues de igual manera en pasar los datos de Y1 y Z1 a Y & Y respectivamente y así poder calcular N Iteracciones con el ciclo For...
Espero me puedan ayudar y Como siempre gracias por todo!!!
Específicamente lo que se hace es calcular una ecuación diferencial mediante el método de Runge Kutta. Llevo una parte del código pero inicialmente los datos de la primera fila del DataGridView, no me coinciden con los datos de la primera del Excel. No se si por algo que esta mal en la declaración del tipo de datos en alguna de las variables (Creería que es la de "pasoh").
La variable pasoh debe aceptar enteros y decimales. Por eso la declare de tipo Double. No se si estoy bien en esto...
Aqui les muestro lo que se hace en el excel...

El código que llevo es este...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
Public Class RungeKutta
Private Sub RungeKutta_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim pasoh, valorX, valorY, valorZ, NIteracciones, n As Double
pasoh = Double.Parse(InputBox("Digite el valor del paso 'h': ", "Método de Runge Kutta", "Valor de 'h'", 100, 100))
NIteracciones = Integer.Parse(InputBox("Digite el numero de iteracciones para el programa:", "Método de Runge Kutta", "Valor de 'N Iteracciones'", 100, 100))
valorX = Integer.Parse(InputBox("Digite la condición inicial de x: ", "Método de Runge Kutta", "Valor de 'x'", 100, 100))
valorY = Integer.Parse(InputBox("Digite la condición inicial de y: ", "Método de Runge Kutta", "Valor de 'y'", 100, 100))
valorZ = Integer.Parse(InputBox("Digite la condición inicial de z: ", "Método de Runge Kutta", "Valor de 'z'", 100, 100))
Dim tabla As New List(Of Fila)
Dim r As New Random
For i As Integer = 1 To NIteracciones
Dim fila As New Fila
fila.n = i
fila.X = valorX
fila.Y = valorY
fila.Z = valorZ
'Función a calcular = dy/dx (x*y) ; dz/dx (y)
'Para KY1 & KZ1
fila.KY1 = fila.X * fila.Y
fila.KZ1 = fila.Y
'Para KY2 & KZ2
fila.KY2 = (fila.X + pasoh / 2) * (fila.Y + pasoh / 2 * fila.KY1)
fila.KZ2 = (fila.Y + pasoh / 2 * fila.KY1)
'Para KY3 & KZ3
fila.KY3 = (fila.X + pasoh / 2) * (fila.Y + pasoh / 2 * fila.KY2)
fila.KZ3 = (fila.Y + pasoh / 2 * fila.KY2)
'Para KY4 & KZ4
fila.KY4 = (fila.X + pasoh) * (fila.Y + pasoh * fila.KY3)
fila.KZ4 = (fila.Y + pasoh * fila.KY3)
'Para Y1 & Z1
fila.Y1 = fila.Y + pasoh * (fila.KY1 + 2 * fila.KY2 + 2 * fila.KY3 + fila.KY4) / 6
fila.Z1 = fila.Z + pasoh * (fila.KZ1 + 2 * fila.KZ2 + 2 * fila.KZ3 + fila.KZ4) / 6
tabla.Add(fila)
Next
'DataGridView1.Columns(0).Width = 100
'DataGridView1.Columns(1).Width = 100
DataGridView1.DataSource = tabla
DataGridView1.Columns("X").DefaultCellStyle.Format = "N4"
DataGridView1.Columns("Y").DefaultCellStyle.Format = "N4"
DataGridView1.Columns("Z").DefaultCellStyle.Format = "N4"
DataGridView1.Columns("KY1").DefaultCellStyle.Format = "N4"
DataGridView1.Columns("KY1").HeaderText = "KY1"
DataGridView1.Columns("KZ1").DefaultCellStyle.Format = "N4"
DataGridView1.Columns("KZ1").HeaderText = "KZ1"
DataGridView1.Columns("KY2").DefaultCellStyle.Format = "N4"
DataGridView1.Columns("KY2").HeaderText = "KY2"
DataGridView1.Columns("KZ2").DefaultCellStyle.Format = "N4"
DataGridView1.Columns("KZ2").HeaderText = "KZ2"
DataGridView1.Columns("KY3").DefaultCellStyle.Format = "N4"
DataGridView1.Columns("KY3").HeaderText = "KY3"
DataGridView1.Columns("KZ3").DefaultCellStyle.Format = "N4"
DataGridView1.Columns("KZ3").HeaderText = "KZ3"
DataGridView1.Columns("KY4").DefaultCellStyle.Format = "N4"
DataGridView1.Columns("KY4").HeaderText = "KY4"
DataGridView1.Columns("KZ4").DefaultCellStyle.Format = "N4"
DataGridView1.Columns("KZ4").HeaderText = "KZ4"
DataGridView1.Columns("Y1").DefaultCellStyle.Format = "N4"
DataGridView1.Columns("Y1").HeaderText = "Y1"
DataGridView1.Columns("Z1").DefaultCellStyle.Format = "N4"
DataGridView1.Columns("Z1").HeaderText = "Z1"
End Sub
End Class
Class Fila
Public Property n() As Integer
Public Property X() As Double
Public Property Y() As Double
Public Property Z() As Double
Public Property KY1() As Double
Public Property KZ1() As Double
Public Property KY2() As Double
Public Property KZ2() As Double
Public Property KY3() As Double
Public Property KZ3() As Double
Public Property KY4() As Double
Public Property KZ4() As Double
Public Property Y1() As Double
Public Property Z1() As Double
End Class
Esto es lo que me da en la salida, teniendo en cuenta las condiciones iniciales que el usuario ingrese por teclado (pasoh, valorX, valorY, valorZ)...

En este caso el programa deberá seguir haciendo el calculo dependiendo de N Iteracciones...
En la segunda fila el valor de la columna X debe ser igual al valor anterior de X + el pasoh y así sucesivamente.
En la segunda fila el valor de la columna Y debe ser igual al valor anterior de Y1 y así sucesivamente.
En la segunda fila el valor de la columna Z debe ser igual al valor anterior de Z1 y así sucesivamente.
-------------------------------------------------------------------------------------------------------------------------------
Los cálculos que hago en las columnas KY1, KZ1, KY2, KZ2, KY3, KZ3, KY4, KZ4, Y1, Z1, corresponde a las formulas del Método de Runge Kutta.
Para hacer los cálculos N Iteracciones utilizo un ciclo For, pero pues quisiera que me ayudaran en por que no me da lo mismo que el Excel en la primera fila del DataGridView y pues de igual manera en pasar los datos de Y1 y Z1 a Y & Y respectivamente y así poder calcular N Iteracciones con el ciclo For...
Espero me puedan ayudar y Como siempre gracias por todo!!!
Valora esta pregunta


0