Créer des rapports Excel en programmant des templates

J'utilise "Apache POI" pour générer un rapport Excel. J'ai un model Excel bien conçu. Je souhaite créer un rapport en remplissant datatables dans des locations prédéfinis du model. C'est-à-dire, je ne veux pas me soucier des formats du rapport. Est-ce possible? Pourriez-vous me donner des instructions?

J'ai eu ma réponse. Je peux utiliser l'utilitaire "Cell Naming" dans Microsoft Excel, puis utiliser le code suivant pour localiser la cellule et faire quelque chose.

CellReference[] crefs = this.getCellsByName(wb, cName); // Locate the cell position Sheet sheet = wb.getSheet(crefs[0].getSheetName()); Row row = sheet.getRow(crefs[0].getRow()); Cell cell = row.getCell(crefs[0].getCol()); // Write in data cell.setCellValue(cellRegion.getContent()); 

"cName" est le nom de la cellule prédéfini dans Microsoft Excel.

Vous pouvez jeter un oeil à jXLS, je pense que c'est ce que vous searchz.

Il prend un model Excel en tant que model et vous pouvez écrire une application Java pour remplir datatables:

http://jxls.sourceforge.net/

Vous pouvez charger votre file model comme n'importe quel autre XLS. Ensuite, effectuez les modifications souhaitées pour les cellules spécifiques et écrivez-la dans un autre file.

Quelques exemples de code:

Fichier de chargement

 InputStream inputStream = new FileInputStream ("D:\\book_original.xls"); POIFSFileSystem fileSystem = new POIFSFileSystem (inputStream); HSSFWorkbook workBook = new HSSFWorkbook (fileSystem); 

faire des choses

 HSSFSheet sheet1 = workBook.getSheetAt (0); Iterator<Row> rows = sheet1.rowIterator (); while (rows.hasNext ()) { Row row = rows.next (); // do stuff if (row.getCell(0).getCellType() == HSSFCell.CELL_TYPE_NUMERIC) System.out.println ("Row No.: " + row.getRowNum ()+ " " + row.getCell(0).getNumericCellValue()); HSSFCell cell = row.createCell(0); cell.setCellValue("100"); } { HSSFSheet sheet1 = workBook.getSheetAt (0); Iterator<Row> rows = sheet1.rowIterator (); while (rows.hasNext ()) { Row row = rows.next (); // do stuff if (row.getCell(0).getCellType() == HSSFCell.CELL_TYPE_NUMERIC) System.out.println ("Row No.: " + row.getRowNum ()+ " " + row.getCell(0).getNumericCellValue()); HSSFCell cell = row.createCell(0); cell.setCellValue("100"); } 

Écrivez la sortie dans un file

  FileOutputStream fileOut1 = new FileOutputStream("D:\\book_modified.xls"); workBook.write(fileOut1); fileOut1.close(); 

Je me sert de la bibliothèque simreport dans ce lien http://jsimreport.com/ . Je vois qu'il est très facile et rapide de faire un rapport Excel.