2013-05-24 2 views
0

У меня есть требование, когда мне нужно прочитать CSV-файл и подготовить отчет в Jasper. Я могу использовать источник данных CSV в обычном текстовом поле. Но когда я добавляю таблицу в раздел «Детали» или «Сводка», он ожидает создания нового набора данных. Я создал его успешно, но когда отчет работает, он не может получить данные из источника данных CSV, я получаю пустой отчет. То же самое работает, если я использую базу данных вместо CSV. Есть ли ошибка в Джаспере.Отчет Jasper: CSV DataSource в компоненте таблицы

ответ

0

Для компонента таблицы вам необходимо создать новый источник данных. Что нужно сделать, перетащите компонент таблицы и нажмите «Новый набор данных» и выберите набор данных CSV из выпадающего списка «Источники данных»/«Источники данных».

+0

У меня такая же проблема, даже после следующих этапов она все еще не работает. Могу ли я дать образец файла jrxml и CSV, который работает. Цените, что вы помогаете! – user2367884

0

У меня была та же проблема. Чтобы исправить это, перейдите в компонент таблицы, щелкните правой кнопкой мыши, а затем «источник данных Изменить», выбор «выражение источника данных Connection» и написать:

((net.sf.jasperreports.engine.data.JRCsvDataSource)$P{REPORT_DATA_SOURCE}) 
0

Ниже приведен пример JRXML, который показывает, как использовать CSV источника данных в компоненте таблицы.

Обратите внимание, что вам нужно указать поля в дополнительном наборе данных «COLUMN_» + индекс столбца. Таким образом, в JRCsvDataSource # getFieldValue ваше поле будет правильно расположено, не добавляя строку для заголовков столбцов в файл CSV.

<?xml version="1.0" encoding="UTF-8"?> 
<!-- Created with Jaspersoft Studio version 6.3.0.final using JasperReports Library version 6.3.0 --> 
<!-- 2016-08-23T13:06:06 --> 
<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="SimpleReportWithTable" pageWidth="595" pageHeight="842" whenNoDataType="AllSectionsNoDetail" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="b32b572d-c517-48ba-a44e-3402966e9932"> 
    <property name="com.jaspersoft.studio.data.defaultdataadapter" value="SimpleCsvDataAdapter"/> 
    <style name="Table_TH" mode="Opaque" backcolor="#F0F8FF"> 
     <box> 
      <pen lineWidth="0.5" lineColor="#000000"/> 
      <topPen lineWidth="0.5" lineColor="#000000"/> 
      <leftPen lineWidth="0.5" lineColor="#000000"/> 
      <bottomPen lineWidth="0.5" lineColor="#000000"/> 
      <rightPen lineWidth="0.5" lineColor="#000000"/> 
     </box> 
    </style> 
    <style name="Table_CH" mode="Opaque" backcolor="#BFE1FF"> 
     <box> 
      <pen lineWidth="0.5" lineColor="#000000"/> 
      <topPen lineWidth="0.5" lineColor="#000000"/> 
      <leftPen lineWidth="0.5" lineColor="#000000"/> 
      <bottomPen lineWidth="0.5" lineColor="#000000"/> 
      <rightPen lineWidth="0.5" lineColor="#000000"/> 
     </box> 
    </style> 
    <style name="Table_TD" mode="Opaque" backcolor="#FFFFFF"> 
     <box> 
      <pen lineWidth="0.5" lineColor="#000000"/> 
      <topPen lineWidth="0.5" lineColor="#000000"/> 
      <leftPen lineWidth="0.5" lineColor="#000000"/> 
      <bottomPen lineWidth="0.5" lineColor="#000000"/> 
      <rightPen lineWidth="0.5" lineColor="#000000"/> 
     </box> 
     <conditionalStyle> 
      <conditionExpression><![CDATA[new Boolean($V{REPORT_COUNT}.intValue()%2==0)]]></conditionExpression> 
      <style backcolor="#FBFDFF"/> 
     </conditionalStyle> 
    </style> 
    <subDataset name="Dataset1" uuid="76efa803-c263-4538-a39a-8ddb1712e58a"> 
     <field name="COLUMN_0" class="java.lang.String"/> 
     <field name="COLUMN_1" class="java.lang.String"/> 
     <field name="COLUMN_2" class="java.lang.String"/> 
     <field name="COLUMN_3" class="java.lang.String"/> 
     <field name="COLUMN_4" class="java.lang.String"/> 
     <field name="COLUMN_5" class="java.lang.String"/> 
     <field name="COLUMN_6" class="java.lang.String"/> 
     <field name="COLUMN_7" class="java.lang.String"/> 
     <field name="COLUMN_8" class="java.lang.String"/> 
    </subDataset> 
    <parameter name="CSV_DATA_SOURCE" class="net.sf.jasperreports.engine.data.JRCsvDataSource" isForPrompting="false"> 
     <defaultValueExpression><![CDATA[new net.sf.jasperreports.engine.data.JRCsvDataSource("path_to_csv_file")]]></defaultValueExpression> 
    </parameter> 
    <summary> 
     <band height="70" splitType="Stretch"> 
      <componentElement> 
       <reportElement x="0" y="10" width="200" height="60" uuid="a5c67e1f-1b96-4044-b4d2-ba9da8502bab"> 
        <property name="com.jaspersoft.studio.layout" value="com.jaspersoft.studio.editor.layout.VerticalRowLayout"/> 
        <property name="com.jaspersoft.studio.table.style.table_header" value="Table_TH"/> 
        <property name="com.jaspersoft.studio.table.style.column_header" value="Table_CH"/> 
        <property name="com.jaspersoft.studio.table.style.detail" value="Table_TD"/> 
        <property name="net.sf.jasperreports.export.headertoolbar.table.name" value=""/> 
       </reportElement> 
       <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="Dataset1" uuid="7738bf3c-ecda-4864-9804-c6319de53296"> 
         <dataSourceExpression><![CDATA[$P{CSV_DATA_SOURCE}]]></dataSourceExpression> 
        </datasetRun> 
        <jr:column width="66" uuid="5c06dacd-68b4-4972-87e9-45dcbf181cbd"> 
         <jr:columnHeader style="Table_CH" height="30"> 
          <staticText> 
           <reportElement x="0" y="0" width="66" height="30" uuid="3ecb3cf8-02f5-4783-b407-9d36a3b76a9e"/> 
           <text><![CDATA[Row 1]]></text> 
          </staticText> 
         </jr:columnHeader> 
         <jr:detailCell style="Table_TD" height="30"> 
          <textField> 
           <reportElement x="0" y="0" width="66" height="30" uuid="21db9e1b-c129-40f6-afd5-c8fc9b939112"/> 
           <textFieldExpression><![CDATA[$F{COLUMN_0}]]></textFieldExpression> 
          </textField> 
         </jr:detailCell> 
        </jr:column> 
        <jr:column width="66" uuid="45989e75-9ad1-4a48-ae63-ddaf380930e7"> 
         <jr:columnHeader style="Table_CH" height="30"> 
          <staticText> 
           <reportElement x="0" y="0" width="66" height="30" uuid="392ead1f-fd67-431c-8da6-3cf3dad9728d"/> 
           <text><![CDATA[Row 2]]></text> 
          </staticText> 
         </jr:columnHeader> 
         <jr:detailCell style="Table_TD" height="30"> 
          <textField> 
           <reportElement x="0" y="0" width="66" height="30" uuid="1a1fb7ba-cec2-44f7-bdc7-3a3887302fb0"/> 
           <textFieldExpression><![CDATA[$F{COLUMN_1}]]></textFieldExpression> 
          </textField> 
         </jr:detailCell> 
        </jr:column> 
        <jr:column width="66" uuid="128a9867-c221-4862-a9ac-f5cc99e394f1"> 
         <jr:columnHeader style="Table_CH" height="30"> 
          <staticText> 
           <reportElement x="0" y="0" width="66" height="30" uuid="033b57f1-b3dd-4909-8ed7-84c99f92eccd"/> 
           <text><![CDATA[Row 3]]></text> 
          </staticText> 
         </jr:columnHeader> 
         <jr:detailCell style="Table_TD" height="30"> 
          <textField> 
           <reportElement x="0" y="0" width="66" height="30" uuid="0d2027c4-e761-4e14-b093-31be3c0493e0"/> 
           <textFieldExpression><![CDATA[$F{COLUMN_2}]]></textFieldExpression> 
          </textField> 
         </jr:detailCell> 
        </jr:column> 
       </jr:table> 
      </componentElement> 
     </band> 
    </summary> 
</jasperReport> 
Смежные вопросы