我有3个实体orderclient和orderlineclient:关系一对多 和orderlineclient和产品:关系多对多。我用这种方法将订单行发送到jasper文件:
@GetMapping("/pdf/{id}")
public ModelAndView report(@PathVariable("id") Long id) throws JRException {
JasperReportsPdfView view = new JasperReportsPdfView();
view.setUrl("classpath:clientreport.jrxml");
view.setApplicationContext(appContext);
Map<String, Object> params = new HashMap<>();
Client client = clientRepository.findOne(id);
List<OrderClient> ordersClient = orderClientRepository.findByClient(client);
List<OrderLineClient> orderLines = new ArrayList<>();
for (OrderClient order : ordersClient) {
orderLines.addAll(order.getOrderLineClients());
}
params.put("source", orderLines);
return new ModelAndView(view, params);
}
然后我创建一个子报告,并将其直接链接到数据库。之后,我创建一个参数并运行以下SQL:
SELECT product.id,
product.name,
product.price,
order_line_client.id,
order_line_client.price,
order_line_client.quantities,
order_line_client.tooths
FROM product,
order_line_products,
order_line_client
WHERE
product.id = order_line_products.product_id
AND order_line_products.order_line_id = order_line_client.id
AND order_line_client.order_client_id = $P{orderid}
但是当我运行应用程序时,我会遇到异常。有人可以帮我解决以下问题:
totalPrice
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Objects;
@Entity
public class OrderClient {
// Attributes
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String number;
private Date orderDate;
private String notes;
private String patientName;
@ManyToOne
private Client client;
@OneToMany(cascade = {CascadeType.PERSIST, CascadeType.MERGE}, mappedBy = "orderClient")
private List<OrderLineClient> orderLineClients = new ArrayList<>();
// Getters & Setters
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
public Date getOrderDate() {
return orderDate;
}
public void setOrderDate(Date orderDate) {
this.orderDate = orderDate;
}
public String getNotes() {
return notes;
}
public void setNotes(String notes) {
this.notes = notes;
}
public String getPatientName() {
return patientName;
}
public void setPatientName(String patientName) {
this.patientName = patientName;
}
public Client getClient() {
return client;
}
public void setClient(Client client) {
this.client = client;
}
public List<OrderLineClient> getOrderLineClients() {
return orderLineClients;
}
public void setOrderLineClients(List<OrderLineClient> orderLineClients) {
this.orderLineClients = orderLineClients;
}
/**
* equals method
*
* @param o
* @return
*/
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
OrderClient order = (OrderClient) o;
return Objects.equals(id, order.id);
}
/**
* hashCode method
*
* @return
*/
@Override
public int hashCode() {
return Objects.hash(id);
}
}
订单线客户端
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
@Entity
public class OrderLineClient {
@Id
@GeneratedValue
private Long id;
private String quantities;
private Double price;
private String tooths;
@ManyToMany(cascade = {CascadeType.PERSIST, CascadeType.MERGE})
@JoinTable(name="orderLine_products", joinColumns=@JoinColumn(name="orderLine_id"), inverseJoinColumns=@JoinColumn(name="product_id"))
private List<Product> products = new ArrayList<>();
@ManyToOne
private Category category;
@ManyToOne
private OrderClient orderClient;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public Category getCategory() {
return category;
}
public void setCategory(Category category) {
this.category = category;
}
public String getQuantities() {
return quantities;
}
public void setQuantities(String quantities) {
this.quantities = quantities;
}
public Double getPrice() {
return price;
}
public void setPrice(Double price) {
this.price = price;
}
public String getTooths() {
return tooths;
}
public void setTooths(String tooths) {
this.tooths = tooths;
}
public List<Product> getProducts() {
return products;
}
public void setProducts(List<Product> products) {
this.products = products;
}
public OrderClient getOrderClient() {
return orderClient;
}
public void setOrderClient(OrderClient orderClient) {
this.orderClient = orderClient;
}
public List<Double> getQuantitiesValues(){
if (getQuantities() == null ) return null;
if (getQuantities().contains("/"))
return CollectionUtils.convertList( Arrays.asList(getQuantities().split("/")), s -> Double.parseDouble(s) );
else {
return Collections.singletonList(Double.parseDouble(getQuantities()));
}
}
public List<String> getToothsValues(){
if (getTooths() == null) return null;
if (getTooths().contains("/"))
return Arrays.asList(getTooths().split("/"));
else
return Collections.singletonList(getTooths());
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
OrderLineClient that = (OrderLineClient) o;
return Objects.equals(id, that.id);
}
@Override
public int hashCode() {
return Objects.hash(id);
}
}
产品
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
@Entity
public class Product {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(nullable = false)
private String name;
private Double price;
private String unit;
private Double quantity;
private Double quantityMin;
private Double quantityMax;
private String picture;
@ManyToMany(cascade = {CascadeType.PERSIST, CascadeType.MERGE}, mappedBy = "products")
private List<OrderLineClient> orderLineClients = new ArrayList<>();
@ManyToMany(cascade = {CascadeType.PERSIST, CascadeType.MERGE})
@JoinTable(name="product_category", joinColumns=@JoinColumn(name="product_id"), inverseJoinColumns=@JoinColumn(name="category_id"))
private List<Category> categories = new ArrayList<>();
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Double getPrice() {
return price;
}
public void setPrice(Double price) {
this.price = price;
}
public String getUnit() {
return unit;
}
public void setUnit(String unit) {
this.unit = unit;
}
public Double getQuantity() {
return quantity;
}
public void setQuantity(Double quantity) {
this.quantity = quantity;
}
public Double getQuantityMin() {
return quantityMin;
}
public void setQuantityMin(Double quantityMin) {
this.quantityMin = quantityMin;
}
public Double getQuantityMax() {
return quantityMax;
}
public void setQuantityMax(Double quantityMax) {
this.quantityMax = quantityMax;
}
public String getPicture() {
return picture;
}
public void setPicture(String picture) {
this.picture = picture;
}
public List<OrderLineClient> getOrderLineClients() {
return orderLineClients;
}
public void setOrderLineClients(List<OrderLineClient> orderLineClients) {
this.orderLineClients = orderLineClients;
}
public List<Category> getCategories() {
return categories;
}
public void setCategories(List<Category> categories) {
this.categories = categories;
}
public Category getParentCategory(){
return getCategories().isEmpty() ? null : getCategories().get(0).getParentCategory();
}
public boolean isOneCategory(Category category ){
return categories.stream().anyMatch(category::equals);
}
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Product product = (Product) o;
return Objects.equals(id, product.id);
}
@Override
public int hashCode() {
return Objects.hash(id);
}
}
这是例外
net.sf.jasperreports.engine.JRException: Resource not found at: src/main/resources/underreport.jasper.
at net.sf.jasperreports.repo.RepositoryUtil.getResourceFromLocation(RepositoryUtil.java:153) ~[jasperreports-6.5.1.jar:6.5.1]
at net.sf.jasperreports.repo.RepositoryUtil.getReport(RepositoryUtil.java:112) ~[jasperreports-6.5.1.jar:6.5.1]
at net.sf.jasperreports.engine.fill.JRFillSubreport.loadReport(JRFillSubreport.java:402) ~[jasperreports-6.5.1.jar:6.5.1]
at net.sf.jasperreports.engine.fill.JRFillSubreport.evaluateReport(JRFillSubreport.java:369) ~[jasperreports-6.5.1.jar:6.5.1]
at net.sf.jasperreports.engine.fill.JRFillSubreport.evaluateSubreport(JRFillSubreport.java:431) ~[jasperreports-6.5.1.jar:6.5.1]
at net.sf.jasperreports.engine.fill.JRFillSubreport.evaluate(JRFillSubreport.java:345) ~[jasperreports-6.5.1.jar:6.5.1]
at net.sf.jasperreports.engine.fill.JRFillElementContainer.evaluate(JRFillElementContainer.java:383) ~[jasperreports-6.5.1.jar:6.5.1]
at net.sf.jasperreports.engine.fill.JRFillBand.evaluate(JRFillBand.java:533) ~[jasperreports-6.5.1.jar:6.5.1]
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillColumnBand(JRVerticalFiller.java:2549) ~[jasperreports-6.5.1.jar:6.5.1]
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillDetail(JRVerticalFiller.java:791) ~[jasperreports-6.5.1.jar:6.5.1]
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportStart(JRVerticalFiller.java:252) ~[jasperreports-6.5.1.jar:6.5.1]
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:99) ~[jasperreports-6.5.1.jar:6.5.1]
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:609) ~[jasperreports-6.5.1.jar:6.5.1]
at net.sf.jasperreports.engine.fill.BaseReportFiller.fill(BaseReportFiller.java:405) ~[jasperreports-6.5.1.jar:6.5.1]
at net.sf.jasperreports.engine.fill.JRFiller.fill(JRFiller.java:140) ~[jasperreports-6.5.1.jar:6.5.1]
at net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:667) ~[jasperreports-6.5.1.jar:6.5.1]
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:983) ~[jasperreports-6.5.1.jar:6.5.1]
at org.springframework.web.servlet.view.jasperreports.AbstractJasperReportsView.fillReport(AbstractJasperReportsView.java:681) ~[spring-webmvc-4.3.10.RELEASE.jar:4.3.10.RELEASE]
at org.springframework.web.servlet.view.jasperreports.AbstractJasperReportsView.renderMergedOutputModel(AbstractJasperReportsView.java:566) ~[spring-webmvc-4.3.10.RELEASE.jar:4.3.10.RELEASE]
at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:303) ~[spring-webmvc-4.3.10.RELEASE.jar:4.3.10.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1286) ~[spring-webmvc-4.3.10.RELEASE.jar:4.3.10.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1041) ~[spring-webmvc-4.3.10.RELEASE.jar:4.3.10.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:984) ~[spring-webmvc-4.3.10.RELEASE.jar:4.3.10.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901) ~[spring-webmvc-4.3.10.RELEASE.jar:4.3.10.RELEASE]
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970) ~[spring-webmvc-4.3.10.RELEASE.jar:4.3.10.RELEASE]
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861) ~[spring-webmvc-4.3.10.RELEASE.jar:4.3.10.RELEASE]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:635) ~[tomcat-embed-core-8.5.16.jar:8.5.16]
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846) ~[spring-webmvc-4.3.10.RELEASE.jar:4.3.10.RELEASE]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:742) ~[tomcat-embed-core-8.5.16.jar:8.5.16]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) ~[tomcat-embed-core-8.5.16.jar:8.5.16]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-8.5.16.jar:8.5.16]
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) ~[tomcat-embed-websocket-8.5.16.jar:8.5.16]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-8.5.16.jar:8.5.16]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-8.5.16.jar:8.5.16]
at org.springframework.boot.web.filter.ApplicationContextHeaderFilter.doFilterInternal(ApplicationContextHeaderFilter.java:55) ~[spring-boot-1.5.6.RELEASE.jar:1.5.6.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) ~[spring-web-4.3.10.RELEASE.jar:4.3.10.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-8.5.16.jar:8.5.16]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-8.5.16.jar:8.5.16]
at org.springframework.boot.actuate.trace.WebRequestTraceFilter.doFilterInternal(WebRequestTraceFilter.java:110) ~[spring-boot-actuator-1.5.6.RELEASE.jar:1.5.6.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) ~[spring-web-4.3.10.RELEASE.jar:4.3.10.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-8.5.16.jar:8.5.16]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-8.5.16.jar:8.5.16]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:317) ~[spring-security-web-4.2.3.RELEASE.jar:4.2.3.RELEASE]
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:127) ~[spring-security-web-4.2.3.RELEASE.jar:4.2.3.RELEASE]
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:91) ~[spring-security-web-4.2.3.RELEASE.jar:4.2.3.RELEASE]
这是主要报告
<?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Jaspersoft Studio version 6.5.0.final using JasperReports Library version 6.5.0 -->
<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="clientreport" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="f5644a3e-c1ef-42f5-b449-e1d38e2d0fd8">
<queryString>
<![CDATA[]]>
</queryString>
<field name="orderClient.id" class="java.lang.Long"/>
<background>
<band splitType="Stretch"/>
</background>
<title>
<band height="79" splitType="Stretch">
<staticText>
<reportElement x="227" y="24" width="100" height="30" uuid="e75f9094-468e-4cf0-83ad-ed751fddd3fd"/>
<textElement textAlignment="Center">
<font size="18" isBold="true"/>
</textElement>
<text><![CDATA[Facture]]></text>
</staticText>
</band>
</title>
<pageHeader>
<band height="35" splitType="Stretch"/>
</pageHeader>
<columnHeader>
<band height="241" splitType="Stretch">
<line>
<reportElement x="-40" y="10" width="615" height="1" uuid="97823373-89aa-42e5-b490-093c4c733c8d"/>
</line>
<line>
<reportElement x="-40" y="61" width="615" height="1" uuid="0db72487-cd75-44f9-adfa-960ba7228c69"/>
</line>
<line>
<reportElement x="71" y="10" width="1" height="51" uuid="361295c4-4882-4557-a9fb-7ebc9cb2f85e"/>
</line>
<line>
<reportElement x="167" y="10" width="1" height="51" uuid="d955e6d9-f764-4beb-9dd3-9894d1c63e1b"/>
</line>
<line>
<reportElement x="280" y="11" width="1" height="50" uuid="a3695a4f-8c97-416c-8eaf-0969e89928dd"/>
</line>
<staticText>
<reportElement x="-20" y="20" width="100" height="30" uuid="fb2c51d1-f35f-4c81-8cb6-26bdfc788bbe">
<property name="com.jaspersoft.studio.spreadsheet.connectionID" value="a0b6a2a6-515d-45cd-a542-2dc271b1b56f"/>
</reportElement>
<text><![CDATA[orderClient.id]]></text>
</staticText>
</band>
</columnHeader>
<detail>
<band height="233" splitType="Stretch">
<textField>
<reportElement x="-20" y="0" width="100" height="30" uuid="cacba138-4c84-4a2d-9f82-dd47a2685203">
<property name="com.jaspersoft.studio.spreadsheet.connectionID" value="a0b6a2a6-515d-45cd-a542-2dc271b1b56f"/>
</reportElement>
<textFieldExpression><![CDATA[$F{orderClient.id}]]></textFieldExpression>
</textField>
<subreport>
<reportElement x="250" y="30" width="200" height="151" uuid="3a4a68df-12fa-4e4b-a3d5-8ba43f819e1d"/>
<subreportParameter name="orderid">
<subreportParameterExpression><![CDATA[$F{orderClient.id}]]></subreportParameterExpression>
</subreportParameter>
<connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression>
<subreportExpression><![CDATA["src/main/resources/underreport.jasper"]]></subreportExpression>
</subreport>
</band>
</detail>
<columnFooter>
<band height="45" splitType="Stretch"/>
</columnFooter>
<pageFooter>
<band height="54" splitType="Stretch"/>
</pageFooter>
<summary>
<band height="42" splitType="Stretch"/>
</summary>
</jasperReport>
这是子报告
<?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Jaspersoft Studio version 6.5.0.final using JasperReports Library version 6.5.0 -->
<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="underreport" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="3365f770-336c-4f9c-a25f-0886872566e0">
<property name="com.jaspersoft.studio.data.sql.tables">
<![CDATA[cHJvZHVjdCAsMTM5LDI4LDc0MGI5ZWIxLTY4OGYtNGI3MS1hOGVjLWY3NDA0ZWE2ZmIzOTtvcmRl
cl9saW5lX3Byb2R1Y3RzICwyMzUsNDEsZWY1N2VmY2EtZDNmYS00MTNhLWE0MTgtNzA5ODU2ZWEz
YTQ0O29yZGVyX2xpbmVfY2xpZW50ICwxNSwxNSxmOTdiYTY2OC03MTNiLTQzNzAtYWI0MS1kODFi
YmM4MGFiZTE7]]>
</property>
<property name="com.jaspersoft.studio.data.defaultdataadapter" value="JDBC Data Adapter"/>
<parameter name="orderid" class="java.lang.Long"/>
<queryString language="SQL">
<![CDATA[SELECT product.id,
product.name,
product.price,
order_line_client.id,
order_line_client.price,
order_line_client.quantities,
order_line_client.tooths
FROM product,
order_line_products,
order_line_client
WHERE
product.id = order_line_products.product_id
AND order_line_products.order_line_id = order_line_client.id]]>
</queryString>
<field name="id" class="java.lang.Long">
<property name="com.jaspersoft.studio.field.label" value="id"/>
<property name="com.jaspersoft.studio.field.tree.path" value="product"/>
</field>
<field name="name" class="java.lang.String">
<property name="com.jaspersoft.studio.field.label" value="name"/>
<property name="com.jaspersoft.studio.field.tree.path" value="product"/>
</field>
<field name="price" class="java.lang.Double">
<property name="com.jaspersoft.studio.field.label" value="price"/>
<property name="com.jaspersoft.studio.field.tree.path" value="product"/>
</field>
<field name="COLUMN_4" class="java.lang.Long">
<property name="com.jaspersoft.studio.field.label" value="id"/>
<property name="com.jaspersoft.studio.field.tree.path" value="order_line_client"/>
</field>
<field name="COLUMN_5" class="java.lang.Double">
<property name="com.jaspersoft.studio.field.label" value="price"/>
<property name="com.jaspersoft.studio.field.tree.path" value="order_line_client"/>
</field>
<field name="quantities" class="java.lang.String">
<property name="com.jaspersoft.studio.field.label" value="quantities"/>
<property name="com.jaspersoft.studio.field.tree.path" value="order_line_client"/>
</field>
<field name="tooths" class="java.lang.String">
<property name="com.jaspersoft.studio.field.label" value="tooths"/>
<property name="com.jaspersoft.studio.field.tree.path" value="order_line_client"/>
</field>
<group name="id">
<groupExpression><![CDATA[$F{id}]]></groupExpression>
</group>
<group name="name">
<groupExpression><![CDATA[$F{name}]]></groupExpression>
</group>
<group name="price">
<groupExpression><![CDATA[$F{price}]]></groupExpression>
</group>
<group name="COLUMN_4">
<groupExpression><![CDATA[$F{COLUMN_4}]]></groupExpression>
</group>
<group name="COLUMN_5">
<groupExpression><![CDATA[$F{COLUMN_5}]]></groupExpression>
</group>
<group name="quantities">
<groupExpression><![CDATA[$F{quantities}]]></groupExpression>
</group>
<group name="tooths">
<groupExpression><![CDATA[$F{tooths}]]></groupExpression>
</group>
<background>
<band splitType="Stretch"/>
</background>
<title>
<band height="79" splitType="Stretch"/>
</title>
<pageHeader>
<band height="35" splitType="Stretch"/>
</pageHeader>
<columnHeader>
<band height="61" splitType="Stretch">
<staticText>
<reportElement x="0" y="0" width="100" height="30" uuid="4d24ee13-0586-4ab5-8804-0f984acdd187">
<property name="com.jaspersoft.studio.spreadsheet.connectionID" value="0e5824f5-b3da-4bba-88b6-b57f5fb9d886"/>
</reportElement>
<text><![CDATA[name]]></text>
</staticText>
</band>
</columnHeader>
<detail>
<band height="125" splitType="Stretch">
<textField>
<reportElement x="0" y="0" width="100" height="30" uuid="616ff217-cfb2-496c-bbb8-0f4ee2a644b8">
<property name="com.jaspersoft.studio.spreadsheet.connectionID" value="0e5824f5-b3da-4bba-88b6-b57f5fb9d886"/>
</reportElement>
<textFieldExpression><![CDATA[$F{name}]]></textFieldExpression>
</textField>
</band>
</detail>
<columnFooter>
<band height="45" splitType="Stretch"/>
</columnFooter>
<pageFooter>
<band height="54" splitType="Stretch"/>
</pageFooter>
<summary>
<band height="42" splitType="Stretch"/>
</summary>
</jasperReport>