Processar o ficheiro Excel sem o poi Apache

Sei que podemos usar o Apache POI para analisar um ficheiro Excel e obter dados. Mas eu ouvi de uma coisa estranha que o arquivo excel pode ser passado de uma forma semelhante nós analisamos CSV (como apenas ler o arquivo a partir do fluxo de arquivo e separar cada valor da coluna com um separador "vírgula"). Quando analisamos o Excel temos que usar o tab como delimitador. É possível? Se sim, então por que o Apache surgiu com uma estrutura tão complicada. Estou intrigado. Alguém me pode ajudar?

Author: Michael Berry, 2012-04-20

4 answers

CSV é um formato de texto, por isso pode ser processado usando os delimitadores. O antigo Excel é um formato binário e proprietário, por isso precisa de descodificação inteligente. O novo formato Excel é zipado XMLs, mas também se deve entender a estrutura deste documento antes que ele possa ser transformado em algo tão simples como ler células um por um. Então a resposta à sua pergunta é não, você vai precisar usar o Apache POI, e também - não há nada de errado com isso.

Como uma nota lateral, no caminho para se tornar um bom desenvolvedor você precisará aprender a fazer um pouco de sua própria pesquisa antes de procurar ajuda. Sujar as mãos é a melhor maneira de aprender as coisas.

 4
Author: maksimov, 2012-04-20 15:19:27
Deves ter confundido o que ouviste, ou a pessoa que te disse estava confusa.

Algumas partes dos ficheiros Excel podem ser armazenadas (um pouco) como ficheiros CSV, uma vez que a estrutura tabular de dados se encaixa bem num formato de ficheiro CSV. No entanto, se você gravar no formato CSV, então você apenas obter texto simples em cada célula - você perde toda a informação de formatação, quaisquer grafos, múltiplas planilhas e assim por diante.

O formato xls excel nativo é o que o Apache POI trabalha, e assim pode lidar tudo no excel, não apenas texto simples restritivo em certas células. Arquivos CSV têm seus usos, mas eles definitivamente não são um substituto direto para arquivos Excel normais.

 2
Author: Michael Berry, 2012-04-20 15:14:29

Tentei ler/escrever o ficheiro excel sem usar nenhum frasco externo como o POI ou qualquer outro. Eu sou capaz de escrever arquivo como formato xls. Aqui está o meu código.

FileWriter fwriter = new FileWriter(file,true);
writer = new BufferedWriter(fwriter);
writer.newLine();
writer.write("a"    + "\t");
writer.write("b"    + "\t");
writer.write("c"    + "\t");
writer.write("d"    + "\t");
writer.write("e"    + "\t");
writer.write("f"    + "\t");

A Ler O Ficheiro aqui está o meu código para ler

if(file != null) {
            BufferedReader reader = null;
            try {
                reader = new BufferedReader(new FileReader(file));
                String line;
                while((line = reader.readLine()) != null) {
                    String[] component = line.split("\\t");
                }
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                if(reader != null) {
                    try {
                        reader.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
 0
Author: Shahrukh A., 2014-05-03 21:32:18
InputStream is = new FileInputStream(new File(filepath));
        StreamingReader reader=null;
        try {
            reader = StreamingReader.builder()
                    .rowCacheSize(100)     
                    .bufferSize(4096)     
                    .sheetIndex(0)        
                    .read(is);
        } catch (Exception e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }finally{
            is.close();
        }
        //pass here to reader and itrate it 
          for (Row row : reader) {
            if (row.getRowNum()!=0){
                for (Cell cell : row) {
              // write ur logic to store ur value 
                }

            }
        }
 0
Author: Baisakha Chauhan, 2018-03-08 13:19:01