Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Pessoal to com um problema pois preciso ler um excel e inserir os
dados na base.
O fato de ler o arquivo e inserir os dados não é o problema. sei fazer
isso.
O problema é o seguinte:
O arquivo possui apenas uma coluna com os dados dispostos desta
maneira:
C P F NOME REGISTRO
11111111111 FULANO DA SILVA 99876
22222222222 CILCANO DA SILVA 96021
Então preciso separar estes dados que ficam somente em uma celula e
jogar numa tabela com 3 campos obviamente.
insert into tabela (cpf, nome, registro) values ($cpf, $nome,
$registro)
Existe alguma forma de separar estes dados já que não se tem ponto e
virgula ou virgula para que eu consiga manipular e jogar na base?
Agradeço ajuda...
pois é mas como eu iria me basear? não tenho nem idéia de como
OPCAO 1
explode "espaço"
$str = "11111111111 FULANO DA SILVA 99876";
$parte = explode(" ", $str);
$parte[1] => 11111111111
$parte[2] => FULANO
$parte[3] => DA
$parte[4] => SILVA
$parte[5] => 99876
pega primeiro e ultimo indice do array que você tem o cpf e o registro, depois so concatenar os restantes que você tem o nome
ou entao OPCAO 2 pode usar substr
http://php.net/manual/en/function.strlen.php
caso não sabia como funciona, essa função pode ser lida da seguinte maneira:
apartir da posicao X retorne Y caracteres
substr($str, X, Y);
como cpf sao sempre 11 digitos...
$cpf = substr($str, 0, 11);
codigo tem sempre 5 digitos? se sim pode fazer de tras para frente substr
$codigot = substr($str, -5, 5);
nome
strlen($str)-5 = tamanho da string -5 que são os últimos digitos do codigo
$nome = substr($str, 13, strlen($str)-5);
goruks como ficaria um loop pra inserir os dados desta forma como você passou?
valeu
entao isso ai so para separar a linha...
loop (1 - ate total linhas do excel){
//linha atual do excel
$str = "11111111111 FULANO DA SILVA 99876";
//separa os dados da linha
$cpf = substr($str, 0, 11);
$registro = substr($str, -5, 5);
$nome = substr($str, 13, strlen($str)-5);
//insere
insert into tabela (cpf, nome, registro) values ($cpf, $nome, $registro)
}o código é variado, tens uns com 2 dig. outros com mais...
esse código creio que seja um auto incremento vindo de uma tabela...
valeu vou tentar aqui....qualquer coisa prendo o grito...
grato
entao melhor usar a 1 opcao para separar
estou certo desta maneira?
$str = "11111111111 FULANO DA SILVA 99876";
$parte = explode(" ", $str);
$parte[1] => 11111111111
$parte[2] => FULANO
$parte[3] => DA
$parte[4] => SILVA
$parte[5] => 99876
for ($j = 1; $j <= $data->sheets[0]['numRows']; $j++) {
$var = $data->sheets[0]['cells'][$j+1][1]; // 11111111111
$var2 = $data->sheets[0]['cells'][$j+1][2]; // FULANO
$var3 = $data->sheets[0]['cells'][$j+1][3]; // DA
$var4 = $data->sheets[0]['cells'][$j+1][4]; // SILVA
$var5 = $data->sheets[0]['cells'][$j+1][5]; // 99876
INSERT INTO BLABLA.....
}$str = "11111111111 FULANO DA SILVA 99876";
$parte = explode(" ", $str);
for($i=0; $i<$linhas_exel; $i++){
$sql= "insert into tabela (cpf, nome, registro) values ('".$parte[0]."', '".$parte[1]."', '".$parte[2]."')";
$exeSql= mysql_query($sql, $conexao);
}
E se separar número, letras, número? Você acha que resolveria algo ?