Ajuda com IO

6 respostas
V

oi pessoal, criei um metodo fatiador, um metodo leitor() e um metodo salvar
o metodo ler() é chamado dentro de salvar()
e o metodo part() fatia a String content que tambem está em salvar()

o que ocorre é que se cria o arquivo xls porém o arquivo txt chamado("paulo;pinto;ferreira")
nao é fatiado em celulas diferentes, pior: da null!!

peço ajuda

grande abraço

1. import java.awt.Font;  
   2. import java.io.BufferedReader;  
   3. import java.io.BufferedWriter;  
   4. import java.io.File;  
   5. import java.io.FileReader;  
   6. import java.io.FileWriter;  
   7. import java.io.IOException;  
   8. import javax.swing.JFileChooser;  
   9.   
  10.   
  11. public class C1{  
  12.       
  13.     File f;  
  14.     String ler;  
  15.       
  16.       
  17.     //METODO FATIADOR  
  18.     public String part(String a){  
  19.         String[]b = a.split(";");  
  20.             for(int x =0;x <=4; x++){  
  21.                 System.out.println(b[x].toString());  
  22.             }  
  23.             return a;     
  24.     }  
  25.       
  26.       
  27.       
  28.     //LE ARQUIVO TXT  
  29.     public String ler(){  
  30.         JFileChooser choo = new JFileChooser();  
  31.         int res = choo.showOpenDialog(choo);  
  32.             if(res == JFileChooser.APPROVE_OPTION){  
  33.                f = choo.getSelectedFile();  
  34.             }  
  35.             try{   
  36.                 BufferedReader l = new BufferedReader(new FileReader(f));  
  37.                     while(l.readLine() != null){  
  38.                         ler = l.readLine();  
  39.                         System.out.println(ler);  
  40.                     }  
  41.             }  
  42.             catch(Exception e){  
  43.                 e.printStackTrace();  
  44.             }  
  45.             return ler;  
  46.     }  
  47.       
  48.       
  49.       
  50.       
  51.        
  52.      //SALVA EM ARQUIVO XLS  
  53.      public void salvar(){  
  54.          String l = ler();  
  55.            
  56.          JFileChooser choo = new JFileChooser();  
  57.   
  58.          int res = choo.showSaveDialog(choo);  
  59.          if(res == JFileChooser.APPROVE_OPTION){  
  60.              f = choo.getSelectedFile();  
  61.                
  62.              String novo = f.getAbsolutePath().concat(".xls");  
  63.              String content = part(l); // USANDO METODO FATIADOR  
  64.              File fileN  = new File(novo);  
  65.                  try{  
  66.                  FileWriter ff = new FileWriter(fileN);  
  67.                  ff.append(content);  
  68.                  ff.close();  
  69.                  }  
  70.                  catch(IOException e){}   
  71.          }  
  72.            
  73.            
  74.      }  
  75.   
  76.     public static void main(String[] args){    
  77.             C1 C = new C1();  
  78.             C.salvar();  
  79.     }  
  80. }

6 Respostas

Flavio_Luiz

kra explica melhor, não consegui entender…

V

tenho um arquivo txt qualquer
quero pegar seu conteudo
e salvar num arquivo xls

ele cria o arquivo xls mas nao pega o conteudo do txt

abraço

J

No método ler, no while você está usando o l.readLine() como condicional para ele entrar no loop, esse método retorna uma string e pula para a próxima linha se eu não estiver enganado.
Logo se tiver apenas uma linha escrita no arquivo txt ele vai ler ela e vai entrar no loop, mas dentro do loop, na hora de ler novamente e mandar para a string ele retorna null, porque não há uma segunda linha.

tente trocar no condicional do while o l.readLine() por l.ready().

while(l.ready()){ .... }
só preste atenção, dessa maneira que está lendo, se você colocar mais de uma linha no arquivo a ser lido, somente a ultima linha do arquivo vai ficar na variavel!

e outra coisa, no metodo fatiar você está retornando a mesma string que manda para ele, imagino que deveria retornar um array com as palavras, no seu caso o b[].

ViniGodoy

Seu código tem diversos problemas:

  1. Só dar o nome de “xls” para um arquivo e gravar qualquer coisa lá dentro, de qualquer jeito, não torna ele um arquivo excel válido.
  2. Use um scanner para fazer a leitura do arquivo;
  3. Use um printWriter para escrever texto em outro arquivo. Se for escrever dados binários, use um FileInputStream.
  4. No fatiador, não é necessário chamar toString(), já que seus tipos de dados já são strings.
  5. Cuidado com nomes de variáveis como l. Isso parece o 1 e pode gerar um código confuso.
V

fernando e vini, obrigado pela ajuda
o conteudo do file txt ja é inserido no file xls
mas tudo na mesma celula
como coloco cada pedaço(usando o separador “;”) em uma celula?
abraço

ViniGodoy

Por que não abrir o arquivo txt no excel diretamente? O excel suporta o formato csv, e o txt provavelmente poderá ser aberto sem conversão nenhuma.

Para manipular arquivos excel, use alguma API como a JExcelApi.
http://jexcelapi.sourceforge.net/

Criado 16 de junho de 2010
Ultima resposta 16 de jun. de 2010
Respostas 6
Participantes 4