Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] leer csv y guardar los headers

Estas en el tema de leer csv y guardar los headers en el foro de PHP en Foros del Web. Hola... Tengo dias tratando de meter datos a un xml (plantilla), desde un .csv.... encontre un bash pero no logro correrlo por un error de ...
  #1 (permalink)  
Antiguo 03/03/2014, 14:56
 
Fecha de Ingreso: diciembre-2005
Ubicación: Jalisco
Mensajes: 31
Antigüedad: 18 años, 4 meses
Puntos: 0
leer csv y guardar los headers

Hola...

Tengo dias tratando de meter datos a un xml (plantilla), desde un .csv....

encontre un bash pero no logro correrlo por un error de xmlscarlet.

queria saber si existe algo parecido en php para utilizarlo.

El codigo es este.

Código HTML:
#!/bin/bash
xmlstarlet_command=( )
read_header=0
while IFS=, read AUFNR GAMNG GLTRS GSTRS; do
  if (( read_header == 0 )); then read_header=1; continue; fi
  xmlstarlet_command+=( -s /qs:query_batch/qs:body -t elem -n E1FKOL -v '' )
  xmlstarlet_command+=( -i '/qs:query_batch/qs:body/*[last()]' -t attr -n AUFNR -v "$AUFNR" )
  xmlstarlet_command+=( -i '/qs:query_batch/qs:body/*[last()]' -t attr -n match -v fuzzy )
  xmlstarlet_command+=( -i '/qs:query_batch/qs:body/*[last()]' -t attr -n GAMNG -v "$GAMNG" )
  xmlstarlet_command+=( -i '/qs:query_batch/qs:body/*[last()]' -t attr -n GLTRS -v $GLTRS )
  xmlstarlet_command+=( -i '/qs:query_batch/qs:body/*[last()]' -t attr -n GSTRS -v "$GSTRS" )
done <LISTOTA.csv
xmlstarlet ed -N qs=http://www.crossref.org/qschema/2.0 "${xmlstarlet_command[@]}" <template.xml
CSV
Código HTML:
AUFNR,GAMNG,GLTRS,GSTRS
AC2M93,AC2M94,21042603,21042603
AC2M94,AC2M95,21042604,21042603
AC2M95,AC2M96,21042605,21042603
AC2M96,AC2M97,21042606,21042603
AC2M97,AC2M98,21042607,21042603
AC2M98,AC2M99,21042608,21042603
AC2M99,AC2M100,21042609,21042603
los primeros seria lo que se agregaria.

Ojala se pudiera.

saludos.
  #2 (permalink)  
Antiguo 04/03/2014, 14:31
 
Fecha de Ingreso: diciembre-2005
Ubicación: Jalisco
Mensajes: 31
Antigüedad: 18 años, 4 meses
Puntos: 0
Respuesta: leer csv y guardar los headers

Por si a alguien le sirve...

Código PHP:
<?php

function csv_in_array($url,$delm=",",$encl="\"",$head=true) {
   
    
$csvxrow file($url);   // ---- csv rows to array ----
    
$doc DOMDocument::loadHTML("LISTOTA.csv");
    
    
$csvxrow[0] = chop($csvxrow[0]);
    
$csvxrow[0] = str_replace($encl,'',$csvxrow[0]);
    
$keydata explode($delm,$csvxrow[0]);
    
$keynumb count($keydata);
    
    if (
$head === true) {
    
$anzdata count($csvxrow);
    
$z=0;
    
$h=0;
    
$j=0;
    for(
$x=1$x<$anzdata$x++) {
        
$csvxrow[$x] = chop($csvxrow[$x]);
        
$csvxrow[$x] = str_replace($encl,'',$csvxrow[$x]);
        
$csv_data[$x] = explode($delm,$csvxrow[$x]);
        
$i=0;
        foreach(
$keydata as $key) {
            
$out[$z][$key] = $csv_data[$x][$i];
            
$i++;
            }
        
$z++;
        }
         
    }
    else {
        
$i=0;
        foreach(
$csvxrow as $item) {
            
$item chop($item);
            
$item str_replace($encl,'',$item);
            
$csv_data explode($delm,$item);
            for (
$y=0$y<$keynumb$y++) {
               
$out[$i][$y] = $csv_data[$y];
            }
        
$i++;
        }
    }

return 
$out;
}

// --------------------------------------------------------------

?>

<?php
/*fuction call with 4 parameters:

(1) = the file with CSV data (url / string)
(2) = colum delimiter (e.g: ; or | or , ...)
(3) = values enclosed by (e.g: ' or " or ^ or ...)
(4) = with or without 1st row = head (true/false)
*/
?>

<?php

// ----- call ------
$csvdata csv_in_array("LISTOTA.csv"",""\""true);
// -----------------

// ----- view ------
echo "<pre>\r\n";
print_r($csvdata);
echo 
"</pre>\r\n";
// -----------------
?>

Etiquetas: csv, headers
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




La zona horaria es GMT -6. Ahora son las 21:47.