Ver Mensaje Individual
  #1 (permalink)  
Antiguo 02/01/2009, 10:06
fernandobasaez
 
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 !!!!