Foros del Web » Programación para mayores de 30 ;) » .NET »

¿Como se rellena un datatable desde un excel?

Estas en el tema de ¿Como se rellena un datatable desde un excel? en el foro de .NET en Foros del Web. TEngo el siguiente codigo: FileInfo f = new FileInfo(file); f.Name.ToString(); string ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + file + "; Extended Properties=\"Excel 8.0;\";"; string CommandText ...
  #1 (permalink)  
Antiguo 20/06/2007, 10:32
 
Fecha de Ingreso: noviembre-2005
Mensajes: 102
Antigüedad: 18 años, 4 meses
Puntos: 0
¿Como se rellena un datatable desde un excel?

TEngo el siguiente codigo:

FileInfo f = new FileInfo(file);

f.Name.ToString();

string ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + file + "; Extended Properties=\"Excel 8.0;\";";
string CommandText = "select * from [" + f.Name.Split('.')[0] + "$]";
OleDbConnection myConnection = new OleDbConnection(ConnectionString);
myConnection.Open();
OleDbDataAdapter oOrdersDataAdapter = new OleDbDataAdapter(new OleDbCommand(CommandText, myConnection));

oOrdersDataAdapter.Fill(dtTexto);
Y me da la excepción: 'Zona 11AYU200706202$' no es un nombre válido. Asegúrese de que no incluye caracteres o signos de puntuación no válidos y que el nombre no es demasiado largo.

Me da la excepcion incluso solo poniendo zona de titulo al xls. ¿Alguien sabe que esta pasando? ¿O rellenar el DataTable de algun otro modo?

Me estoy volviendo loco. Gracias
  #2 (permalink)  
Antiguo 21/06/2007, 08:32
 
Fecha de Ingreso: noviembre-2005
Mensajes: 102
Antigüedad: 18 años, 4 meses
Puntos: 0
Re: ¿Como se rellena un datatable desde un excel?

Solucionado. Resulta que cuando renombras el archivo la hoja no se renombra y el select ataca a la hoja. Con lo que he sacado el nombre de la hoja, se lo paso al select y listo.
  #3 (permalink)  
Antiguo 26/06/2007, 13:38
Avatar de shumito  
Fecha de Ingreso: mayo-2006
Mensajes: 248
Antigüedad: 17 años, 10 meses
Puntos: 0
Re: ¿Como se rellena un datatable desde un excel?

pero como lo has hecho para sacar el nombre de la hoja?
  #4 (permalink)  
Antiguo 28/06/2007, 01:20
 
Fecha de Ingreso: noviembre-2005
Mensajes: 102
Antigüedad: 18 años, 4 meses
Puntos: 0
Mensaje Re: ¿Como se rellena un datatable desde un excel?

Utilizo un componente que trabaja con archivos excel.
La libreria se llama:
Microsoft.Office.Interop.Excel;

Luego ya empleo sus metodos para abir el archivo y averiguar el nombre de la hoja ;)

Excel.Application excel = new Excel.Application();
Excel.Sheets sheets;
Excel.Worksheet worksheet;
//Abro objeto excel
excel.Workbooks.Open(file, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing);
//Obtengo las hojas del libro abierto
sheets = excel.Worksheets;
worksheet = (Excel.Worksheet)sheets.get_Item(1);
//Aqui esta el nombre
string hoja = worksheet.Name;
excel.Workbooks.Close();
excel.Quit();

Un saludo
  #5 (permalink)  
Antiguo 24/08/2007, 09:46
Avatar de wiro  
Fecha de Ingreso: abril-2006
Mensajes: 72
Antigüedad: 18 años
Puntos: 0
Anpiro: Re: ¿Como se rellena un datatable desde un excel?

Hola, soy wiro, estaba revisando, buscando ayuda y me encontre con tu repuesta a una inquietud parecida a la que tengo, yo tambien quiero cargar los datos desde una archivo en Excel.

ya he importado la libreria Microsoft.Office.Interop.Excel

Imports Microsoft.Office.Interop.Excel

pero ahora que quiero usar sus metodos estos no los logro ver, intento declarar una varible y por medio de esta accesar a los metodos pero no me resulta.

me puedes ayduar con esto.

gracias
  #6 (permalink)  
Antiguo 24/08/2007, 10:23
Avatar de Developer9
(Desactivado)
 
Fecha de Ingreso: abril-2005
Ubicación: Mi Ecuador del alma
Mensajes: 4.196
Antigüedad: 19 años
Puntos: 47
Re: ¿Como se rellena un datatable desde un excel?



Donde se encuentra la famosa librería Imports Microsoft.Office.Interop.Excel

A mi proyecto le hago clic derecho en Referencias, Selecciono Agregar Referencia y no encuentro la dll mencionada en la lista

Estoy con visual basic .net y visual studio 2003

Yo también quiero, ya me gustó adentrarme más en esto
  #7 (permalink)  
Antiguo 27/08/2007, 12:57
Avatar de wiro  
Fecha de Ingreso: abril-2006
Mensajes: 72
Antigüedad: 18 años
Puntos: 0
Re: ¿Como se rellena un datatable desde un excel?

La DLL se llama Interop.Excel.dll y esta alojada en windows/system32

por lo menos ahi fue en donde la encontre yo, si la tiene solo le ahces la referencia desde tu proyecto ya nada mas.

hasta pronto.
  #8 (permalink)  
Antiguo 28/08/2007, 16:04
Avatar de Developer9
(Desactivado)
 
Fecha de Ingreso: abril-2005
Ubicación: Mi Ecuador del alma
Mensajes: 4.196
Antigüedad: 19 años
Puntos: 47
Re: ¿Como se rellena un datatable desde un excel?

Ah chuzo... y como descubriste que estaba allá...






yo no tengo esa dll
  #9 (permalink)  
Antiguo 29/08/2007, 08:38
Avatar de Developer9
(Desactivado)
 
Fecha de Ingreso: abril-2005
Ubicación: Mi Ecuador del alma
Mensajes: 4.196
Antigüedad: 19 años
Puntos: 47
Re: ¿Como se rellena un datatable desde un excel?

HOla amigos... tengo un problema existencial

Piratié del foro el código que me carga un archivo de excel en un grid. La cosa es que tengo un problema con los datos de una columnas.

En excel tengo una columna (la columna A) con números, pero los primeros registros (1 al 14) están vacios y los últimos registros (15 al 50) sí tengo valores. Entonces al cargar el grid, en esa columna no me muestra nada de nada. Y probé poniendole un número cualquiera en la celda A1 y al cargar el grid ya veo el valor que puse en la primera celda y en las celdas A15 hasta A50.

Es como que los valores de la primera fila determinen el tipo de dato en esa columna. Y como en este caso no hay nada pone nulo todo
  #10 (permalink)  
Antiguo 30/08/2007, 18:48
 
Fecha de Ingreso: febrero-2005
Mensajes: 867
Antigüedad: 19 años, 2 meses
Puntos: 3
Re: ¿Como se rellena un datatable desde un excel?

ajajaj jajaja piratiate el foro ajaja ajaj no se salva nadie jajajajaja jajajaj
  #11 (permalink)  
Antiguo 30/08/2007, 22:33
 
Fecha de Ingreso: agosto-2007
Mensajes: 1
Antigüedad: 16 años, 7 meses
Puntos: 0
Re: ¿Como se rellena un datatable desde un excel?

Hola, yo tengo el mismo problema, no encuentro la referencia Microsoft.Office.Interop.Excel, le doy a gregar referencia y no est aen la lista
Me podrian ayudar plis
  #12 (permalink)  
Antiguo 01/09/2007, 04:39
Avatar de freegirl
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: Catalonia
Mensajes: 4.334
Antigüedad: 20 años, 6 meses
Puntos: 156
Re: ¿Como se rellena un datatable desde un excel?

Debeis agregar: Microsoft Office Object Library (la versión que tengais instalada)

saludos
  #13 (permalink)  
Antiguo 16/09/2008, 20:02
 
Fecha de Ingreso: julio-2008
Mensajes: 13
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Re: ¿Como se rellena un datatable desde un excel?

Cita:
Iniciado por freegirl Ver Mensaje
Debeis agregar: Microsoft Office Object Library (la versión que tengais instalada)

saludos
Hola a todos.
No se porque usan la libreria de Office Interop sabiendo que eso es COM y pueden usar componentes propios de .NET como un OleDbConnection y cargar el archivo sin ningun problema. En lo posible no usar COM son mas lentos y no son nativos de .NET.
Quie les dejo un codigo que les puede interesar para cargar su dataset con objetos propios de ADO.NET

Dim strconn As String
Dim lDt As New DataTable
Try
Dim lRuta As String = "C:\miarchivo.xls"

strconn = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & lRuta & ";Extended Properties=Excel 8.0"

Dim mconn As New OleDb.OleDbConnection(strconn)
Dim ad As New OleDb.OleDbDataAdapter("Select * from [Hoja1$]", mconn)
mconn.Open()
ad.Fill(lDt)
mconn.Close()
Catch ex As Exception
cUtilidades.InformarErrorGravedad("Error al abrir el archivo xls de tipo de trabajos. TallerID: " & cParametrosApp.getTallerID & " Descripción: " & ex.ToString, "cADTipoTrabajos")
End Try
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:25.