Создание отчетов Excel путем программирования из шаблонов - PullRequest
4 голосов
/ 08 сентября 2010

Я использую «Apache POI» для генерации отчета Excel.У меня хорошо продуманный шаблон Excel.Я хочу создать отчет, заполнив данные в предопределенных местах шаблона.То есть я не хочу заботиться о форматах отчета.Это возможно?Не могли бы вы дать мне несколько инструкций?

Ответы [ 5 ]

5 голосов
/ 27 октября 2010

Я получил свой ответ.Я могу использовать утилиту «Именование ячейки» в Microsoft Excel, а затем использовать следующий код, чтобы найти ячейку и что-то сделать.

    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» - это имя ячейки, предварительно определенное в Microsoft Excel.

3 голосов
/ 03 февраля 2012

Вы можете взглянуть на jXLS, я думаю, это то, что вы ищете.

В качестве шаблона используется Excel, и вы можете написать приложение Java для заполнения данных:

http://jxls.sourceforge.net/

0 голосов
/ 13 февраля 2019

Вы также можете взглянуть на Ксилофон .Это библиотека Java, построенная на основе Apache POI.Он использует шаблоны электронных таблиц в формате XLS (X) и использует данные в формате XML.

0 голосов
/ 19 августа 2013

Я привык использовать библиотеку simreport по этой ссылке http://jsimreport.com/. Я вижу, что сделать отчет в Excel очень легко и быстро.

0 голосов
/ 08 сентября 2010

Вы можете загрузить свой файл шаблона, как и любой другой XLS. Затем внесите необходимые изменения в конкретные ячейки и запишите их в другой файл.

Пример кода:

Загрузить файл

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

            HSSFWorkbook      workBook = new HSSFWorkbook (fileSystem);

делать вещи

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"); 

}

Записать вывод в файл

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