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

Leer un xlsx (office 2007) C# y grabar en bd.

Estas en el tema de Leer un xlsx (office 2007) C# y grabar en bd. en el foro de .NET en Foros del Web. Hola a todos, les ofresco la solución (completa) para este problema de leer un excel 2007. Los mas impotante es la cadena de conexion, ya ...
  #1 (permalink)  
Antiguo 02/01/2009, 10:06
 
Fecha de Ingreso: febrero-2008
Mensajes: 7
Antigüedad: 16 años, 2 meses
Puntos: 2
Leer un xlsx (office 2007) C# y grabar en bd.

Hola a todos, les ofresco la solución (completa) para este problema de leer un excel 2007.

Los mas impotante es la cadena de conexion, ya que lo demás va a depender del proposito de cada uno... en este caso lo que hace es leer un archivo con extension xls o xlsx... almacenar en memoria y luego pasarlo a un dataset el cual posteriormente se graba en l bd.
Es importante si no lo tienen descargar el siguiente archivo:

http://www.microsoft.com/downloads/details.aspx?displaylang=es&FamilyID=7554f536-8c28-4598-9b72-ef94e038c891

que es el controlador que permite usar la cadena de conexion para abrir el tipo de archivos .xslx
En este ejemplo estoy ocupando OLEDB... pero si necesitan o requieren usar ODBC deben leer la info de la misma pagina de microsoft. (arriba).


try
{
//Asegurar que hay archivo
if (this.flupCargaPlantaExcel.HasFile)
{

string strExtension = "";
//Obtener el nombre
string strPlantasMasivas =
this.flupCargaPlantaExcel.PostedFile.FileName;
//obtener la extension
strExtension = this.flupCargaPlantaExcel.PostedFile.FileName.Subs tring(flupCargaPlantaExcel.Pos
tedFile.FileName.LastIndexOf("."));

if (strExtension == ".xls"|| strExtension == ".xlsx")
{
string strExtension = "";
string strPlantasMasivas =
this.flupCargaPlantaExcel.PostedFile.FileName;
strExtension =
this.flupCargaPlantaExcel.PostedFile.FileName.Subs tring(flupCargaPlantaExcel.Pos
tedFile.FileName.LastIndexOf("."));
ImportarExceldePlantas(strPlantasMasivas )
}



//AQUI EL OTRO METODO:******************************************* **

public static DataSet ImportarExceldePlantas(string strPath)
{
DataSet dtsPlantas = new DataSet();
try
{
string sFileConnectionString="";
string sFileSQL = "";
OleDbConnection objConn = new OleDbConnection();
OleDbCommand objCmd = new OleDbCommand();
OleDbDataAdapter objDa = new OleDbDataAdapter();
//personalizar

// Leer el path del archivo Excel que tiene los datos del cliente

// Si el archivo existe...
if (File.Exists(strPath))
{
// Atencion: Esta es la cadena de conexion (apta para archivos xlsx). La misma lee el archivo especificado en el path
objConn.ConnectionString = ("Provider=Microsoft.ACE.OLEDB.12.0;" +
("Data Source=" + (strPath + ";Extended Properties=\"Excel 12.0;HDR=YES\"")));
objConn.Open();
objCmd.CommandText = "SELECT * FROM [Hoja1$]";
objCmd.Connection = objConn;
objDa.SelectCommand = objCmd;

// Llenar el DataSet
objDa.Fill(dtsPlantas, "Plantas");

//cerrar la conexion
objConn.Close();
//return true;
}

}
catch (Exception ex)
{
//dtsPlantas = null;
}

return dtsPlantas;

}

SALUDOS Y FELIZ 2009 !!!!
  #2 (permalink)  
Antiguo 03/01/2009, 09:57
 
Fecha de Ingreso: octubre-2000
Mensajes: 1.692
Antigüedad: 23 años, 5 meses
Puntos: 19
Respuesta: Leer un xlsx (office 2007) C# y grabar en bd.

Hola.
MUY BUENO. Podrias ponerlos en FAQ's
Saludos
__________________
PD: Con amor, fe, amor a Dios y amistad podemos hacer un mundo mejor!!!!
  #3 (permalink)  
Antiguo 18/11/2009, 06:24
 
Fecha de Ingreso: noviembre-2009
Mensajes: 1
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: Leer un xlsx (office 2007) C# y grabar en bd.

Hola buenos días.
a ver si podeis ayudarme, en mi caso el nombre de la hoja puede variar, entonces
cuando hago
objCmd.CommandText = "SELECT * FROM [Hoja1$]";

no encuentra el objeto. ¿sabeis si hay alguna manera de que busque en la primera hoja sin tener en cuenta su nombre?

muchas gracias y un saludo.
  #4 (permalink)  
Antiguo 22/07/2010, 15:10
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Leer un xlsx (office 2007) C# y grabar en bd.

Cita:
Iniciado por fernandobasaez Ver Mensaje
Hola a todos, les ofresco la solución (completa) para este problema de leer un excel 2007.

Los mas impotante es la cadena de conexion, ya que lo demás va a depender del proposito de cada uno... en este caso lo que hace es leer un archivo con extension xls o xlsx... almacenar en memoria y luego pasarlo a un dataset el cual posteriormente se graba en l bd.
Es importante si no lo tienen descargar el siguiente archivo:

http://www.microsoft.com/downloads/d...2-ef94e038c891

que es el controlador que permite usar la cadena de conexion para abrir el tipo de archivos .xslx
En este ejemplo estoy ocupando OLEDB... pero si necesitan o requieren usar ODBC deben leer la info de la misma pagina de microsoft. (arriba).


try
{
//Asegurar que hay archivo
if (this.flupCargaPlantaExcel.HasFile)
{

string strExtension = "";
//Obtener el nombre
string strPlantasMasivas =
this.flupCargaPlantaExcel.PostedFile.FileName;
//obtener la extension
strExtension = this.flupCargaPlantaExcel.PostedFile.FileName.Subs tring(flupCargaPlantaExcel.Pos
tedFile.FileName.LastIndexOf("."));

if (strExtension == ".xls"|| strExtension == ".xlsx")
{
string strExtension = "";
string strPlantasMasivas =
this.flupCargaPlantaExcel.PostedFile.FileName;
strExtension =
this.flupCargaPlantaExcel.PostedFile.FileName.Subs tring(flupCargaPlantaExcel.Pos
tedFile.FileName.LastIndexOf("."));
ImportarExceldePlantas(strPlantasMasivas )
}



//AQUI EL OTRO METODO:******************************************* **

public static DataSet ImportarExceldePlantas(string strPath)
{
DataSet dtsPlantas = new DataSet();
try
{
string sFileConnectionString="";
string sFileSQL = "";
OleDbConnection objConn = new OleDbConnection();
OleDbCommand objCmd = new OleDbCommand();
OleDbDataAdapter objDa = new OleDbDataAdapter();
//personalizar

// Leer el path del archivo Excel que tiene los datos del cliente

// Si el archivo existe...
if (File.Exists(strPath))
{
// Atencion: Esta es la cadena de conexion (apta para archivos xlsx). La misma lee el archivo especificado en el path
objConn.ConnectionString = ("Provider=Microsoft.ACE.OLEDB.12.0;" +
("Data Source=" + (strPath + ";Extended Properties=\"Excel 12.0;HDR=YES\"")));
objConn.Open();
objCmd.CommandText = "SELECT * FROM [Hoja1$]";
objCmd.Connection = objConn;
objDa.SelectCommand = objCmd;

// Llenar el DataSet
objDa.Fill(dtsPlantas, "Plantas");

//cerrar la conexion
objConn.Close();
//return true;
}

}
catch (Exception ex)
{
//dtsPlantas = null;
}

return dtsPlantas;

}

SALUDOS Y FELIZ 2009 !!!!

Compadre... aunque el post es muy viejo... quiero agradecerte.
Me ha funcionado de pelos.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 11:35.