Processar o ficheiro Excel sem o poi Apache
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.
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.
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();
}
}
}
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
}
}
}