Olá pesÂsoal este semana esta com difiÂculÂdaÂdes para imporÂtar um arquivo CSV pegando o nome das coluÂnas ou setando elas em um array para adapÂtar o nome das coluÂnas com o mesmo nome dos meus fields no BD então com um pouco de pesÂquisa e paciÂênÂcia criei esta função.
O uso é simÂples basta indiÂcar o camiÂnho do arquivo e o tipo de sepaÂraÂdor que o CSV usa. O padrão é vÃrÂgula porem no Office usa ponto e vÃrgula.
Crie um arquivo com o nome produtos.csv e insira o código abaixo.
codigo;nome;preco;quantidade 1;lapis;1.20;2 2;borracha;0.50;10 3;caneta;1.50;20
Agora crie um arquivo converte.php e insira o código.
<?php
$caminho = "produtos.csv";
$campos = array('codigo','nome','preco','quantidade</code></span></span>');
$cvs_array = CVStoArray($caminho,$campos);
echo '<pre>';
var_dump($cvs_array);
function CVStoArray($arquivo,Array $campos=null,$separador=';') {
$ponteiro = fopen($arquivo, "r"); // Abro o arquivo para somente leitura
$colunas_nome = fgetcsv($ponteiro, 1000, $separador); // Pego a primeira linha onde tem os nomes dos campos
$numero_colunas = count($colunas_nome);// Vejo quantas colunas o CSV tem para comparar com os $campos.
if(count($campos) != $numero_colunas)
$campos = $colunas_nome;
// executo um looping até pegar todos os registros.
while($valor = fgetcsv($ponteiro, 1000, $separador)) {
$valores[] = $valor;
}
fclose($ponteiro); // fecho a conexão.
$x = 0;
$y = 0;
// Aqui eu pego as colunas e linhas e vou adicionando os valores no $array.
foreach($valores as $i) {
foreach($campos as $z) { // looping para pegar as colunas de acordo com o nome dos campos informados.
$array[$x][$z] = $i[$y];
$y++; // incremento o valor para ir para a próxima coluna.
}
$y = 0; // zero o ponteiro das colunas para ir para a próxima linha.
$x++; // incremento o valor da linha para o próximo registro
}
return $array;
}
?>
Caso tenha alguma duvida ou sugesÂtão deixe um comenÂtáÂrio que terei praÂzer em ajuÂdar.
ComenÂtáÂrios são bem vinÂdos assim posso melhoÂrar a quaÂliÂdade dos tutoÂriÂais aqui apresentados.
É isso pesÂsoal uma ótima semana e até o próximo post.