none
Importar excel desde cualquier lugar de donde este alojado en mi maquina RRS feed

  • Pregunta

  • Hola amigos aqui de nuevo molestando 

    veran lo que necesito es importar un archivo de excel, ya tengo el codigo el cual es este

    string direccion = fulArchivo.FileName.ToString();
            DataTable dtDatos = FuncionCobroBL.SelecionarExcel(@"C:\cobros\" + direccion, "Uno");
            try
            {
                if (ddlListaImport.SelectedValue == "Mensual")
                {
                    if (ddlBanco.SelectedValue == "BAC")
                    {
                        foreach (DataRow dtRow in dtDatos.Rows)
                        {
                            _Cobros.FechaCobro = Convert.ToDateTime(DateTime.Now.ToShortDateString());
                            _Cobros.FechaPago = Convert.ToDateTime(dtRow[0].ToString());
                            _Cobros.KeyTagSocio = dtRow[1].ToString();
                            _Cobros.NumTicket = dtRow[3].ToString();
                            _Cobros.TarjetaDeCobro = _Encriptacion.encriptar(dtRow[4].ToString(), Clave_secreta);
                            _Cobros.MontoCobro = Convert.ToDecimal(dtRow[5].ToString());
                            _Cobros.Cancelado = Convert.ToBoolean(dtRow[6].ToString());
    
                            byte cancelado;
                            if (dtRow[6].ToString() != "" & dtRow[6].ToString() != "Detalle del Rechazo")
                            {
                                if (dtRow[6].ToString() == "Aprobado")
                                {
                                    cancelado = 1;
                                }
                                else
                                {
                                    cancelado = 0;
                                }
                            }
                        }
    
                        _CobrosBL.AgregarCobroPendiente(_Cobros);
                    }
                    if (ddlBanco.SelectedValue == "CITI")
                    {
                        foreach (DataRow dtRow in dtDatos.Rows)
                        {
                            _Cobros.KeyTagSocio = dtRow[0].ToString();
                            _Cobros.TarjetaDeCobro = dtRow[2].ToString();
                            _Cobros.MontoCobro = Convert.ToDecimal(dtRow[4].ToString());
                            _Cobros.NumTicket = dtRow[6].ToString();
                            _Cobros.Cancelado = Convert.ToBoolean(dtRow[7].ToString());
    
                            byte cancelado;
                            if (dtRow[6].ToString() != "" & dtRow[6].ToString() != "DescripcionTransaccion")
                            {
                                if (dtRow[6].ToString() == "SUCCESSFUL")
                                {
                                    cancelado = 1;
                                }
                                else
                                {
                                    cancelado = 0;
                                }
                            }
    
                        }
    
                        _CobrosBL.AgregarCobroPendiente(_Cobros);
                    }
                }
            }
            catch (Exception l)
            {
                this.lblErrorImport.Text = "";
                string Script = "alert('Importacion Exitosa');";
            }

    Pero en esta parte del codigo

    string direccion = fulArchivo.FileName.ToString();
            DataTable dtDatos = FuncionCobroBL.SelecionarExcel(@"C:\cobros\" + direccion, "Uno");

    como hago para que pueda buscar el y cargar el archivo de excel sin importar el lugar donde este almacenado como puedo logra eso es decir en ves que mi codigo sea tenga la direccion para cargar, me permita cargar desde cualquier lugar

    viernes, 31 de octubre de 2014 17:14

Todas las respuestas

  • Estimado lo que te recomiendo es crearte una tabla en sql en el cual el campo que vas a grabar debería ser la dirección física de tu archivo dicha dirección física debería ser dentro de una carpeta compartida (\\SOPORTE-PC\..)



    La información debe ser de libre acceso... El conocimiento es libre para todos

    viernes, 31 de octubre de 2014 17:58
  • Puede implementar un control FileUpload y permitir que los clientes selecciones archivos del PC


    G. Poliovei

    viernes, 31 de octubre de 2014 18:01
  • Hola juanquex pues lo que yo necesito es cargar la informacion desde cualquier sitio no necesito una direccion local pero gracias pro el tip.

    viernes, 31 de octubre de 2014 18:10
  • Hola george un gusto de nuevo contar con su apoyo.

    ya tengo el fileupload es el que tiene el nombre fulArchivo, este es el codigo don de esta

    string direccion = fulArchivo.FileName.ToString();
            DataTable dtDatos = FuncionCobroBL.SelecionarExcel(@"C:\cobros\" + direccion, "Uno");

    pero como hago para que cuando invoque el metodo seleccionarExcel lo permita invocar desde cualquier ubicacion, no precisamente de la que tengo reflejado en el codigo

    viernes, 31 de octubre de 2014 18:15
  • Francisco lo que puedes hacer una vez creada tu carpeta compartida en disco C.

    Esencialmente en el inetput, wwwroot lo debes publicar y de hay consumirlo.

    No tengo un ejemplo a la mano pero eso lo que he echo y me salio bien por eso te dije que te crearás un campo en una tabla donde guardes la dirección y el archivo. Y de hay lo consumes.

     

    La información debe ser de libre acceso... El conocimiento es libre para todos

    viernes, 31 de octubre de 2014 19:40
  • yo tengo una función que importa un excel, tu solo le das la ruta, devuelve un DataTable.

    public static DataTable importaExcel(string FilePath)
            {
                DataTable dt= new DataTable();
                try
                {
                    string conStr = "Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source=" + FilePath + ";" + "Extended Properties=\"Excel 12.0 Xml;HDR=YES;IMEX=1;TypeGuessRows=0;ImportMixedTypes=Text\"";
                                    
                    OleDbConnection connExcel = new OleDbConnection(conStr);
                    
                    OleDbCommand cmdExcel = new OleDbCommand();
                    OleDbDataAdapter oda = new OleDbDataAdapter();
                    
                    cmdExcel.Connection = connExcel;
                    
                    //Get the name of First Sheet
                    connExcel.Open();
                    DataTable dtExcelSchema;
                    dtExcelSchema = connExcel.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
                    string SheetName = dtExcelSchema.Rows[0]["TABLE_NAME"].ToString();
                    connExcel.Close();
    
                    //Read Data from First Sheet
                    connExcel.Open();
                    cmdExcel.CommandText = "SELECT * From [" + SheetName + "]";
                    oda.SelectCommand = cmdExcel;
                    oda.Fill(dt);
                    connExcel.Close();
    
                }
                catch (Exception e)
                {
                    MessageBox.Show(e.Message, "Error interno al importar Excel");
                }
                return dt;
                
            }

    Este codigo lo obtuve alguna vez buscando por la red.

    Aclaro no es mio pero lo uso muy seguido.

    Ojala te sirva.

    viernes, 31 de octubre de 2014 21:20
  • Hola perdón la tardanza en contestar

    yo tengo este código para la importación

    UI

    /******************************************Codigo para importacion general**************************************************************/
                    string direccion = fulArchivo.FileName.ToString();
                    DataTable dtDatos = FuncionCobroBL.SelecionarExcel(@"C:\cobros\" + direccion, "Uno");
                    try
                    {
                        /*=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=Inicio Fragmento para la importacion de los cobros mensuales=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=*/
                        if (ddlListaImport.SelectedValue == "Mensual")
                        {
                            if (ddlBanco.SelectedValue == "BAC")
                            {
                                foreach (DataRow dtRow in dtDatos.Rows)
                                {
                                    _Cobros.KeyTagSocio = dtRow[1].ToString();
                                    _Cobros.FechaCobro = Convert.ToDateTime(DateTime.Now.ToShortDateString());
                                    _Cobros.MontoCobro = Convert.ToDecimal(dtRow[5].ToString());
                                    _Cobros.TarjetaDeCobro = _Encriptacion.encriptar(dtRow[4].ToString(), Clave_secreta);
                                    _Cobros.Cancelado = Convert.ToBoolean(dtRow[6].ToString());
                                    _Cobros.FechaPago = Convert.ToDateTime(dtRow[0].ToString());
                                    _Cobros.NumTicket = dtRow[3].ToString();
                                    _Cobros.Cortesia = false;
                                    _Cobros.TipoCobro = "Electronico";
    
                                    byte cancelado;
                                    if (dtRow[6].ToString() != "" & dtRow[6].ToString() != "Detalle del Rechazo")
                                    {
                                        if (dtRow[6].ToString() == "Aprobado")
                                        {
                                            cancelado = 1;
                                        }
                                        else
                                        {
                                            cancelado = 0;
                                        }
                                    }
                                }
    
                                _CobrosBL.AgregarCobroPendiente(_Cobros);
                            }
                            if (ddlBanco.SelectedValue == "CITI")
                            {
                                foreach (DataRow dtRow in dtDatos.Rows)
                                {
                                    _Cobros.KeyTagSocio = dtRow[0].ToString();
                                    _Cobros.TarjetaDeCobro = dtRow[2].ToString();
                                    _Cobros.MontoCobro = Convert.ToDecimal(dtRow[4].ToString());
                                    _Cobros.NumTicket = dtRow[6].ToString();
                                    _Cobros.Cancelado = Convert.ToBoolean(dtRow[7].ToString());
    
                                    byte cancelado;
                                    if (dtRow[6].ToString() != "" & dtRow[6].ToString() != "DescripcionTransaccion")
                                    {
                                        if (dtRow[6].ToString() == "SUCCESSFUL")
                                        {
                                            cancelado = 1;
                                        }
                                        else
                                        {
                                            cancelado = 0;
                                        }
                                    }
    
                                }
    
                                _CobrosBL.AgregarCobroPendiente(_Cobros);
                            }
                        }

    BL

     string connectionString = "Driver={Microsoft Excel Driver (*.xls)};DriverId=790;Dbq=" + Arch + ";DefaultDir=" + System.IO.Path.GetDirectoryName(Arch);
    
                using (OdbcConnection conn = new OdbcConnection(connectionString))
                {
                    conn.Open();
     
                    OleDbConnection Conex = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Arch + ";Extended Properties='Excel 12.0 Xml;'");
                    using (OdbcCommand command = conn.CreateCommand())
                    {
                        command.CommandText = "SELECT * FROM [CONSULTA DE DETALLE DE PROCESO $]";
                        OdbcDataAdapter ad = new OdbcDataAdapter(command);
                        DataTable dt = new DataTable();
    
                        ad.Fill(dt);
    
                        return dt;
                    }
                }

    lunes, 3 de noviembre de 2014 21:43