Fecha actual Lun Sep 06, 2010 7:34 am

Todos los horarios son UTC - 6 horas





Nuevo tema Responder al tema  [ 19 mensajes ]  Ir a página Previo  1, 2
Autor Mensaje
 Asunto: Re: Exportar datos de un datagrid a excel
NotaPublicado: Lun Abr 07, 2008 11:29 pm 
Desconectado

Registrado: Jue Abr 03, 2008 2:10 pm
Mensajes: 9
Royjas hola de nuevo...estuve asiendo las pruebas qe me comentaste...
Primero exporte 5,962 datos a excel este archivo pesa 2.03 MB y funciono correctamente...Lo mas que pude exportar fueron 9,145 datos a un archivo de excel, i el archivo este pesa 4.11 MB y lo abri en excel y tmb se abrio correctamente...

El proyecto qe estoe asiendo se trata de consultas..tenia 3 tablas en access e hice una consulta en la cual incluyen las 3 tablas..ntonces esa consulta contiene toda la informacion de las 3 tablas...
Para crear esa consulta uni las 3 tablas por el campo de Nombre..ntonces hay fue donde salio esa consulta

Despues pase esas 3 tablas junto con la consulta a SQL Server 2005 e hice una BD en la cual importe mis 3 tablas de acces y la consulta...de hecho esa consulta en el SQL la hice tabla jeje para no complicarme la vida...

Desde C# hice dos tipos de formas, pero que jalan la informacion desde esa Consulta(la que hice tabla), en la primera forma arroje un datagrid para que me mostrara toda la informacion que tiene esa consulta(tabla), y si me la arrojo y son muchisimos datos...

En la otra forma arroje una caja de texto, dos botones, i un label para poner la etiqueta...(esta forma la hice por que como tengo mucha informacion en esa consulta(tabla) ntonces meti un codigo en un boton al cual llame buscar, para que me hiciera una busqueda por apellido dependiendo del apellido que el usuario haya tecleado en la caja de texto)...
Total que si ago una busqueda por apellido y quiero exportar mis datos del grid a excel si se puede porque no son muchos datos....

Para exportar esos datos lo hice con el mismo codigo que me pasaste i no me marco error...
Cuando sale el error es cuando estoe en mi forma la cual tiene muchos datos

El problema es cuando quiero exportar los datos que tengo en mi otra foma la cual contiene, en el grid, todos los datos de la consulta(tabla) que esta en la BD..que por cierto son muchisimos datos jeje


Habra una manera de exportar mas de esa cantidad?

Desde ya gracias!!
jeje me pase con tantas cosas que escribi =S


Arriba
 Perfil Email  
 
 Asunto: Re: Exportar datos de un datagrid a excel
NotaPublicado: Lun Abr 07, 2008 11:33 pm 
Desconectado
Site Admin
Avatar de Usuario

Registrado: Vie Ene 04, 2008 7:34 pm
Mensajes: 167
Ubicación: Costa Rica
esto me lleva a varias perguntas,

- es por algun motivo en especial exportar todos los datos del grid al excel?

- si llenas el datagrid con un dataset, por que no lo dejas en memoria y cuando lo quieres exportar solo le envias al procedimiento el dataset lleno, o es que en el datagrid puedes modificar algun dato?

_________________
roy rojas
site: DotNetcr.com | blog: royrojas.com
ClickInt.Net | Affiliate Marketing Tool


Arriba
 Perfil Email  
 
 Asunto: Re: Exportar datos de un datagrid a excel
NotaPublicado: Lun Abr 07, 2008 11:40 pm 
Desconectado

Registrado: Jue Abr 03, 2008 2:10 pm
Mensajes: 9
Si, por que lo que se decea hacer es sacar esos datos de la BD y como los usuarios no conocen de sql o C# pues es mas facil manipular los datos dede excel que es un poco mas facil para el usuario...

tu segunda pregunta no la entendi...

alo mejor no fue pregunta, fue algo que me dijiste que hiciera pero no lo entedi

Creo que es por que aun estoe mui verde en esto de la programacion i esas cosas jeje disculpa mi ignorancia...

De hecho en la universidad hemos hecho practicas y todo ese tipo de cosas pero no me habia topado con algo asi hasta que me encargaron de proyecto eso =/


Arriba
 Perfil Email  
 
 Asunto: Re: Exportar datos de un datagrid a excel
NotaPublicado: Mar Abr 08, 2008 12:01 am 
Desconectado
Site Admin
Avatar de Usuario

Registrado: Vie Ene 04, 2008 7:34 pm
Mensajes: 167
Ubicación: Costa Rica
Si lo que quieren hacer es que los usuarios manipulen los datos de la base de datos, por que no hacen manatenimientos, consultas en el sistema, donde los usuarios filtrando los datos puedan modificarlos pero en un ambiente controlado, si dejas que los usuarios manipulen en el excel dejas un riesgo muy alto del factor humano.

ahora lo que te decia con lo otro es:

el datagrid lo llenas con un dataset en algun momento, o como estas llenando el datagrid?

en algun momento debes hacer

en pseudocodigo

dataset = ConsultaBaseDatos()
DataGrid.DataSource = dataset

este dataset es el que despues le deberias enviar
SaveAsToExcel(dataset)

me explico, si ya tienes el dataset en memoria con los 40mil registros, enviale eso, no lo extraigas del datagrid.

_________________
roy rojas
site: DotNetcr.com | blog: royrojas.com
ClickInt.Net | Affiliate Marketing Tool


Arriba
 Perfil Email  
 
 Asunto: Re: Exportar datos de un datagrid a excel
NotaPublicado: Vie May 09, 2008 11:13 am 
Desconectado
Site Admin
Avatar de Usuario

Registrado: Vie Ene 04, 2008 7:34 pm
Mensajes: 167
Ubicación: Costa Rica
Hola, no se si ya resolviste lo del excel, pero te comento que hace poco tuve que hacer un sistema que exporta unos datos a excel, muchos datos en realidad.

Estuve intentando usar lo del xml, pero no me gusto el formato que me estaba implementando, ademas que cuando abria el xml en excel me pedia una serie de validaciones y no me convencio mucho.

bueno entonces estuve investigando y encontre la mejor forma de hacerlo, superior a todo lo que habia visto, exporta directo a excel de una forma muy rapida.

aqui te dejo el codigo

Código:
Private Sub ExportaExcel()
        Try
            'Create a Recordset from all the records in the Orders table.
            Dim conn As New ADODB.Connection()
            Dim rs As ADODB.Recordset
            conn.Open("Provider=sqloledb;user id=NOMBRE_USUARIO;password=CLAVE;data     
                            source=SERVIDOR;Initial Catalog=BASE_DATOS")
            conn.CursorLocation = ADODB.CursorLocationEnum.adUseClient

            Dim mSQL As String = ""
            mSQL = "SELECT * FROM NOMBRE_TABLA"

            rs = conn.Execute(mSQL)

            Dim app As Application
            app = New Application()
            If app Is Nothing Then
                MsgBox("Error: creando el archivo excel")
                Environment.ExitCode = 0
                Exit Sub
            End If

            app.Visible = False

            Dim workbooks As Workbooks
            workbooks = app.Workbooks

            Dim workbook As _Workbook
            workbook = workbooks.Add(XlWBATemplate.xlWBATWorksheet)

            Dim sheets As Sheets
            sheets = workbook.Worksheets

            Dim worksheet As _Worksheet
            worksheet = CType(sheets.Item(1), _Worksheet)
            If worksheet Is Nothing Then
                MsgBox("Error: hoja de trabajo es nula")
                Environment.ExitCode = 0
                Exit Sub
            End If

            '    'Agrega en la primera fila el nombre de cada columna:
            '    Dim n As Int32
            '    For n = 1 To rs.Fields.Count
            '        oSheet.Cells(1, n).Value = rs.Fields(n - 1).Name
            '    Next

            worksheet.Range("A2").CopyFromRecordset(rs)

            app.Visible = True

        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End Sub


Explico el codigo

aqui para efectos practicos de ejemplo puse la conexion y el exportar en el mismo procedimiento.
Para poder realizar este exportado es necesario hacerlo con un recordset, osea traerse los datos de la base de datos y almacenarlos en un recordset. No se puede usar Dataset, Datatable, o cualquier otro. Esto es asi ya que la funcion del office interop solo acepta este tipo de objeto.

Es necesario e indispensable agregar las librerias Microsoft.Office.Interop.Excel y la libreria adodb que estan en las referencias.

el string de conexion debe llevar el Data Provider, para el que tu necesites lo sacas de aqui http://www.carlprothman.net/Technology/ ... fault.aspx ahi estan todos los posibles proveedores y strings de conexion que necesites.

luego de que haces la consulta a la base de datos, y llenas el objeto recordset, creas el excel y le envias al rango el recordset asi como está, y el se encarga de todo, no importa la cantidad de registros.
worksheet.Range("A2").CopyFromRecordset(rs)
solo le indicas desde que registro comienza y le envias los datos.

_________________
roy rojas
site: DotNetcr.com | blog: royrojas.com
ClickInt.Net | Affiliate Marketing Tool


Arriba
 Perfil Email  
 
 Asunto: Re: Exportar datos de un datagrid a excel
NotaPublicado: Sab Feb 06, 2010 4:32 pm 
Desconectado

Registrado: Sab Feb 06, 2010 4:18 pm
Mensajes: 2
Hola que buenas respuestas felicitaciones por el foro
quisiera que me ayudaras al respecto del tema
tengo un datagrid sin base de datos ni nada simplemente se va llenando por un for y va arrojando resultado al datagrid
quisiera pode exportarlo a excel el resultado pero este ultimo codigo no me funciono
******************************************************************
private void button5_Click(object sender, EventArgs e)
{
DataSet dsDatos = new DataSet();

dsDatos = (DataSet)dataview1.DataSource;

SaveAsToExcel(dsDatos);


}

private void SaveAsToExcel(System.Data.DataSet CurrentData)
{
SaveFileDialog saveFileDialog = new SaveFileDialog();
saveFileDialog.Filter = "Excel Files (*.xls)|*.xls| All Files (*.*)|*.*";
if (saveFileDialog.ShowDialog(this) == DialogResult.OK)
{
string FileName = saveFileDialog.FileName;
if (FileName.Trim() != "")
{
CurrentData.WriteXml(FileName);
}
}
}
*******************************************************
el error aparece en CurrentData.WriteXml(FileName);


subi una imagen con el error

http://www.dj-moy.com/errorNet.jpg


mil gracias si me puedes colaborar depronto sea algo sencillo estare a la espera gracias y de nuevo felicitaciones por el foro


Arriba
 Perfil Email  
 
 Asunto: Re: Exportar datos de un datagrid a excel
NotaPublicado: Sab Feb 06, 2010 5:40 pm 
Desconectado
Site Admin
Avatar de Usuario

Registrado: Vie Ene 04, 2008 7:34 pm
Mensajes: 167
Ubicación: Costa Rica
estas seguro que el dataset que estas enviando tiene los datos
ponle un break point en la primera linea del saveastoexcel y revisa el dataset, por que asi te deberia funcionar

valida con

CurrentData.tables(0).count
o con
CurrentData.tables(0).rows.count

para ver si el dataset tiene datos que puedan ser exportados.

_________________
roy rojas
site: DotNetcr.com | blog: royrojas.com
ClickInt.Net | Affiliate Marketing Tool


Arriba
 Perfil Email  
 
 Asunto: Re: Exportar datos de un datagrid a excel
NotaPublicado: Dom Feb 07, 2010 2:29 am 
Desconectado

Registrado: Sab Feb 06, 2010 4:18 pm
Mensajes: 2
:D hola mil gracias por responder tan rapidamente
pero no he podido solucionar me le pongo el breakpoint en
la linea donde comienza la funcion
private void SaveAsToExcel(System.Data.DataSet CurrentData)

pero pues nada pero si de verificar que tenga data el dataview se trata, si tiene data mira lo que te adjunto es raro

http://wes el unico datagrid que tengo no tengo base de datos todo se va llenando ahi mismo en un loop que tengo
no se si hay k inicializar algo para que funcione la exportacion de excel

ww.dj-moy.com/errorNet2.jpg
y luego sale el error aki
http://www.dj-moy.com/errorNet.jpg

aki monte el source en .net 2008 c #
http://www.dj-moy.com/Suggest.rar
mil gracias men de nuevo por el foro tan efectivo


Arriba
 Perfil Email  
 
 Asunto: Re: Exportar datos de un datagrid a excel
NotaPublicado: Jue Feb 11, 2010 1:53 pm 
Desconectado
Site Admin
Avatar de Usuario

Registrado: Vie Ene 04, 2008 7:34 pm
Mensajes: 167
Ubicación: Costa Rica
estoy revisando el codigo, ahorita te respondo

_________________
roy rojas
site: DotNetcr.com | blog: royrojas.com
ClickInt.Net | Affiliate Marketing Tool


Arriba
 Perfil Email  
 
Mostrar mensajes previos:  Ordenar por  
Nuevo tema Responder al tema  [ 19 mensajes ]  Ir a página Previo  1, 2


Todos los horarios son UTC - 6 horas


¿Quién está conectado?

Usuarios navegando por este Foro: Google Adsense [Bot] y 2 invitados


No puede abrir nuevos temas en este Foro
No puede responder a temas en este Foro
No puede editar sus mensajes en este Foro
No puede borrar sus mensajes en este Foro
No puede enviar adjuntos en este Foro

Buscar:
Saltar a:  
cron
Powered by DotNetcr.com © 2008 Grupo DotNetcr.com
Foros DotNet utiliza phpBB3