14
respostas

Importar excel para phpMyAdmin

Tenho uma planilha de excel e gostaria de saber como importar para o phpMyAdmin.

14 respostas

Oi Chadu, talvez este link te ajude http://www.webmaster.pt/importar-xls-mysql-via-php-phpmyadmin-10072.html

Abraços,

Estou um pouco confuso com os nomes dos arquivos (PHP) que devo criar...

index.php, ConectaBanco.class.php, tem outro???

Caros amigos!

Estou tentando a uma semana importar um arquivo excel para o phpMyAdmin, mas sem sucesso.

Utilizando o exemplo do Felipe apresento o seguinte erro:

( ! ) Parse error: syntax error, unexpected end of file in C:\wamp64\www\import\index.php on line 149

ou senha o erro está apontando para última linha que tem a syntax: <? } ?>

segue o código index.php:

<?php

include "ConectaBanco.class.php"; // conecta а base de dados

if($_POST['submit'] == 'Upload'){

$uploaded = $_FILES['arquivo'];

function trocar_acentos ($uploaded){
        $uploaded = str_replace(' ','_',$uploaded);
        $uploaded = str_replace('б','a',$uploaded);
        $uploaded = str_replace('Б','a',$uploaded);
        $uploaded = str_replace('а','a',$uploaded);
        $uploaded = str_replace('А','a',$uploaded);
        $uploaded = str_replace('й','e',$uploaded);
        $uploaded = str_replace('Й','e',$uploaded);
        $uploaded = str_replace('н','i',$uploaded);
        $uploaded = str_replace('Н','i',$uploaded);
        $uploaded = str_replace('у','o',$uploaded);
        $uploaded = str_replace('У','o',$uploaded);
        $uploaded = str_replace('ъ','u',$uploaded);
        $uploaded = str_replace('Ъ','u',$uploaded);
        $uploaded = str_replace('(','',$uploaded);
        $uploaded = str_replace(')','',$uploaded);
        $uploaded = str_replace('з','c',$uploaded);
        $uploaded = str_replace('З','c',$uploaded);
        $uploaded = strtolower($uploaded);
        return $uploaded;
}

        $uploaded = trocar_acentos ($_FILES['arquivo']['name']);
        $uploaded_extensao = substr($uploaded,strpos($uploaded,'.')+1,strlen($uploaded)-strpos($uploaded,'.'));
        $imagem_destaque_tamanho = $_FILES['uploaded']['size'];
        $imagem_destaque_descricao = $_POST['uploaded'];
        $imagem_destaque_data = date('d/m/Y');
        $uploaddir = "../xls_mysql/";

        $data = mktime();

        if ($uploaded != ""){
        if (file_exists($uploaddir.$uploaded)){ $uploaded = mktime()."_".$uploaded; }

        move_uploaded_file($HTTP_POST_FILES['arquivo']['tmp_name'], $uploaddir . $uploaded);
        }else{
        $uploaded = "";
        }


    require_once 'Excel/reader.php';
    $excel = new Spreadsheet_Excel_Reader();
    $excel->setOutputEncoding('CP1251');
    $excel->read($uploaded);
    $x=1;
    $sep = ",";
    ob_start();
    while($x<=$excel->sheets[0]['numRows']) {
     $y=1;
     $row="";
     while($y<=$excel->sheets[0]['numCols']) {
         $cell = isset($excel->sheets[0]['cells'][$x][$y]) ? $excel->sheets[0]['cells'][$x][$y] : '';
         $row.=($row=="")?"\"".$cell."\"":"".$sep."\"".$cell."\"";
         $y++;
     }
     echo $row."\n";
     $x++;
    }


$fp = fopen($uploaded.".csv",'w');
fwrite($fp,ob_get_contents());
fclose($fp);
ob_end_clean();

$conectar = new ConectaBanco();

$tabela = "tbl_carros";

$handle = file($arquivocsv);

for ($i=1;$i<count($handle);$i++){
$valori = explode(";", $handle[$i]);
$values = "";
foreach ($valori as $val){
$val=trim($val);
if (eregi("NULL",$val) == 0)
$values .= "'".addslashes($val)."',";

else

$values .= "NULL,";
} // fecha foreach ($valori as $val){

$values = trim(substr($values,0,-1));

$query = "INSERT INTO $tabela VALUES (null, ".trim($values).");";
$resultado = mysql_query($query);

} // fecha for ($i=1;$i<count($handle);$i++){

?>

<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript"> alert ("importaзгo efetuada com sucesso")</SCRIPT>
<SCRIPT language="JavaScript">window.location.href="index.php";</SCRIPT>

<?

}else{

?>

<html>
    <head>
         <title>WebMaster.PT :: Importando Conte&uacute;do do XLS ao MySQL Atrav&eacute;s do PHP</title>
         <style type="text/css">
        <!--
        .style2 {
            font-size: 24px;
            font-weight: bold;
        }
        .style3 {font-size: 12px}
        -->
         </style>
    </head>

    <body bgcolor="#ffffff" text="#000000" id=all>
        <form enctype="multipart/form-data" action="<? echo "$PHP_SELF"; ?>" method=POST>
             <div align="center">
             <p><span class="style2">WEBMASTER.PT </span><br>
               <span class="style3">IMPORTANDO CONTE&Uacute;DO DO XLS PARA O MYSQL ATRAV&Eacute;S DO PHP <br>
               <br>
               <br>
               <br>
               </span></p>
             <table border="0" cellpadding="5" cellspacing="5" width="100%" align="center">
                 <tr>
                 <td width="354" align="left" valign="top"><div align="right">ARQUIVO </div></td>
                 <td width="600" valign="top"><input name="arquivo" type="file">
                   <input type="submit" name="submit" value="Upload">   <br></td>
                 </tr>
                 <tr>
                 <td colspan="2" align="center">&nbsp;</td>
                 </tr>
             </table>
             </div>
        </form>
    </body>
</html>

<? } ?>

Oi Chadu, me parece que o problema está neste trecho:

for ($i=1;$i<count($handle);$i++){
$valori = explode(";", $handle[$i]);
$values = "";
foreach ($valori as $val){
$val=trim($val);
if (eregi("NULL",$val) == 0)
$values .= "'".addslashes($val)."',";

else

$values .= "NULL,";
}

Repare que você não está usando chaves no if/else, e está adicionando espaços em branco entre eles (indente o conteúdo que vai ajudar).

Experimente assim:

for ($i=1;$i<count($handle);$i++){
    $valori = explode(";", $handle[$i]);
    $values = "";
    foreach ($valori as $val){
            $val=trim($val);
            if (eregi("NULL",$val) == 0) {
                    $values .= "'".addslashes($val)."',";
            } else {
                    $values .= "NULL,";
            }
}

Após as edições sugeridas e execução do index no browser o erro continua...

( ! ) Parse error: syntax error, unexpected end of file in C:\wamp64\www\import\index.php on line 148

segue o trecho com edição:

for ($i=1;$i<count($handle);$i++){
    $valori = explode(";", $handle[$i]);
    $values = "";
    foreach ($valori as $val){
        $val=trim($val);
        if (eregi("NULL",$val) == 0) {
            $values .= "'".addslashes($val)."',";
        } else {
            $values .= "NULL,";
        }
}

Está faltando fechar as chaves do foreach. Repare que ha 4 abre chaves e só 3 fecha chaves.

Caros amigos obrigado pela paciência em ajudar um iniciante.

Apresentou um outro erro...

Verifique se faltava alguma fechamento de '}' mas não encontrei.

O browser apresente o seguinte erro ao executar o index...

Parse error: syntax error, unexpected '}' in C:\wamp64\www\import\index.php on line 99

Abaixo o código até a linha 99

<?php

include "ConectaBanco.class.php"; // conecta а base de dados

if($_POST['submit'] == 'Upload'){

$uploaded = $_FILES['arquivo'];

    function trocar_acentos ($uploaded){
            $uploaded = str_replace(' ','_',$uploaded);
            $uploaded = str_replace('б','a',$uploaded);
            $uploaded = str_replace('Б','a',$uploaded);
            $uploaded = str_replace('а','a',$uploaded);
            $uploaded = str_replace('А','a',$uploaded);
            $uploaded = str_replace('й','e',$uploaded);
            $uploaded = str_replace('Й','e',$uploaded);
            $uploaded = str_replace('н','i',$uploaded);
            $uploaded = str_replace('Н','i',$uploaded);
            $uploaded = str_replace('у','o',$uploaded);
            $uploaded = str_replace('У','o',$uploaded);
            $uploaded = str_replace('ъ','u',$uploaded);
            $uploaded = str_replace('Ъ','u',$uploaded);
            $uploaded = str_replace('(','',$uploaded);
            $uploaded = str_replace(')','',$uploaded);
            $uploaded = str_replace('з','c',$uploaded);
            $uploaded = str_replace('З','c',$uploaded);
            $uploaded = strtolower($uploaded);
            return $uploaded;
    }

            $uploaded = trocar_acentos ($_FILES['arquivo']['name']);
            $uploaded_extensao = substr($uploaded,strpos($uploaded,'.')+1,strlen($uploaded)-strpos($uploaded,'.'));
            $imagem_destaque_tamanho = $_FILES['uploaded']['size'];
            $imagem_destaque_descricao = $_POST['uploaded'];
            $imagem_destaque_data = date('d/m/Y');
            $uploaddir = "../xls_mysql/";

            $data = mktime();

            if ($uploaded != ""){
            if (file_exists($uploaddir.$uploaded)){ $uploaded = mktime()."_".$uploaded; }

            move_uploaded_file($HTTP_POST_FILES['arquivo']['tmp_name'], $uploaddir . $uploaded);
            }else{
            $uploaded = "";
            }


        require_once 'Excel/reader.php';
        $excel = new Spreadsheet_Excel_Reader();
        $excel->setOutputEncoding('CP1251');
        $excel->read($uploaded);
        $x=1;
        $sep = ",";
        ob_start();
        while($x<=$excel->sheets[0]['numRows']) {
         $y=1;
         $row="";
         while($y<=$excel->sheets[0]['numCols']) {
             $cell = isset($excel->sheets[0]['cells'][$x][$y]) ? $excel->sheets[0]['cells'][$x][$y] : '';
             $row.=($row=="")?"\"".$cell."\"":"".$sep."\"".$cell."\"";
             $y++;
         }
         echo $row."\n";
         $x++;
        }
}

$fp = fopen($uploaded.".csv",'w');
fwrite($fp,ob_get_contents());
fclose($fp);
ob_end_clean();

$conectar = new ConectaBanco();

$tabela = "tbl_carros";

$handle = file($arquivocsv);


    for ($i=1;$i<count($handle);$i++){
        $valori = explode(";", $handle[$i]);
        $values = "";
        foreach ($valori as $val){
            $val=trim($val);
            if (eregi("NULL",$val) == 0) {
                $values .= "'".addslashes($val)."',";
            } else {
                $values .= "NULL,";
            }
        }        
        } // fecha foreach ($valori as $val){

    $values = trim(substr($values,0,-1));

    $query = "INSERT INTO $tabela VALUES (null, ".trim($values).");";
    $resultado = mysql_query($query);

} // fecha for ($i=1;$i<count($handle);$i++){

Oi Chadu

Você consegue nos mandar o código completo? Se existir alguma informação restrita, edite o valor ou trecho tomando cuidado pra não alterar a estrutura do código (e por acidente ofuscar o problema).

Tudo indica que o uso das chaves está desbalanceado.

Caro Rodrigo,

Segue o código inteiro...

<?php

include "ConectaBanco.class.php"; // conecta а base de dados

if($_POST['submit'] == 'Upload'){

$uploaded = $_FILES['arquivo'];

    function trocar_acentos ($uploaded){
            $uploaded = str_replace(' ','_',$uploaded);
            $uploaded = str_replace('б','a',$uploaded);
            $uploaded = str_replace('Б','a',$uploaded);
            $uploaded = str_replace('а','a',$uploaded);
            $uploaded = str_replace('А','a',$uploaded);
            $uploaded = str_replace('й','e',$uploaded);
            $uploaded = str_replace('Й','e',$uploaded);
            $uploaded = str_replace('н','i',$uploaded);
            $uploaded = str_replace('Н','i',$uploaded);
            $uploaded = str_replace('у','o',$uploaded);
            $uploaded = str_replace('У','o',$uploaded);
            $uploaded = str_replace('ъ','u',$uploaded);
            $uploaded = str_replace('Ъ','u',$uploaded);
            $uploaded = str_replace('(','',$uploaded);
            $uploaded = str_replace(')','',$uploaded);
            $uploaded = str_replace('з','c',$uploaded);
            $uploaded = str_replace('З','c',$uploaded);
            $uploaded = strtolower($uploaded);
            return $uploaded;
    }

            $uploaded = trocar_acentos ($_FILES['arquivo']['name']);
            $uploaded_extensao = substr($uploaded,strpos($uploaded,'.')+1,strlen($uploaded)-strpos($uploaded,'.'));
            $imagem_destaque_tamanho = $_FILES['uploaded']['size'];
            $imagem_destaque_descricao = $_POST['uploaded'];
            $imagem_destaque_data = date('d/m/Y');
            $uploaddir = "../xls_mysql/";

            $data = mktime();

            if ($uploaded != ""){
            if (file_exists($uploaddir.$uploaded)){ $uploaded = mktime()."_".$uploaded; }

            move_uploaded_file($HTTP_POST_FILES['arquivo']['tmp_name'], $uploaddir . $uploaded);
            }else{
            $uploaded = "";
            }


        require_once 'Excel/reader.php';
        $excel = new Spreadsheet_Excel_Reader();
        $excel->setOutputEncoding('CP1251');
        $excel->read($uploaded);
        $x=1;
        $sep = ",";
        ob_start();
        while($x<=$excel->sheets[0]['numRows']) {
         $y=1;
         $row="";
         while($y<=$excel->sheets[0]['numCols']) {
             $cell = isset($excel->sheets[0]['cells'][$x][$y]) ? $excel->sheets[0]['cells'][$x][$y] : '';
             $row.=($row=="")?"\"".$cell."\"":"".$sep."\"".$cell."\"";
             $y++;
         }
         echo $row."\n";
         $x++;
        }
}

$fp = fopen($uploaded.".csv",'w');
fwrite($fp,ob_get_contents());
fclose($fp);
ob_end_clean();

$conectar = new ConectaBanco();

$tabela = "tbl_carros";

$handle = file($arquivocsv);


    for ($i=1;$i<count($handle);$i++){
        $valori = explode(";", $handle[$i]);
        $values = "";
        foreach ($valori as $val){
            $val=trim($val);
            if (eregi("NULL",$val) == 0) {
                $values .= "'".addslashes($val)."',";
            } else {
                $values .= "NULL,";
            }
        }        
        } // fecha foreach ($valori as $val){

    $values = trim(substr($values,0,-1));

    $query = "INSERT INTO $tabela VALUES (null, ".trim($values).");";
    $resultado = mysql_query($query);

} // fecha for ($i=1;$i<count($handle);$i++){

?>

<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript"> alert ("importaзгo efetuada com sucesso")</SCRIPT>
<SCRIPT language="JavaScript">window.location.href="index.php";</SCRIPT>

<?

}else{

?>

 <html>
 <head>
 <title>WebMaster.PT :: Importando Conte&uacute;do do XLS ao MySQL Atrav&eacute;s do PHP</title>
 <style type="text/css">
<!--
.style2 {
    font-size: 24px;
    font-weight: bold;
}
.style3 {font-size: 12px}
-->
 </style>
 </head>
 <body bgcolor="#ffffff" text="#000000" id=all>
 <form enctype="multipart/form-data" action="<? echo "$PHP_SELF"; ?>" method=POST>
 <div align="center">
 <p><span class="style2">WEBMASTER.PT </span><br>
   <span class="style3">IMPORTANDO CONTE&Uacute;DO DO XLS PARA O MYSQL ATRAV&Eacute;S DO PHP <br>
   <br>
   <br>
   <br>
   </span></p>
 <table border="0" cellpadding="5" cellspacing="5" width="100%" align="center">
 <tr>
 <td width="354" align="left" valign="top"><div align="right">ARQUIVO </div></td>
 <td width="600" valign="top"><input name="arquivo" type="file">
   <input type="submit" name="submit" value="Upload">   <br></td>
 </tr>
 <tr>
 <td colspan="2" align="center">&nbsp;</td>
 </tr>
 </table>
 </div>
 </form>
 </body>
 </html>

<? } ?>

Oi Chadu

repara nesse trecho dos fors:

for ($i=1;$i<count($handle);$i++){
        $valori = explode(";", $handle[$i]);
        $values = "";
        foreach ($valori as $val){
            $val=trim($val);
            if (eregi("NULL",$val) == 0) {
                $values .= "'".addslashes($val)."',";
            } else {
                $values .= "NULL,";
            }
        }        
        } // fecha foreach ($valori as $val){

    $values = trim(substr($values,0,-1));

    $query = "INSERT INTO $tabela VALUES (null, ".trim($values).");";
    $resultado = mysql_query($query);

} // fecha for ($i=1;$i<count($handle);$i++){

a segunda chave depois do else fecha o foreach, a terceira fecha o for de cima. No final do trecho, você está fechando o for novamente.

No trecho dos whiles você também fecha um a mais:

while($x<=$excel->sheets[0]['numRows']) {
         $y=1;
         $row="";
         while($y<=$excel->sheets[0]['numCols']) {
             $cell = isset($excel->sheets[0]['cells'][$x][$y]) ? $excel->sheets[0]['cells'][$x][$y] : '';
             $row.=($row=="")?"\"".$cell."\"":"".$sep."\"".$cell."\"";
             $y++;
         }
         echo $row."\n";
         $x++;
        }
}
`

a chave antes do echo fecha o while de dentro. A depois do echo fecha o while de fora. A outra sobra, e acaba fechando o if do começo do arquivo (que só deveria ser fechado no antes do else do final.

Uma sugestão é colocar o arquivo todo em um editor da sua preferencia e indentá-lo com calma. Ajuda bastante a identificar esses blocos com chave a mais ou a menos.

Srs. o que preciso é subir um arquivo em excel no phpMyAdmin, se houver outro código mas simples ou uma forma melhor de fazer por favor me oriente...

Mas continuando com o código que temos acredito que superamos o problema das chaves '{}'

Agora preciso do auxílio para resolver os seguintes erros...

1) Linha 5:

if($_POST['submit'] == 'Upload'){

Erro:

Notice: Undefined index: submit in C:\wamp64\www\import\index.php on line 5

2) Linha 48:

require_once 'Excel/reader.php';

Erro 1:

Warning: require_once(Excel/reader.php): failed to open stream: No such file or directory in C:\wamp64\www\import\index.php on line 48

Erro2:

Fatal error: require_once(): Failed opening required 'Excel/reader.php' (include_path='.;C:\php\pear') in C:\wamp64\www\import\index.php on line 48

Meus caros!

Por diversas formas tento subir um arquivo (xlsx ou csv), para o phpMyAdmin, utilizando as aulas dadas até aqui, mas sem sucesso.

Foi me passado o link: http://www.webmaster.pt/importar-xls-mysql-via-php-phpmyadmin-10072.html

também tentei executar outros dois códigos:

http://www.mauricioprogramador.com.br/posts/importando-dados-do-excel-para-mysql-com-php

e

http://www.devwilliam.com.br/banco-de-dados/como-importar-arquivos-xml-para-o-mysql

mas em todos os caso eu erro e não consigo terminar, acredito que por não compreender todos as funções para execução.

PRECISO MUITO DE AJUDA!!!!

Gostaria de ter um passo a passo de como realizar esta tarefa porquê estou nisto há bastante tempo! sem conseguir sair do lugar...

Oi Chadu

Por favor, abra um novo tópico, com o nome dizendo que é problema de importacao de XLS.

Ai coloca pra gente o codigo que está usando e a XLS que esta usando e tambem o erro que está dando.