[RESOLVIDO]Manipulando arquivo xls

Salve rapaziada,

Estou usando a API JExcelApi. Quando vou executar o meu código, esta dando esse erro:

Error: jxl.read.biff.BiffException: Unable to recognize OLE stream

Alguém já usou essa API e passou por esse mesmo erro ?

Eis o código:

[code]package br.com.teste;

import java.io.File;
import java.io.IOException;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;

public class SorteioFinal {

public static void main(String[] args) throws IOException, BiffException {		
	String path = "/Gabriel/Projetos/sorteio/Rel_Nome.xls";
    File fp = new File(path);
	
    try {
        Workbook wb = Workbook.getWorkbook(fp); 
        Sheet sheet = wb.getSheet(0); 
        
        int columns = sheet.getColumns(); 
        int rows = sheet.getRows(); 
        String data; 
        
        for(int col = 0; col < columns; col++) { 
             for(int row = 0; row < rows; row++) { 
                  data = sheet.getCell(col, row).getContents();
                  System.out.println(data);
             } 
         } 
   } 
   catch(Exception ioe) { 
        System.out.println("Error: " + ioe); 
   }	

}

}
[/code]

Valew
[]'s

Não conheço esta biblioteca, mas pelo tipo de erro parece que é uma versão de arquivo excel que não é reconhecida pela biblioteca.

Att.

Ok. Para facilitar o trabalho eu exportei para txt o arquivo xls. Aí comecei a dar conta de resolver o que eu quero. É mais ou menos assim. Tenho um arquivo txt com vaaaaaaaaarios nomes em ordem, separados com (";") no final de cada nome. No while dou um split(";") para pegar cada nome desse arquivo e jogar num List, mas não estou conseguindo, o código só coloca o primeiro nome e não coloca o resto.

Eis o código:

[code]package br.com.teste;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class SorteioTXT {

public static void main(String []argv) {		
	try {
		BufferedReader reader = new BufferedReader(new FileReader(new File("/Gabriel/Projetos/sorteio/NOME.txt")));  
		String [] dados;  
		String linha = null;
		int cont = 0;			

		while(reader.ready()){
			linha = reader.readLine();  
			dados = linha.split(";");	
			List<String> lista = new ArrayList<String>();
			lista.add(dados[cont]);
							
			

		}	
		reader.close();			
	} catch (FileNotFoundException e) {
		e.printStackTrace();
	} catch (IOException e) {
		e.printStackTrace();
	} catch (NullPointerException e) {
		System.out.println("###### Fim do Arquivo ######");
	}
}

public static void Gravar(String texto){  
	String conteudo = texto;  
	try{  
		// o true significa q o arquivo será constante  			
		BufferedWriter bw = new BufferedWriter(new FileWriter("arquivoNomes.txt",true));
		
		bw.write(conteudo);
		bw.newLine();
		bw.flush();
		bw.close();
	}  
	// em caso de erro apresenta mensagem abaixo  
	catch(IOException e){  
		System.out.println("Erro");  
	}  
}

}

[/code]

o arquivo NOME.txt é mais ou menos assim:

ADELMAN DE BARROS VILLA JÚNIOR; ADEMAR PASSOS VEIGA; ADEMAR YOSHIAKI HUZIROKA; ADRIANA DE LIMA BANDEIRA; ADRIANA DE LUCA CARVALHO; ADRIANA DE SABOYA GOLDBERG; ADRIANA KEHDI; ADRIANA MINIATI CHAVES; ADRIANA NOGUEIRA TIGRE COUTINHO; ADRIANA QUEIROZ DE CARVALHO; ADRIANA ZANDONADE; ADRIANE DOS SANTOS; ADRIANO FALCÃO NERI; ADRIANO MARES TAROUCO; ADRIANO MARTINS PORTELINHA; ADRIENNE GIANNETTI NELSON DE SENNA JOBIM; ADSON AZEVEDO MATOS; AFFONSO NEVES BAPTISTA NETO; AFONSO AUGUSTO RIBEIRO COSTA;

OBS: Se eu conseguir carregar essa lista com os nomes vindo do arquivo ordenado, vou dar um Collections.suffle() para em baralhar esses nomes em ordem aleatória e grava de volta num arquivo txt.

Se alguém puder apontar esse meu erro, fico grato.

[]'s

Olá,
você está lendo errado o arquivo. A seguir é mostrado um exemplo de leitura:

[code]import java.io.*;

public class Estudos{
public static void main(String[] args){
try {
BufferedReader in = new BufferedReader(new FileReader(“conteudo.txt”));
String str;
while((str = in.readLine()) != null){
System.out.println(str);
}
in.close();
}
catch (IOException e){
// possiveis erros são tratatos aqui
}

System.exit(0);

}
} [/code]
Assim apague a linha 24 e troque a 23 por:

 while((linha = reader.readLine()) != null){

Mude o código da linha 26 para a linha 22, pois da forma que está toda vez vai iniciar um nova lista.

Att.

Amigo,vc abriu o arquvo xls fez pá vc queria dele porém não o fechou.
Lembre-se que para o jxl todo arquivo aberto deve ser fechado!
Portanto faca:

wb.close

sempre no final de seus métodos que utilizam a biblioteca.

Obrigado pessoal do guj pelo help. Finalizei o algoritimo que eu pretendi fazer.
É o seguinte: recebo um arquivo txt com varios nomes em ordem com separado com (";"). Faço a leitura de cada linha e armazeno numa lista. Com a lista carregada, embaralho a lista com o Collections.suffle() e mando gravar essa lista em outro arquivo txt.
Eis o código:

[code]package br.com.teste;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class SorteioTXT {

public static void main(String []argv) {		
	try {
		//Le o arquivo
		BufferedReader reader = new BufferedReader(new FileReader(new File("/Gabriel/Projetos/sorteio/NOME.txt")));			
		String [] dados;  
		String linha = null;
		int cont = 0;
		int i = 1;
		List<String> lista = new ArrayList<String>();			
		
		//Percorre a o arquivo
		while((linha = reader.readLine()) != null){
			//Armazena cada linha do arquivo no array.
			dados = linha.split(";");			
			lista.add(dados[cont]);
		}
		
		reader.close();
		
		//Embaralha a lista
		Collections.shuffle(lista);
		for(int x = 0; x < lista.size(); x++){
			//A cada 80 nomes, imprimir linha
			if (x % 80 == 0 && x != 0){
				gravar("==================================================================================================");	
			} 
			gravar(i++ + " - " + lista.get(x));
		}			
					
	} catch (FileNotFoundException e) {
		e.printStackTrace();
		System.out.println("Arquivo não encontrado!");
	} catch (IOException e) {
		e.printStackTrace();
	} catch (NullPointerException e) {
		System.out.println();
		System.out.println("Fim do Arquivo");
	}
}

public static void gravar(String texto){
	String conteudo = texto;  
	try{  
		// o true significa q o arquivo será constante  			
		BufferedWriter bw = new BufferedWriter(new FileWriter("arquivoNomes.txt",true));
		
		bw.write(conteudo);
		bw.newLine();
		bw.flush();
		bw.close();
	}  
	// em caso de erro apresenta mensagem abaixo  
	catch(IOException e){  
		System.out.println("Erro na gravação do arquivo");  
	}  
}

}

[/code]

[]'s