Visual Basic.NET - Funcion

   
Vista:

Funcion

Publicado por Adrian (8 intervenciones) el 13/11/2009 14:55:51
Hola a todos, tengo una funcion que me exporta los DataGridView a Excel que funciona perfectamente, el problema que tengo que cuando me abre la hoja de excel lo realiza por detras del formulario, alguien sabe de algun codigo para agregarle a la funcion para que la hoja se abra delante del formulario.

Muchas gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Funcion

Publicado por gon (31 intervenciones) el 13/11/2009 16:10:30
Hola, mostranos como es que abris el excel asi podemos ayudarte mejor. saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Funcion

Publicado por Adrian (8 intervenciones) el 13/11/2009 16:25:23
Hola Gon aca te pongo la funcion, muchas gracias

Function GridAExcel(ByVal ElGrid As DataGridView) As Boolean
'Creamos las variables
Dim exApp As New Microsoft.Office.Interop.Excel.Application
Dim exLibro As Microsoft.Office.Interop.Excel.Workbook
Dim exHoja As Microsoft.Office.Interop.Excel.Worksheet

Try
'Añadimos el Libro al programa, y la hoja al libro
exLibro = exApp.Workbooks.Add
exHoja = exLibro.Worksheets.Add()

' ¿Cuantas columnas y cuantas filas?
Dim NCol As Integer = ElGrid.ColumnCount
Dim NRow As Integer = ElGrid.RowCount

'Aqui recorremos todas las filas, y por cada fila todas las columnas y vamos escribiendo.
For i As Integer = 1 To NCol
exHoja.Cells.Item(6, i) = ElGrid.Columns(i - 1).Name.ToString
'exHoja.Cells.Item(6, i).HorizontalAlignment = 3
Next

For Fila As Integer = 0 To NRow - 1
For Col As Integer = 0 To NCol - 1
exHoja.Cells.Item(Fila + 7, Col + 1) = ElGrid.Rows(Fila).Cells(Col).Value
Next
Next
'Titulo en negrita, Alineado al centro y que el tamaño de la columna se ajuste al texto
exHoja.Rows.Item(6).Font.Bold = 1
exHoja.Rows.Item(6).HorizontalAlignment = 3
exHoja.Columns.AutoFit()

'Aplicación visible
exApp.Application.Visible = True

exHoja = Nothing
exLibro = Nothing
exApp = Nothing

Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical, "Error al exportar a Excel")
Return False
End Try

Return True
End Function
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Funcion

Publicado por gon (31 intervenciones) el 13/11/2009 16:38:26
Adrian, proba con esto y avisame

'Aplicación visible
exApp.ShowWindowsInTaskbar = False
exApp.Application.Visible = True
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Funcion

Publicado por Adrian (8 intervenciones) el 14/11/2009 00:51:00
Hola Gon gracias de nuevo pero no tuvimos suerte, tampoco funciona
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Funcion

Publicado por gon (31 intervenciones) el 14/11/2009 13:28:53
proba con esto, lo que hace es guardar el xls y desp abrirlo

'Aplicación visible
'exApp.Application.Visible = True (no lo pongas)
exHoja.SaveAs("c:\555.xls")
Process.Start("c:\555.xls")
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Funcion

Publicado por Adrian (8 intervenciones) el 14/11/2009 19:53:01
Hola Gon, lamentablemente sigue sin funcionar, me tira tres posibles errores, me pone que la ruta no existe o que el archivo esta siendo usado por otro programa o que el archivo que estoy intentando guardar y abrir existe con ese nombre (Esta ultima ya te digo que no porque no tengo ninguna hoja de Excel con el nombre 555)

Saludos y gracias de nuevo

PD: Si podes encontrar otra manera mejor, porque la idea es no tener que guardar la hoja de Excel en la PC.

Muchas gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Funcion

Publicado por gon (31 intervenciones) el 16/11/2009 13:18:37
voy por un intento mas, te paso la funcion que uso y me funciona bien.

Sub ExportarAExcel(ByVal xgridexpo As DataGridView)
Dim strStreamW As Stream
Dim strStreamWriter As StreamWriter
Dim Filas = xgridexpo.Rows.Count
Dim Columnas = xgridexpo.Columns.Count
Dim Archivo As String = Application.StartupPath & "\Centros.csv"
Dim Linea As String = ""
Dim f As Integer
Dim c As Integer

File.Delete(Archivo)
strStreamW = File.OpenWrite(Archivo)

strStreamWriter = New StreamWriter(strStreamW, System.Text.Encoding.UTF8)

'CABECERA
For c = 0 To Columnas - 4
Linea = Linea & xgridexpo.Columns(c).Name & ";"
Next

Linea = Mid(Linea, 1, Linea.ToString.Length - 1)
strStreamWriter.WriteLine(Linea)
Linea = Nothing

'FILAS
For f = 0 To Filas - 1
For c = 0 To Columnas - 4
Linea = Linea & xgridexpo.Item(c, f).Value & ";"
'MsgBox(Grid.Item(c, f).Value)
Next
Linea = Mid(Linea, 1, Linea.ToString.Length - 1)
strStreamWriter.WriteLine(Linea)
Linea = Nothing
Next
strStreamWriter.Close()

Try
Process.Start(Archivo) 'Ejecuta el archivo creado
Catch Ex As Exception
MsgBox(Ex.Message, MsgBoxStyle.Critical, Ex.Source)
End Try
End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Funcion

Publicado por Adrian (8 intervenciones) el 16/11/2009 19:19:16
Hola Gon gracias nuevamente, pero cual seria la linea de codigo a colocar en mi funcion para lograr que se abra por delante de los formularios?, me gustaria no tener que reemplazar mi funcion.
Gracias de todas maneras nuevamente
Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar