Ver Mensaje Individual
  #4 (permalink)  
Antiguo 22/07/2010, 15:10
Avatar de huesos52
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