Como ler planilha em Excel sem ocorrer outofmemory?

9 respostas
J

Alguém sabe me dizer qual a melhor biblioteca ou classes para ler uma planilha do excel sem ocorrer outofmemory? estou utilizando atualmente o POI, mas no momento que abre a planilha, ocorre a mensagem de erro outofmemory. Preciso obter dados de uma planilha que tem 500.000 ligações de telefone e gravá-las em um banco de dados.

9 Respostas

xandevieira

vc pode procurar por jexcelapi
edit
segue um exemplo

Workbook workbook = Workbook.getWorkbook("caminho da planilha");
Sheet sheet = workbook.getSheet(0);
			int linhas = sheet.getRows();
			for(int i = 0; i < linhas; i++){
								
//celular
				Cell cell1 = sheet.getCell(0, i);
				Cell cell2 = sheet.getCell(1, i);
				Cell cell3 = sheet.getCell(2, i);
				Cell cell4 = sheet.getCell(3, i);
				Cell cell5 = sheet.getCell(4, i);
				Cell cell6 = sheet.getCell(5, i);
				//conteudo das celular
				String contents1 = cell1.getContents();
				String contents2 = cell2.getContents();
				String contents3 = cell3.getContents();
				String contents4 = cell4.getContents();
				String contents5 = cell5.getContents();
				String contents6 = cell6.getContents();
Metaleiro

[color=darkblue] Seria interessante se você pudesse postar o código

1ª coisa você tem que ver como você está lendo os dados, se no momento que você entra no Loop você não está criando nenhum objeto novamente aumentando o consumo de memória

2º Após fazer isso veja se não consegue paginar ou algo do tipo

Tem outra opção :[/color]

jexcelapi

jexcelapitutorial

J

ok… vou tentar com o JExcel… e volto a responder… obrigado…

J

Estou tentando desta vez com o JExcel… inclusive a lógica de abertura da planilha é praticamente idêntica. esta planilha é formato .xlsx. E agora está ocorrendo o erro “Unable to recognize OLE stream”. Tem alguma dica aí?

public void abrePlanilha(String pathFile) throws Exception 
	{
	
		Workbook workbook = Workbook.getWorkbook(new File(pathFile));
		
		Sheet sheet = workbook.getSheet(0);
		
		System.out.println(sheet.getCell(0,0));

		
	}
xandevieira

Reads data from Excel 95, 97, 2000, XP, and 2003 workbooks.

vc esta lendo uma planilha do 2007

Luis_Renato

Estou também tentando manipular planilhas do exel.
Usei um exemplo igual ao do jocamsg só que o meu NetBeans não reconhece a função getWorkbook.
Já adicionei o API no projeto e também já o importei para o aquivo.
Segue o código:

try {
                abrirPlanilha(caminhoArquivo);
            }catch (Exception e){
                //Mensagem de Erro!
            }
private void abrirPlanilha(String caminhoArquivo) throws Exception {
        Workbook workbook = Workbook.getWorkbook(caminhoArquivo);
        Sheet sheet = workbook.getSheet(0);
            
    }
Luis_Renato

Resolvi o problema trocando o paremetro.
Porém agora não consigo fazer com que minha variável File receba o File selecionado.

arquivo=janelaAbrir.getSelectedFile().getAbsoluteFile();

Algo de errado?

J

hô atari… também estou tendo este problema… ainda está sem solução

Luis_Renato

Você conseguiu fazer com que o arquivo receba o seu arquivo .xls?
No meu caso eu coloquei a variável File aquivo como global, ai deu certo.

Criado 15 de julho de 2009
Ultima resposta 26 de ago. de 2009
Respostas 9
Participantes 4