Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Andre Summers

Importar Excel para MYSQL

Recommended Posts

Como faz para importar arquivos Excel para dentro de tabelas MYSQL já criadas?

 

:unsure:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tentei fazer assim. Pego o Excel e gero um CSV. O script abaixo deveria fazer o upload do CSV pro servidor, abrí-lo, pegar os valores e INSERIR numa tabela MYSQL.

 

Entretanto o script está apenas fazendo o UPLOAD.

 

O que estou fazendo de errado?

 

ini_set("memory_limit", "2048M"); // Setando memória limite
set_time_limit(0); // Setando tempo limite

#### Upando o CSV para o servidor ############################################

$arquivo = $_FILES['arquivo'];

// Testamos se o campo está vazio
switch (empty($_FILES['arquivo']['name'])) {
	case FALSE: // Se for FALSO, ou seja, tem um arquivo selecionado
			// Tratamos o arquivo antes do upload
			$config["tamanho"] = 2097200; // Define o tamanho máximo do arquivo (em bytes). 2097200 equivale a 2 MB
			$extvalidas = array("csv","cbr"); // Define as extensões válidas 
			preg_match("/.(csv|cbr){1}$/i", $arquivo["name"], $ext); // Pega extensão do arquivo
			
			if($arquivo){ 
				// Verifica o peso 
				if($arquivo["size"] > $config["tamanho"]){
					print "<script>alert('Arquivo muito pesado! O peso deve ser de no máximo 2 MB. Tente enviar outro arquivo.')</script>";
					print "<script>window.location.replace('pagina.php')</script>";
					exit();
				}
				
				// Verifica o mime-type 
				if(!in_array($ext[1],$extvalidas)){
					print "<script>alert('Arquivo inválido! Serão aceitos apenas arquivos com extensão CSV.')</script>";
					print "<script>window.location.replace('pagina.php')</script>";
					exit();
				}
								
				$imagem_nome = trim($arquivo["name"]); // Gera um nome para o arquivo
				$imagem_dir = "csv_eleitores/" . $imagem_nome; // Caminho onde o arquivo será guardado
				move_uploaded_file($arquivo["tmp_name"] , $imagem_dir); // Efetua o upload
			
			} //Fecha if($arquivo)


			#### Conversão CSV para MYSQL ##############################################
			// Estabelece Conexão a Base de Dados
			mysql_connect("host do BD", "user", "pass");
			// Seleciono a Tabela
			mysql_select_db("tabela");
			// Usando $abraArq para abrir arquivos com r ou seja como leitura
			$abraArq = fopen($imagem_dir, "r"); // Só aceita CSV e tem que estar organizado direito
			// Verifica se existe o arquivo
			if (!$abraArq){
				echo "<p>Arquivo não encontrado</p>";
			}else{ // Caso contrário, prossegue
			
				// Gera uma variável chamada $valores que vai conter os valores das colunas para serem inseridas.
				while ($valores = fgetcsv($abraArq, 2048, ";")) {
				// Insere na base de dados
				$sql = "INSERT INTO TabelaUm (nome, email, cpf, unidade, departamento) VALUES ('".$valores[0]."', '".$valores[1]."', '".$valores[2]."', '".$valores[3]."', '".$valores[4]."', '".$valores[5]."')";
				$consulta = mysql_query($sql);
				}
			
			}
			// Fecho o arquivo
			fclose($abraArq);
			
			// Sinalizo o final do processo
			print "<script>alert('Informações enviadas com sucesso!')</script>";
			print "<script>window.location.replace('pagina.php')</script>";
	break;
	case TRUE: // Se for VERDADEIRO, ou seja, NÃO tem um arquivo selecionado
			print "<script>alert('Não há um arquivo selecionado!')</script>";
			print "<script>window.location.replace('pagina.php')</script>";
		break;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não tá aparencendo erro nenhum. Ele dá como concluído, o arquivo tá no servidor, mas colunas não são inseridas no MYSQL.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu acho que eu não fui bem claro... eu quero enviar o CSV para o servidor, abrir ele e copiar apenas seu conteudo para o MYSQL.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acrescentei isso

 

// Define a permissão para utilizar a função 
ini_set("allow_url_fopen", 1); //função habilitada 
ini_set("allow_url_include", 1); //função habilitada

Mas tb não funcionou. Nada de importar os valores pro BD.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.