Избегать создавать файл jrxml (iReport) для каждого из докладов xml, чтобы производить их в pdf с JasperReports и java

Как он говорит вопрос, я хочу избежать создавать файл JRXML (факт с iReport) для каждого из моих докладов, которые уже сделаны в XML, или, по крайней мере, только создавать характерный один.

Если кто-то уже это сделал, я представляю себе то, что он переместил многие, что должны делать JRXML для каждого из Ваших докладов, но в этом случае у меня есть тысячи докладов, что мне нужно, чтобы они произвелись в pdf.

Тогда мой вопрос: возможно делать класс или только файл (характерный) JRXML, чтобы мочь экспортировать мои доклады в pdf?

Заметь: мои доклады меняются полностью, не похожи ни в чем, всегда очевидно у них есть query и поля, которые нужно показывать, но эти два меняются полностью в докладах.

Использованные технологии: iReport, JasperReports, Java, Затмение, Maven

1
задан 14.03.2019, 18:05
1 ответ

Если у твоих докладов нет mГЎs формата, что формат простой таблицы (линии и колонны) podrГ-схвати посылать ему один JRBeanCollectionDataSource в доклад. С этим, что harГ-эксперт - что в тебе cГіdigo crearГ-схвати один List с данными, которых ты хочешь показать. Конечно это всегда ограничивает тебя, чтобы иметь всегда то же количество колонн, которое нужно показывать, и имена колонн podrГ-схвати посылать их из-за parГЎmetros для того, чтобы они были изменчивыми.

MГЎs или меньше пример, чтобы это создавать serГ - в asГ-:

Класс genГ©rica, что contendrГЎ данные (одинокий пример)

public class RepoCompra implements Serializable{  
    private String idMercancia;
    private String descriMercancia;
    private String idArticulo;
    private String descriArticulo;
    private String descriUnidadMedida;
    private String descriMarca;
    private String nombreProveedor;
    private String numFactura;
    private String descriBodega;
    private Integer cantidad;
    private BigDecimal precio;
    private Date fecCompra;
    private Date fecRecepcion;

    public RepoCompra() {
    }

    public RepoCompra(String idMercancia, String descriMercancia,String idArticulo, String descriArticulo, String descriUm, String descriMarca, String nombreProveedor, String numFactura, String descriBodega, Integer cantidad, BigDecimal precio, Date fecCompra, Date fecRecepcion) {
        this.idMercancia=idMercancia;
        this.descriMercancia=descriMercancia;
        this.idArticulo=idArticulo;
        this.descriArticulo=descriArticulo;
        this.descriUnidadMedida = descriUm;
        this.descriMarca = descriMarca;
        this.nombreProveedor = nombreProveedor;
        this.numFactura = numFactura;
        this.descriBodega = descriBodega;
        this.cantidad = cantidad;
        this.precio = precio;
        this.fecCompra = fecCompra;
        this.fecRecepcion = fecRecepcion;
    }
}

Имена признаков, что ты разместил в этом классе deberГЎn совпадать с именами campos (Fields), которые ты размещаешь в файле JRXML.

DeberГЎs создавать один List из этого класса:

List<RepoCompra> lstCompra;

И deberГЎs инициализировать ее с данными, в которых ты нуждаешься.

Ты Создаешь Map с ними parГЎmetros, что он enviarГЎs:

Map<String, Object> parametros = new HashMap<>();
parametros.put("par1", par1);
...

Ты Создаешь JRBeanCollectionDataSource и JasperPrint:

JRBeanCollectionDataSource beanCollectionDataSource = new JRBeanCollectionDataSource(lstCompra);
JasperPrint jasperPrint = JasperFillManager.fillReport(rutaJasper, parametros, beanCollectionDataSource);

И ты это экспортируешь (в этом примере в PDF):

HttpServletResponse httpServletResponse = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse();
ServletOutputStream servletOutputStream = httpServletResponse.getOutputStream();
JasperExportManager.exportReportToPdfStream(jasperPrint, servletOutputStream);
FacesContext.getCurrentInstance().responseComplete();

Мой пример одной aplicaciГіn Веб. Я надеюсь, что он может подавать тебя я soluciГіn.

2
ответ дан 02.12.2019, 05:39
  • 1
    Привет, большое спасибо, я использовал методы Stream и HashMap, с этим я смог получать дату, и не используя jrxml, смог тратить данные о файле xml и потом utilicé Itext, так я смог производить доклад для любого matrix данных. Спасибо – Omar Lopez 03.05.2019, 06:36

Теги

Похожие вопросы