Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / ireport json java / 10 сообщений из 10, страница 1 из 1
23.12.2015, 09:38
    #39135407
gema
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ireport json java
Задача построить отчет из данных в формате JSON средствами jasper ireport. Проблема в том,что мой отчет работает в Eclipse с Json из файла, а средствами java получаю отчет без данных.Я так понимаю проблема в этом куске <![CDATA[$P{REPORT_DATA_SOURCE}]]>, но что нужно использовать для вывода данных?
report.jrxml
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
<?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Jaspersoft Studio version 6.1.1.final using JasperReports Library version 6.1.1  -->
<!-- 2015-12-23T12:06:41 -->
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="report name" pageWidth="595" pageHeight="842" columnWidth="535" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="79238ab2-f1f6-4c4e-934d-83d56b0a9736">
    <property name="ireport.zoom" value="1.0"/>
    <property name="ireport.x" value="0"/>
    <property name="ireport.y" value="0"/>
    <property name="com.jaspersoft.studio.data.defaultdataadapter" value="Json file"/>
    <style name="table">
        <box>
            <pen lineWidth="1.0" lineColor="#000000"/>
        </box>
    </style>
    <style name="table_TH" mode="Opaque" backcolor="#F5F5DC">
        <box>
            <pen lineWidth="0.5" lineColor="#000000"/>
        </box>
    </style>
    <style name="table_CH" mode="Opaque" backcolor="#FFFFBF">
        <box>
            <pen lineWidth="0.5" lineColor="#000000"/>
        </box>
    </style>
    <style name="table_TD" mode="Opaque" backcolor="#FFFFFF">
        <box>
            <pen lineWidth="0.5" lineColor="#000000"/>
        </box>
        <conditionalStyle>
            <conditionExpression><![CDATA[new Boolean($V{REPORT_COUNT}.intValue()%2==0)]]></conditionExpression>
            <style backcolor="#FFFFEF"/>
        </conditionalStyle>
    </style>
    <subDataset name="Table Dataset 1" uuid="2bcb141e-d376-4fb4-b084-a527c2bce849">
        <field name="otves_num" class="java.lang.String"/>
        <field name="otves_date" class="java.lang.String"/>
    </subDataset>
    <queryString language="json">
        <![CDATA[rows]]>
    </queryString>
    <background>
        <band splitType="Stretch"/>
    </background>
    <title>
        <band height="79" splitType="Stretch"/>
    </title>
    <detail>
        <band height="70" splitType="Stretch">
            <componentElement>
                <reportElement key="table" style="table" x="-10" y="20" width="555" height="50" uuid="7897afdc-0ea4-4f23-92dd-b742b47229bf"/>
                <jr:table xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd" whenNoDataType="AllSectionsNoDetail">
                    <datasetRun subDataset="Table Dataset 1" uuid="eb9a23dc-8e49-42ac-b296-c69962525bd3">
                        <dataSourceExpression><![CDATA[$P{REPORT_DATA_SOURCE}]]></dataSourceExpression>
                    </datasetRun>
                    <jr:column width="90" uuid="826306d5-a0d5-44ea-886f-48edb3af159d">
                        <property name="com.jaspersoft.studio.components.table.model.column.name" value="Column1"/>
                        <jr:tableHeader style="table_TH" height="30">
                            <staticText>
                                <reportElement x="0" y="0" width="90" height="30" uuid="ec1a8b2a-35c8-4759-b6b2-a2591553f9fa"/>
                                <textElement>
                                    <font fontName="DejaVu Sans Mono" isBold="true"/>
                                </textElement>
                                <text><![CDATA[Отвес]]></text>
                            </staticText>
                        </jr:tableHeader>
                        <jr:detailCell style="table_TD" height="20">
                            <textField>
                                <reportElement x="0" y="0" width="90" height="20" uuid="cf0f2875-ddd5-4ea4-af0e-aa4bd56076c6"/>
                                <textElement>
                                    <font fontName="DejaVu Sans Mono"/>
                                </textElement>
                                <textFieldExpression><![CDATA[$F{otves_num}]]></textFieldExpression>
                            </textField>
                        </jr:detailCell>
                    </jr:column>
                    <jr:column width="90" uuid="5eeffefc-7508-4128-9a3e-60d811d86787">
                        <property name="com.jaspersoft.studio.components.table.model.column.name" value="Column2"/>
                        <jr:tableHeader style="table_TH" height="30">
                            <staticText>
                                <reportElement x="0" y="0" width="90" height="30" uuid="33a16386-45e7-4675-8829-770ecde346fd"/>
                                <textElement>
                                    <font fontName="DejaVu Sans Mono" isBold="true"/>
                                </textElement>
                                <text><![CDATA[Дата]]></text>
                            </staticText>
                        </jr:tableHeader>
                        <jr:detailCell style="table_TD" height="20">
                            <textField>
                                <reportElement x="0" y="0" width="90" height="20" uuid="54383b5f-2c28-4212-a0b4-894b268a899e"/>
                                <textElement>
                                    <font fontName="DejaVu Sans Mono"/>
                                </textElement>
                                <textFieldExpression><![CDATA[$F{otves_date}]]></textFieldExpression>
                            </textField>
                        </jr:detailCell>
                    </jr:column>
                </jr:table>
            </componentElement>
        </band>
    </detail>
    <pageFooter>
        <band height="54" splitType="Stretch"/>
    </pageFooter>
    <summary>
        <band height="42" splitType="Stretch"/>
    </summary>
</jasperReport>



file.json
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
{
"rows" : 

[
	{
		
		"otves_num": "43 2006",		
		"otves_date": "18.02.2006"
	},

	{
		
		"otves_num": "237 2006",
		"otves_date": "05.09.2006"
	}
]
}



JasperReportGenerator.java
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
package com.himprom;

import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.util.HashMap;

import net.sf.jasperreports.engine.JRParameter;
import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.data.JsonDataSource;
import net.sf.jasperreports.engine.design.JasperDesign;
import net.sf.jasperreports.engine.xml.JRXmlLoader;

public class JasperReportGenerator {

	public JasperReportGenerator() {
	}

	
	public static void runReport()
			throws net.sf.jasperreports.engine.JRException, FileNotFoundException, UnsupportedEncodingException {
		

		String reportFileName = "report";
		File reportFile = new File("/home/jane/jasper/" + reportFileName + ".jrxml");
		
		JasperDesign jasperDesign = JRXmlLoader.load(reportFile);
		System.out.println("Done with load!");
		JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);
		System.out.println("Done with compileReport!");
		JRParameter[] jrParameters = jasperReport.getParameters();
		for (JRParameter param : jrParameters) {
			System.out.println("Parameter : " + param.getName());
			System.out.println("    Class Name: " + param.getValueClassName());
			System.out.println("    isSystemDefined: " + param.isSystemDefined());
		}	
         String flatJSON = "{\n" + 
         		"\"rows\" : \n" + 
         		"\n" + 
         		"[\n" + 
         		"	{\n" + 
         		"		\n" + 
         		"		\"otves_num\": \"43 2006\",		\n" + 
         		"		\"otves_date\": \"18.02.2006\"\n" + 
         		"	},\n" + 
         		"\n" + 
         		"	{\n" + 
         		"		\n" + 
         		"		\"otves_num\": \"237 2006\",\n" + 
         		"		\"otves_date\": \"05.09.2006\"\n" + 
         		"	}\n" + 
         		"]\n" + 
         		"}";
        InputStream iStream = new ByteArrayInputStream(flatJSON.getBytes());
         JsonDataSource  jsonDataSource = new JsonDataSource(iStream);
         JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, new HashMap(), jsonDataSource);
         String dest = "/home/jane/test.pdf";
         JasperExportManager.exportReportToPdfFile(jasperPrint,dest);			
	}

	public static void main(String[] args)
			throws net.sf.jasperreports.engine.JRException, FileNotFoundException, UnsupportedEncodingException {		
		runReport();		
	}
}
...
Рейтинг: 0 / 0
23.12.2015, 11:29
    #39135580
sanBez
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ireport json java
gema,

Мин в коде вроде не видно. Таблица в detail, я обычно кидаю в summary, но это я может устарел.
Почему надо сразу ваять таблицы, а не отладиться с полями основного отчета (не subDataset). В таблицах граблей там поназаложено...
Проблема то в чем? Результат работы отчета какой?
...
Рейтинг: 0 / 0
23.12.2015, 11:53
    #39135644
gema
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ireport json java
sanBez,таблица пустая при формировании в java
...
Рейтинг: 0 / 0
23.12.2015, 12:06
    #39135685
sanBez
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ireport json java
gema,

Какие результаты если

a) убить таблицу с сабдатасетом, определить поля в отчете и кинуть их просто в detail без таблицы
б) перенести таблицу в summary
...
Рейтинг: 0 / 0
23.12.2015, 12:40
    #39135789
gema
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ireport json java
Нашла я один секретик JsonDataSource jsonDataSource = new JsonDataSource(iStream,"rows"); , важен 2-й параметр, учитываю мою структуру json.
...
Рейтинг: 0 / 0
23.12.2015, 12:58
    #39135841
gema
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ireport json java
почему-то при выводе таблицы не выходит первый элемент из массива json....
...
Рейтинг: 0 / 0
23.12.2015, 13:15
    #39135892
sanBez
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ireport json java
gema,

Вообще-то странно. Второй параметр там это select expression, который у тебя в queryString уже есть.

код jasper
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
	public JsonDataSource(InputStream stream) throws JRException {
		this(stream, null);
	}
	
	public JsonDataSource(InputStream jsonStream, String selectExpression) throws JRException {
		try {
			this.jsonStream = jsonStream;
			this.mapper = new ObjectMapper();
			
			mapper.configure(JsonParser.Feature.ALLOW_UNQUOTED_FIELD_NAMES, true);
			mapper.configure(JsonParser.Feature.ALLOW_SINGLE_QUOTES, true);
			mapper.configure(JsonParser.Feature.ALLOW_COMMENTS, true);
			
			this.jsonTree = mapper.readTree(jsonStream);
			this.selectExpression = selectExpression;
			
			moveFirst();
		} catch (JsonProcessingException e) {
			throw new JRException(e);
		} catch (IOException e) {
			throw new JRException(e);
		}
	}



По поводу отсутствия первой записи - стандартные грабли таблицы (я предупреждал). Попробуй передать JsonDataSource через хэшмап параметров отчета (второй параметр fillReport) и использовать в датасет таблицы для DataSource этот параметр, а не $P{REPORT_DATA_SOURCE}
...
Рейтинг: 0 / 0
24.12.2015, 04:57
    #39136669
gema
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ireport json java
Да, мне тоже показалось странным зачем повторно указывать selectExpression,но это решило проблему.

Передала JsonDataSource в качестве HashMap параметра и стали все данные из массива выходить. sanBez , спасибо.

А отсутствие первой строки в таблицах- это есть такая проблема . Почитала на форумах, самое простое решение пустой первый элемент добавить.
...
Рейтинг: 0 / 0
24.12.2015, 05:02
    #39136670
gema
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ireport json java
Проблемы решены, СПАСИБО.
...
Рейтинг: 0 / 0
25.12.2015, 14:35
    #39138201
sanBez
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ireport json java
gemaА отсутствие первой строки в таблицах- это есть такая проблема http://mergetag.com/jasperreport-fisrt-row-in-table-component-is-missing . Почитала на форумах, самое простое решение пустой первый элемент добавить.
Угу. Понадобилось поменять сортировку в отчете на descending. Хотя тут может и прокатит. Или допустим в отсортированной входной коллекции компаратор поменялся...
И опля в отчете появилась пустая строка а реальная запись исчезла.
Заколебешься вспоминать и искать ошибку если проект давнишний.
Нафиг нафиг. Пусть студенты так лабы сдают.
ИМХО
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / ireport json java / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]