Ver Mensaje Individual
  #3 (permalink)  
Antiguo 28/03/2008, 09:29
cjcesar
 
Fecha de Ingreso: febrero-2008
Mensajes: 13
Antigüedad: 16 años, 2 meses
Puntos: 0
Re: exportar datos a excel

ok, gracias; tambien encontré una solución, lo que hago es leer el archivo en excel con:
OleDbDataAdapter adapter = new OleDbDataAdapter();
OleDbCommand consultaBD = new OleDbCommand(consulta, obtConexionBD()); ...

y luego hago un select para cargar los campos en un Dataset; luego uso un OleDbDataReader para poder leer los datos del archivo.
De que ya lei los datos, los guardo en un objeto List y luego para pasarlos a un nuevo archivo de excel, lo hago celda x celda asi:

public void guardandoEnExcel(List<Datos> registros)
{
objExcel = new Excel.Application();
objBooks = (Excel.Workbooks)objExcel.Workbooks;
objBook = (Excel._Workbook)objBooks.Add(objOpt);

objSheets = (Excel.Sheets)objBook.Worksheets;
objSheet = (Excel._Worksheet)(objSheets.get_Item(1));

objRange = objSheet.get_Range("A1", objOpt );
objRange.set_Value(objOpt, "Hoja Ruta");
objRange = objSheet.get_Range("B1", objOpt);
objRange.set_Value(objOpt, "Documento remitido");
objRange = objSheet.get_Range("C1", objOpt);
objRange.set_Value(objOpt, "Entidad");
objRange = objSheet.get_Range("D1", objOpt);
objRange.set_Value(objOpt, "Sector");
objRange = objSheet.get_Range("E1", objOpt);
objRange.set_Value(objOpt, "Titular");
objRange = objSheet.get_Range("F1", objOpt);
objRange.set_Value(objOpt, "Derivado");
objRange = objSheet.get_Range("G1", objOpt);
objRange.set_Value(objOpt, "Tipo");
objRange = objSheet.get_Range("H1", objOpt);
objRange.set_Value(objOpt, "Ley");
objRange = objSheet.get_Range("I1", objOpt);
objRange.set_Value(objOpt, "DNI");
objRange = objSheet.get_Range("J1", objOpt);
objRange.set_Value(objOpt, "Nº Folios");
objRange = objSheet.get_Range("K1", objOpt);
objRange.set_Value(objOpt, "Observaciones");

for (int m = 0; m < registros.Count; m++)
{ long ind=m+3;
objRange = objSheet.get_Range("A"+ind.ToString() , objOpt);
objRange.set_Value(objOpt, registros[m].HRuta );
objRange = objSheet.get_Range("B" + ind.ToString(), objOpt);
objRange.set_Value(objOpt, registros[m].Doc);
objRange = objSheet.get_Range("C" + ind.ToString(), objOpt);
objRange.set_Value(objOpt, registros[m].Entidad);
objRange = objSheet.get_Range("D" + ind.ToString(), objOpt);
objRange.set_Value(objOpt, registros[m].Sector);
objRange = objSheet.get_Range("E" + ind.ToString(), objOpt);
objRange.set_Value(objOpt, registros[m].Titular);
objRange = objSheet.get_Range("F" + ind.ToString(), objOpt);
objRange.set_Value(objOpt, registros[m].Derivado);
objRange = objSheet.get_Range("G" + ind.ToString(), objOpt);
objRange.set_Value(objOpt, registros[m].TipoPension);
objRange = objSheet.get_Range("H" + ind.ToString(), objOpt);
objRange.set_Value(objOpt, registros[m].Ley);
objRange = objSheet.get_Range("I" + ind.ToString(), objOpt);
objRange.set_Value(objOpt, registros[m].DNI);
objRange = objSheet.get_Range("J" + ind.ToString(), objOpt);
objRange.set_Value(objOpt, registros[m].Folios);
objRange = objSheet.get_Range("K" + ind.ToString(), objOpt);
objRange.set_Value(objOpt, registros[m].Observ);

}

Asi puedo guardar en excel, pero me parece ineficiente porque hay que leer dato x dato de cada fila; lo ideal seria con un select capturar todo del excel y luego enviar todo a otro archivo excel.
Bueno gracias, y si alguien sabe como guardar todo un bloque resultado del select oajla me pueda indicar como modificar el codigo.