Eu preciso salvar algumas informações de um arquivo TXT em uma planilha já formatada do excel e no caso os dados deverão ser salvos na próxima linha disponível, pois vou acumular informações nele.
Pois bem, não tenho ideia de como utilizar o POI ou o JExcelAPI para fazer isso. No caso, pelo JExcelAPI, entendi como abrir minha planilha, selecionar a guia que preciso (Sheet), mas como salvar estes dados lá que é o problema…
Pelo que entendi você tem um arquivo texto que vocẽ vai ler e criar um arquivo excel?
Realmente o POI da Apache ajuda e muito!
Tirei uns ótimos exemplos da página de ajuda rápida do HSSF e XSSF.
Nova planilha
Workbook wb = new HSSFWorkbook();
//Workbook wb = new XSSFWorkbook();
Sheet sheet1 = wb.createSheet("new sheet");
Sheet sheet2 = wb.createSheet("second sheet");
FileOutputStream fileOut = new FileOutputStream("workbook.xls");
wb.write(fileOut);
fileOut.close();
Criando células
Workbookwb=newHSSFWorkbook();//Workbookwb=newXSSFWorkbook();CreationHelpercreateHelper=wb.getCreationHelper();Sheetsheet=wb.createSheet("new sheet");//Createarowandputsomecellsinit.Rowsare0based.
Rowrow=sheet.createRow((short)0);//Createacellandputavalueinit.
Cellcell=row.createCell(0);cell.setCellValue(1);//Ordoitononeline.
row.createCell(1).setCellValue(1.2);row.createCell(2).setCellValue(createHelper.createRichTextString("This is a string"));row.createCell(3).setCellValue(true);//WritetheoutputtoafileFileOutputStreamfileOut=newFileOutputStream("workbook.xls");wb.write(fileOut);fileOut.close();
Criando células com datas
Workbookwb=newHSSFWorkbook();//Workbook wb = new XSSFWorkbook();CreationHelpercreateHelper=wb.getCreationHelper();Sheetsheet=wb.createSheet("new sheet");// Create a row and put some cells in it. Rows are 0 based.Rowrow=sheet.createRow(0);// Create a cell and put a date value in it. The first cell is not styled// as a date.Cellcell=row.createCell(0);cell.setCellValue(newDate());// we style the second cell as a date (and time). It is important to// create a new cell style from the workbook otherwise you can end up// modifying the built in style and effecting not only this cell but other cells.CellStylecellStyle=wb.createCellStyle();cellStyle.setDataFormat(createHelper.createDataFormat().getFormat("m/d/yy h:mm"));cell=row.createCell(1);cell.setCellValue(newDate());cell.setCellStyle(cellStyle);//you can also set date as java.util.Calendarcell=row.createCell(2);cell.setCellValue(Calendar.getInstance());cell.setCellStyle(cellStyle);// Write the output to a fileFileOutputStreamfileOut=newFileOutputStream("workbook.xls");wb.write(fileOut);fileOut.close();
Trabalhando com diferentes tipos de células
Workbookwb=newHSSFWorkbook();Sheetsheet=wb.createSheet("new sheet");Rowrow=sheet.createRow((short)2);row.createCell(0).setCellValue(1.1);row.createCell(1).setCellValue(newDate());row.createCell(2).setCellValue(Calendar.getInstance());row.createCell(3).setCellValue("a string");row.createCell(4).setCellValue(true);row.createCell(5).setCellType(HSSFCell.CELL_TYPE_ERROR);// Write the output to a fileFileOutputStreamfileOut=newFileOutputStream("workbook.xls");wb.write(fileOut);fileOut.close();
Trabalhando com bordas
Workbook wb = new HSSFWorkbook();
Sheet sheet = wb.createSheet("new sheet");
// Create a row and put some cells in it. Rows are 0 based.
Row row = sheet.createRow(1);
// Create a cell and put a value in it.
Cell cell = row.createCell(1);
cell.setCellValue(4);
// Style the cell with borders all around.
CellStyle style = wb.createCellStyle();
style.setBorderBottom(CellStyle.BORDER_THIN);
style.setBottomBorderColor(IndexedColors.BLACK.getIndex());
style.setBorderLeft(CellStyle.BORDER_THIN);
style.setLeftBorderColor(IndexedColors.GREEN.getIndex());
style.setBorderRight(CellStyle.BORDER_THIN);
style.setRightBorderColor(IndexedColors.BLUE.getIndex());
style.setBorderTop(CellStyle.BORDER_MEDIUM_DASHED);
style.setTopBorderColor(IndexedColors.BLACK.getIndex());
cell.setCellStyle(style);
// Write the output to a file
FileOutputStream fileOut = new FileOutputStream("workbook.xls");
wb.write(fileOut);
fileOut.close();
Valeu pelo toque, legal, vou ver seus exemplos e tentar fazer alguma coisa com POI. Mas no caso, eu já tenho uma planilha criada, só preciso inserir os dados do meu arquivo TXT nesta planilha, no caso na próxima linha disponível, pois nesta planilha já terá dados mais antigos e não desejo sobrescrevê-los e sim acumular mais informações.
Andre Rosa
Li sim, porém, como não existe um exemplo mostrando mais ou menos o funcionamento dos métodos, pra mim fica um pouco mais difícil para entender, não que eu queira um código pronto, mas pelo menos que direção tomar…, tipo, use tal método para ler seu arquivo e use tal método para que os dados sejam inseridos no excel…tipo assim…
Obrigado,
S
SandroSoftwares
veja esse tópico que criei…
já tem muita coisa que descobri…
B
brunosardao
Valeu Sandro, pode deixar que vou olhar sim…
B
brunosardao
Pessoal,
Eu baixei o POI e adicionei ele no Eclipse como referência de biblioteca.
Mas o que ocorre é que quando tento usar o Workbook wb = new HSSFWorbook(); não está funcionando.
De que maneira eu devo incluir o zip do POI no Eclipse? para que ele reconheça os métodos ?
Obrigado
N
nextuser
zip?
B
brunosardao
NextUser,
Sim, pelo menos, foi o download que eu baixei do site do Apache POI como ZIP. Eu acredito que tenha que ser um *.JAR, mas no site só encontrei um ZIP.
Você teria o download correto para passar ??
Valeu…
N
nextuser
vc está fa;ando serio queo não pegou o jar de dentro do zip?
ja teve momentos na minha vida que eu queria ser pedreiro, vc tem isso tb ou nem isso percebe?
S
SandroSoftwares
o que o nextuser tá dizendo é pra vc descompactar o arquivo zip…
B
brunosardao
Sandro,
Com certeza descompactei o arquivo, porém não tinha o JAR. eu encontrei diversas pastas, posso não ter olhado corretamente, mas se lá existe um JAR então vou procurar para poder usá-lo.