Olá!
Estou tentando gravar alguns dados em arquivo XLS, mas estou encontrando um problema beeeemmm estranho.
Só pra vcs entenderem, vou mandar o meu código aqui:
package br.com.tdta.utils.exportacao.microsoft;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;
/**
*
* @author Eliangela
*/
public class XlsFile {
private FileInputStream arqModelo;
private FileOutputStream arqSaida;
private Workbook workbook;
public XlsFile(String arqSaida) throws InvalidFormatException, IOException {
this.arqModelo = new FileInputStream(getClass().getResource(
"/br/com/tdta/utils/exportacao/microsoft/models/arquivo.xls").getPath());
this.arqSaida = new FileOutputStream(arqSaida);
workbook = WorkbookFactory.create(arqModelo);
}
public void writeLine(String... dados) throws IOException {
Sheet sheet = workbook.getSheetAt(0);
Row row = sheet.createRow(sheet.getLastRowNum());
for (int col = 0; col < dados.length; col++) {
Cell cell = row.createCell(col);
cell.setCellValue(dados[col]);
}
workbook.write(arqSaida);
}
public void writeDados(String[][] dados) throws IOException {
Sheet sheet = workbook.getSheetAt(0);
for (int linha = 0; linha < dados.length; linha++) {
Row row = sheet.createRow(linha);
for (int coluna = 0; coluna < dados[linha].length; coluna++) {
Cell cell = row.createCell(coluna);
cell.setCellValue(dados[linha][coluna]);
}
}
workbook.write(arqSaida);
}
public void close() throws IOException {
arqModelo.close();
arqSaida.close();
}
public static void main(String[] args) throws InvalidFormatException, IOException {
String[][] ss = new String[30000][5];
String conteudo = "aaaaaa";
for (int linha = 0; linha < ss.length; linha++) {
for (int col = 0; col < ss[linha].length; col++) {
ss[linha][col] = conteudo;
}
}
XlsFile xls = new XlsFile("c:/teste.xls");
xls.writeLine("esta", "é", "a", "primeira", "linha");
xls.writeDados(ss);
xls.close();
}
}
Quando eu executo este código, não acontece nenhum erro.
Daí eu vou na pasta onde o arquivo está gravado, e o Windows mostra que o arquivo está lá.
No caso desse exemplo, meu arquivo aparece com 2,67 Mb. (Até aí tudo bem)
O problema está quando eu abro esse arquivo gerado: O excel mostra um arquivo praticamente vazio, com apenas o conteúdo que eu inseri em xls.writeLine("esta", "é", "a", "primeira", "linha" ) ;
O resto que eu inseri não aparece.
Daí, quando eu fecho o arquivo (sem salvar ou fazer qualquer modificação), o Windows mostra o tamanho do arquivo como sendo 6kb, ou seja, o arquivo diminuiu do nada!
Queria saber o que eu estou fazendo de errado aqui.
Obrigada