Autor Tópico: Importar XLS  (Lida 901 vezes)

gabrielemerich

  • Iniciante
  • **
  • Mensagens: 76
Importar XLS
« Online: Maio 20, 2016, 01:19:42 pm »
Galera estou com dificuldades para importar uma planilha do usuario para a minha base de dados.
Se alguém souber solucionar, preciso de um código que importe os dados da planilha, e verifica se aqueles dados já existem para não acumula-los.
Estou usando o seguinte código, mas no ato da importação, o mesmo apresenta o seguinte erro:


segue o código:
Código: [Selecionar]
// Address Directory's uploader of Application
$path = $this->Ini->path_doc;

// Absolute path of the file
{arquivo} = $path . '/' . {arquivo};

$separa = explode(".", {arquivo}); //Separamos o nome do arquivo para verificar seu tipo
$separa = array_reverse($separa); /*array_reverse, inverte o array, então se o usuário enviar um arquivo com mais de um ponto, ele pegará o ultimo ponto, depois desse ponto será o tipo do arquivo*/
$tipo = $separa[0]; //Pegamos o tipo do arquivo
/* Agora iremos verificar se o arquivo é válido, você pode alterar o tipo de arquivo que deseja receber conforme sua nescessidade */

if($tipo != "xls") {

   echo "<script>alert('Arquivo inválido!!')</script>";
   sc_redir(ctr_importa_diesel);

} else {


$arq = fopen({arquivo},'r');// le o arquivo txt
while($linha = fgetcsv($arq,2048,';')){ //se extrair uma linha e não for false
{nome} = $linha[0];
{endereco} = $linha[1];
{cep} = $linha[2];
{cidade} = $linha[3];


sc_lookup(ver,"SELECT nome, endereco, cep,cidade FROM planilhas WHERE nome = '{nome}' AND endereco = '{endereco}' AND cep = {cep} AND cidade = '{cidade}'");

if (empty({ver[0][0]}) && empty({ver[0][1]}) && empty({ver[0][2]})){
sc_exec_sql("INSERT INTO planilhas (nome,endereco,cep,cidade) VALUES ('{nome}','{endereco}',{cep},'{cidade}')");
  } else {
echo "<script>alert('Importação para essa Data e Empresa já foi Realizada!!')</script>";
  sc_redir(ctr_importa_diesel);
    }
}
   echo "<script>alert('Dados importados com sucesso!!')</script>";
   fclose($arq);
   unlink("{arquivo}");
   sc_redir(ctr_importa_diesel);
}

Haroldo

  • Expert
  • *****
  • Mensagens: 6276
  • Conhecimento diminui limitações.△TFA△
    • Infinitus Web Gestão Empresarial/Gestão ITIL/Consultoria Scriptcase
Re:Importar XLS
« Responder #1 Online: Maio 20, 2016, 01:46:23 pm »
Salva a planilha como csv e importa como texto.

gabrielemerich

  • Iniciante
  • **
  • Mensagens: 76
Re:Importar XLS
« Responder #2 Online: Maio 22, 2016, 09:10:32 pm »
Creio que não seja isso Haroldo, mas obrigado irei testar.

Haroldo

  • Expert
  • *****
  • Mensagens: 6276
  • Conhecimento diminui limitações.△TFA△
    • Infinitus Web Gestão Empresarial/Gestão ITIL/Consultoria Scriptcase
Re:Importar XLS
« Responder #3 Online: Maio 22, 2016, 09:57:50 pm »
Gabriele,

Eu só acho mais fácil e controlável importar um arquivo do tipo text do que um xls, seu domínio será maior e melhor no código.

Salvar a planilha em formato csv o excel faz tranquilamente, use um delimitador de campos tipo o ; ou a , e um delimitador de strings tipo as ".

Leia a linha do arquivo e quebre os campos com comando explode.

Seu controle será muito melhor sobre os valores dos campos e na hora de inserir no banco de dados, terá melhores chances de solucionar os erros que ocorrerem.

flaviomorais

  • Avançado
  • ****
  • Mensagens: 348
    • Email
Re:Importar XLS
« Responder #4 Online: Maio 23, 2016, 07:22:34 am »
pelo undefined offset, provavelmente seu loop que usa alguma array esta errado

Galera estou com dificuldades para importar uma planilha do usuario para a minha base de dados.
Se alguém souber solucionar, preciso de um código que importe os dados da planilha, e verifica se aqueles dados já existem para não acumula-los.
Estou usando o seguinte código, mas no ato da importação, o mesmo apresenta o seguinte erro:


segue o código:
Código: [Selecionar]
// Address Directory's uploader of Application
$path = $this->Ini->path_doc;

// Absolute path of the file
{arquivo} = $path . '/' . {arquivo};

$separa = explode(".", {arquivo}); //Separamos o nome do arquivo para verificar seu tipo
$separa = array_reverse($separa); /*array_reverse, inverte o array, então se o usuário enviar um arquivo com mais de um ponto, ele pegará o ultimo ponto, depois desse ponto será o tipo do arquivo*/
$tipo = $separa[0]; //Pegamos o tipo do arquivo
/* Agora iremos verificar se o arquivo é válido, você pode alterar o tipo de arquivo que deseja receber conforme sua nescessidade */

if($tipo != "xls") {

   echo "<script>alert('Arquivo inválido!!')</script>";
   sc_redir(ctr_importa_diesel);

} else {


$arq = fopen({arquivo},'r');// le o arquivo txt
while($linha = fgetcsv($arq,2048,';')){ //se extrair uma linha e não for false
{nome} = $linha[0];
{endereco} = $linha[1];
{cep} = $linha[2];
{cidade} = $linha[3];


sc_lookup(ver,"SELECT nome, endereco, cep,cidade FROM planilhas WHERE nome = '{nome}' AND endereco = '{endereco}' AND cep = {cep} AND cidade = '{cidade}'");

if (empty({ver[0][0]}) && empty({ver[0][1]}) && empty({ver[0][2]})){
sc_exec_sql("INSERT INTO planilhas (nome,endereco,cep,cidade) VALUES ('{nome}','{endereco}',{cep},'{cidade}')");
  } else {
echo "<script>alert('Importação para essa Data e Empresa já foi Realizada!!')</script>";
  sc_redir(ctr_importa_diesel);
    }
}
   echo "<script>alert('Dados importados com sucesso!!')</script>";
   fclose($arq);
   unlink("{arquivo}");
   sc_redir(ctr_importa_diesel);
}


Ronyan Alves

  • Administrator
  • Avançado
  • *****
  • Mensagens: 353
--

Ronyan Alves
Equipe Scriptcase

gabrielemerich

  • Iniciante
  • **
  • Mensagens: 76
Re:Importar XLS
« Responder #6 Online: Maio 23, 2016, 01:17:31 pm »
Galera, seguindo este código que mandei, estou tentando implementar aqui para ele sempre verificar se há um novo registro na tabela e inserir o mesmo no final da tabela na base de dados.
Alguém tem noção de como ficaria o código?
Desde já, obrigado.