2016-02-08 2 views
-1

Я должен разработать отчет Jasper в иРепорте 5 инструмента со следующими ограничениями:Как я могу показать сумму столбцов в заголовке столбца?

  1. мне нужно показать сумму каждого столбца в заголовке, как на картинке
  2. Мне нужно, чтобы показать столбцы по вертикали как в изображении

Желаемая выход

expected output

ли ро Можно ли написать отчет так?

+0

голосования для повторного открытия ответ может содержаться в нескольких строках (следовательно, не в широком смысле), кроме того, это цель дублирования для других подобных вопросов. –

ответ

0

в отчетах этого типа, вы можете использовать кросс-таблицу, вы помещаете поле, а не ежемесячно. Используйте в столбцах и имя полевого месяце в строках, а также использовать функцию суммы в клетках

<crosstab> 
    <rowGroup name="month" width="128" totalPosition="End"> 
     ... 
    </rowGroup> 
    <columnGroup name="monthlyUse" height="66"> 
      ... 
    </columnGroup> 
    <measure name="nameMeasure" class="java.lang.Integer" calculation="Sum"> 
       <measureExpression><![CDATA[$F{number}]]></measureExpression> 
    </measure>    
    ....     
</crosstab> 

кросс-таблица будет генерировать таблицу shwoing ежемесячного использования общей строкой

+0

Вы можете использовать кросс-таблицу, но на самом деле нет необходимости. Он также может быть выполнен в обычном отчете с помощью столбцаHeader и группы данных –

+0

в моем наборе данных sql-запроса. У меня есть два столбца: 1.Month name 2.total item в этом месяце .... например, первая строка - апрель с 24 элементами и май с 24 элемента, затем с кросс-таблицей, я хочу показать столбцы столбцов ...но я не в состоянии это сделать ... –

+1

mithlesh singh указать, что именно проблема? у вас есть два поля (имя месяца и общий элемент) при создании кросс-таблицы, в которой вы выбираете имя месяца в группе строк, а затем общий элемент в группе столбцов, тогда вам нужно использовать другое поле, которое вы называете его номером, например, оно должно быть целым или двойным , вы выбираете номер в Data и выбираете функцию Sum –

1

если вы» не знакомы с кросс-таблицей, как было предложено ранее, вы могли бы создать подзаголовок, чтобы показать итоговые значения столбца и поместить его «до» диапазона деталей (например, в полосе заголовка страницы).

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

в основном, перекрестный является лучшим решением в целом, но если вам нужно что-то попроще (возможно, вы не знакомы с иРепортом) или один выстрелом, как вы могли бы подумать о подотчете

2

Использования нормального detail группа и columnHeader группа это достигается путем создания переменной с calculationType="sum" на поле вы хотите подвести

См: How to sum all values in a column in Jaspersoft iReport Designer?

Затем отобразить переменную с помощью textField в columnHeader, установив evaluationTime="Report", чтобы переменная была рассчитана перед ее отображением.

вращать textElement вертикального использования атрибута rotation (rotation="Left")

Пример:

<?xml version="1.0" encoding="UTF-8"?> 
<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="ReportTest" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="30" bottomMargin="30" uuid="43c90ca5-f3c3-4dda-8423-9ff1442f90e3"> 
    <queryString> 
     <![CDATA[select * from mytable]]> 
    </queryString> 
    <field name="descr" class="java.lang.String"> 
     <fieldDescription><![CDATA[]]></fieldDescription> 
    </field> 
    <field name="value" class="java.lang.Double"> 
     <fieldDescription><![CDATA[]]></fieldDescription> 
    </field> 
    <variable name="sumValue" class="java.lang.Double" calculation="Sum"> 
     <variableExpression><![CDATA[$F{value}]]></variableExpression> 
    </variable> 
    <columnHeader> 
     <band height="70"> 
      <textField> 
       <reportElement mode="Opaque" x="0" y="50" width="100" height="20" forecolor="#000000" backcolor="#CCCCCC" uuid="dfe13f55-12a6-4c33-b5ba-00dd61f37c96"/> 
       <box leftPadding="2"> 
        <topPen lineWidth="0.25"/> 
        <leftPen lineWidth="0.25"/> 
        <bottomPen lineWidth="0.25"/> 
        <rightPen lineWidth="0.25"/> 
       </box> 
       <textElement verticalAlignment="Middle"/> 
       <textFieldExpression><![CDATA["TOTALE"]]></textFieldExpression> 
      </textField> 
      <textField evaluationTime="Report" pattern="###0.00;-###0.00"> 
       <reportElement mode="Opaque" x="100" y="50" width="100" height="20" forecolor="#000000" backcolor="#CCCCCC" uuid="ed251db0-474e-4e20-8788-3c2f08bfd1e7"/> 
       <box leftPadding="2" rightPadding="2"> 
        <topPen lineWidth="0.25"/> 
        <leftPen lineWidth="0.25"/> 
        <bottomPen lineWidth="0.25"/> 
        <rightPen lineWidth="0.25"/> 
       </box> 
       <textElement textAlignment="Right" verticalAlignment="Middle"/> 
       <textFieldExpression><![CDATA[$V{sumValue}]]></textFieldExpression> 
      </textField> 
      <staticText> 
       <reportElement mode="Opaque" x="100" y="0" width="100" height="50" forecolor="#000000" backcolor="#CCCCCC" uuid="62b62711-8cfb-4df2-8f9e-4a34249dcc66"/> 
       <box leftPadding="2"> 
        <topPen lineWidth="0.25"/> 
        <leftPen lineWidth="0.25"/> 
        <bottomPen lineWidth="0.25"/> 
        <rightPen lineWidth="0.25"/> 
       </box> 
       <textElement textAlignment="Center" verticalAlignment="Middle" rotation="Left"> 
        <font size="8"/> 
       </textElement> 
       <text><![CDATA[SESSIONS]]></text> 
      </staticText> 
     </band> 
    </columnHeader> 
    <detail> 
     <band height="20" splitType="Immediate"> 
      <textField> 
       <reportElement x="0" y="0" width="100" height="20" uuid="6a009a8c-16de-451c-a0f1-516a48f793d0"/> 
       <box leftPadding="2"> 
        <topPen lineWidth="0.25"/> 
        <leftPen lineWidth="0.25"/> 
        <bottomPen lineWidth="0.25"/> 
        <rightPen lineWidth="0.25"/> 
       </box> 
       <textElement verticalAlignment="Middle"> 
        <paragraph lineSpacing="Single"/> 
       </textElement> 
       <textFieldExpression><![CDATA[$F{descr}]]></textFieldExpression> 
      </textField> 
      <textField pattern="###0.00;-###0.00"> 
       <reportElement x="100" y="0" width="100" height="20" uuid="1fccff95-408c-4364-b003-c691fefdde62"/> 
       <box rightPadding="2"> 
        <topPen lineWidth="0.25"/> 
        <leftPen lineWidth="0.25"/> 
        <bottomPen lineWidth="0.25"/> 
        <rightPen lineWidth="0.25"/> 
       </box> 
       <textElement textAlignment="Right" verticalAlignment="Middle"> 
        <paragraph lineSpacing="Single"/> 
       </textElement> 
       <textFieldExpression><![CDATA[$F{value}]]></textFieldExpression> 
      </textField> 
     </band> 
    </detail> 
</jasperReport> 

Результат (с некоторыми произвольными данными)

Result

Смежные вопросы