Lendo arquivo de excel e jogando para o banco

8 respostas
E

ola amigos estou com uma tabela no excel e preciso jogar esses dados no bando de dados, ja consegui atraves dos topicos do forum ler a tabela e colocar no banco o q acontece é que a tabela tem 16.743 linhas e so estou conseguindo ler a primeira, alguem tem algo pra ajudar?

Segue abaixo o codigo usado

package principal;

import java.io.File;

import java.io.IOException;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.SQLException;

import jxl.Cell;

import jxl.Sheet;

import jxl.Workbook;

import jxl.read.biff.BiffException;

/**
*

  • @author petter
    */
    public class teste2 {

    private static Connection conn;

    /** Creates a new instance of Main */
    public static void main(String[] args ) throws IOException, BiffException,
    ClassNotFoundException, SQLException {

    /* pega o arquiivo do Excel */
    Workbook workbook = Workbook.getWorkbook(new File("C:\\Users\\Gledison\\Downloads\\eleitores.xls"));
    
    /* pega a primeira planilha dentro do arquivo XLS */
    Sheet sheet = workbook.getSheet(0);
    
    /* pega os valores das célular como se numa matriz */
    Cell a1 = sheet.getCell(0,0);
    Cell b2 = sheet.getCell(1,1);
    Cell c2 = sheet.getCell(2,1);
    
    /* pega os conteúdos das células */
    String stringa1 = a1.getContents();
    String stringb2 = b2.getContents();
    String stringc2 = c2.getContents();
    

    /String sql = “INSERT INTO MinhaTabela(col1,col2,col3) “+
    “VALUES(’”+stringa1+”’,’”+stringb2+"’,"+stringc2+"’)";
    /

    /<em>Executa o insert para inserir os dados no banco de testes MySQL</em>/
    
    Class.forName(“org.postgresql.Driver”);
    
    Connection conn = DriverManager.getConnection(“jdbc:postgresql://localhost/sisvota”,“postgres”,“totalbr”);
    

    PreparedStatement ps = conn.prepareStatement(“INSERT INTO eleitor(codigo,nome,sessao) “+
    “VALUES(’”+stringa1+”’,’”+stringb2+"’,’"+stringc2+"’)");

    ps.executeUpdate();
    ps.close();

    }

}

8 Respostas

A

cara,

primeiro, quando for postar algum codigo coloque dentro da ta code,

nao conheco essa api, mas vc nao deveria fazer um for no seu codigo para vc ler todos registro do seu excel.

t+

E

desculpe cara sou novo e é meu segundo post, no caso eu tenhu os dados no excel e preciso jogar no banco de dados postgre, so q saun muitos dados.

A

mas vc tem que fazer um for, pq senão do jeito que ta, vc vai gravar somente o primeiro registro mesmo.

t+

E

voce poderia me dar um exemplo deste for?

A

esse tutorial vai ter ajudar, http://www.devmedia.com.br/post-7328-Lendo-e-escrevendo-arquivos-do-Excel-com-a-API-JXL-Parte-I.html

t+

M
/* pega os valores das célular como se numa matriz */ 
Cell a1 = sheet.getCell(0,0); 
Cell b2 = sheet.getCell(1,1); 
Cell c2 = sheet.getCell(2,1);

O For é um comando de repetição, que você informa para o compilador quantas vezes deseja executar determinadas condições.

No caso, o método getCell(coluna, linha) tem esta função.

No caso iria fazer um For da seguinte maneira:

for(int i = 0; i &lt;= 16743; i++) {

getCell(0, i) //Colocando a variavel i na posição da linha, você vai obter a informação da linha 1 até a linha 16743.

}

Estude o comando for mais afundo para entender como isso funciona.

ibotirama

Teste aí brother. :idea:

import java.io.File;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;

public class LeitorDePlanilha {
	private static Connection conn;

	public static void main(String[] args) throws IOException, BiffException,
			ClassNotFoundException, SQLException {

		/* pega o arquiivo do Excel */
		Workbook workbook = Workbook.getWorkbook(new File("C:\\Users\\Gledison\\Downloads\\eleitores.xls"));

		/* pega a primeira planilha dentro do arquivo XLS */
		Sheet sheet = workbook.getSheet(0);

		/* pega os valores das célular como se numa matriz */
		Cell a1 = null;
		Cell b1 = null;
		Cell c1 = null;

		/* pega os conteúdos das células */
		String stringa = null;
		String stringb = null;
		String stringc = null;

		Class.forName("org.postgresql.Driver");
		Connection conn = DriverManager.getConnection("jdbc:postgresql://localhost/sisvota", "postgres", "totalbr");

		PreparedStatement ps = null;

		for (int i = 0; i &lt;= 16742; i++){
			a1 = sheet.getCell(0, i);
			System.out.println("Lendo A"+i);
			b1 = sheet.getCell(1, i);
			System.out.println("Lendo B"+i);
			c1 = sheet.getCell(2, i);
			System.out.println("Lendo C"+i);
			
			stringa = a1.getContents();
			System.out.println("A"+i+":"+stringa);
			stringb = b1.getContents();
			System.out.println("B"+":"+stringb);
			stringc = c1.getContents();
			System.out.println("A"+i+":"+stringc);
			
			String sqlComando = "INSERT INTO eleitor(codigo,nome,sessao) VALUES(?,?,?)";
			
			ps = conn.prepareStatement(sqlComando);
			ps.setString(0, stringa);
			ps.setString(1, stringb);
			ps.setString(2, stringc);
			
			ps.executeUpdate();

			ps.close();

		}

	}

}
E

vlw amigo funcionou perfeitamente, muito obrigado voce é o cara!rs

Criado 25 de janeiro de 2012
Ultima resposta 26 de jan. de 2012
Respostas 8
Participantes 4