entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

1voto

Importar Excell a base de datos no reconoce las dos primeras columnas

Hola gente, estoy tratando de importar un archivo EXCEL a mi Base de Datos, los datos se guardan, menos las dos primeras columnas, las de hrs_ini, y hrs_ter, ni idea de porque, el resto se guarda sin problemas, hace mas de un día que estoy tratando de encontrar el error sin obtener resultado. Estoy usando PHP y Codeigniter, les dejo el código de mi controlador.

public function guardar_horario(){

 if (!empty($_FILES['file']['name'])) {

  $pathinfo = pathinfo($_FILES["file"]["name"]);

  if (($pathinfo['extension'] == 'xlsx' || $pathinfo['extension'] == 'xls')
       && $_FILES['file']['size'] > 0 ) {

    // Nombre Temporal del Archivo
    $inputFileName = $_FILES['file']['tmp_name'];

    //Lee el Archivo usando ReaderFactory
    $reader = ReaderFactory::create(Type::XLSX);

    // Abrimos el archivo
    $reader->open($inputFileName);
    $count = 1;

    //Numero de Hojas en el Archivo
    foreach ($reader->getSheetIterator() as $sheet) {

        // Numero de filas en el documento EXCEL
        foreach ($sheet->getRowIterator() as $row) {

            // Lee los Datos despues del encabezado
            // El encabezado se encuentra en la primera fila
         if($count > 1) {

            $data = array(

              'rut_usu' => $this->input->post('rut_usu'),
              'hrs_ini' => $row[0],
              'hrs_ter' => $row[1],
              'lunes' => $row[2],
              'martes' => $row[3],
              'miercoles' => $row[4],
              'jueves' => $row[5],
              'viernes' => $row[6],
              'sabado' => $row[7],
              'fecha_ini' => $this->input->post('fecha_ini'),
              'fecha_ter' => $this->input->post('fecha_ter'),

           );

          $this->db->insert('horario',$data);

         }
            $count++;
        }
    }

    // cerramos el archivo EXCEL
    $reader->close();

   } else {

    echo "Seleccione un tipo de Archivo Valido";
   }

  } else {

  echo "Seleccione un Archivo EXCEL";

  }

 }

Mi archivo EXCEL

enter image description here

Mi Base de Datos:

enter image description here

1voto

Kvothe_95 comentado

Cambie, los Campos hrs_ini y hrs_ter a VARCHAR, y escribi un texto cualquiera en algunos de ellos, como ej. Helado, y se guarda, pero no la hora, pues queda en blanco.

1 Respuesta

1voto

MatrixCampus Puntos340

Hola,

Si cambiando los campos a VARCHAR, funciona intuyo que puedan ser el tipo de dato en el propio excel.
Te propongo que fuerces el tipo haciendo cast de la siguiente forma.

$data = array(

              'rut_usu' => $this->input->post('rut_usu'),
              'hrs_ini' => trim((string)$row[0]),
              'hrs_ter' => trim((string)$row[1]),
              'lunes' => $row[2],
              'martes' => $row[3],
              'miercoles' => $row[4],
              'jueves' => $row[5],
              'viernes' => $row[6],
              'sabado' => $row[7],
              'fecha_ini' => $this->input->post('fecha_ini'),
              'fecha_ter' => $this->input->post('fecha_ter'),

           );

Dime que tal.

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta