springboot 整合jasperReport 6.6.0 記錄

經過2天對於jasper的研究,終於做出了第一個簡單的報表打印現在記錄一下整個過程
1. pom.xml修改增加

<dependency>
     <groupId>net.sf.jasperreports</groupId>
     <artifactId>jasperreports</artifactId>
     <version>6.6.0</version>
</dependency>
<dependency>
     <groupId>net.sf.jasperreport</groupId>
     <artifactId>jasperreport-font</artifactId>
     <version>6.5.1</version>
</dependency>
<dependency>
     <groupId>com.lowagie</groupId>
     <artifactId>itext</artifactId>
     <version>2.1.7</version>
</dependency>

note: jasperreport-font爲下載源代碼自己編譯生成的,其中有加入先的字體支持中文,文末提供下載地址
2. 配置 resolver 支持ModelAndView顯示

import net.pptech.config.Config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.*;
import org.springframework.web.servlet.view.jasperreports.JasperReportsMultiFormatView;
import org.springframework.web.servlet.view.jasperreports.JasperReportsViewResolver;

import javax.annotation.Resource;

/**
 * @author jackychiang
 */
@Configuration
@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter {

    @Override
    public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
        configurer.enable();
    }

    @Bean
    public JasperReportsViewResolver getJasperReportsViewResolver(){
        JasperReportsViewResolver resolver = new JasperReportsViewResolver();
        resolver.setPrefix("classpath:jasper/"); //resources/jasper目錄,將jrxml放入該目錄
        resolver.setSuffix(".jrxml");
        resolver.setReportDataKey("datasource");
        resolver.setViewNames("*service*");
        resolver.setViewClass(JasperReportsMultiFormatView.class);
        resolver.setOrder(0);
        return resolver;
    }
}

note: Springboot 2.0之後WebMvcConfigurerAdapter 標記爲過時需要自己實現接口

  1. 增加controller
@GetMapping("/order_list")
    @RequiresUser
    public ModelAndView orderList(Long orderId, final ModelMap modelMap) {
        Map<String, Object> orderList = documentService.queryOrderList(orderId, getUser().getStoreId());
        List<Material> materials = (List<Material>) orderList.get("materials");
        JRDataSource dataSource = new JRBeanCollectionDataSource(materials);
        modelMap.put("datasource",dataSource);
        modelMap.put("format", "pdf");
        modelMap.put("storeName", "中文測試");
        modelMap.put("userName","蔣xxxxxxx");
        modelMap.put("userPhone", "xxxxx");
        modelMap.put("carNum", "渝xxxxx");
        modelMap.put("carModel", "哈弗H6");
        modelMap.put("vin","LGW12321312312121");
        modelMap.put("km","58123");
        return new ModelAndView("service_letter_of_trust",modelMap);
    }
  1. service_letter_of_trust.jrxml 文件內容
<?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Jaspersoft Studio version 6.6.0.final using JasperReports Library version 6.6.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="service_letter_of_trust" pageWidth="595" pageHeight="842" whenNoDataType="BlankPage" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="dfe0f072-ae06-47ef-a5ad-40939a619a0d">
    <property name="com.jaspersoft.studio.data.defaultdataadapter" value="One Empty Record"/>
    <property name="com.jaspersoft.studio.unit." value="mm"/>
    <property name="com.jaspersoft.studio.unit.pageHeight" value="mm"/>
    <property name="com.jaspersoft.studio.unit.pageWidth" value="mm"/>
    <property name="com.jaspersoft.studio.unit.topMargin" value="mm"/>
    <property name="com.jaspersoft.studio.unit.bottomMargin" value="mm"/>
    <property name="com.jaspersoft.studio.unit.leftMargin" value="mm"/>
    <property name="com.jaspersoft.studio.unit.rightMargin" value="mm"/>
    <property name="com.jaspersoft.studio.unit.columnWidth" value="mm"/>
    <property name="com.jaspersoft.studio.unit.columnSpacing" value="mm"/>
    <parameter name="userName" class="java.lang.String"/>
    <parameter name="userPhone" class="java.lang.String"/>
    <parameter name="carNum" class="java.lang.String"/>
    <parameter name="carModel" class="java.lang.String"/>
    <parameter name="vin" class="java.lang.String"/>
    <parameter name="km" class="java.lang.String"/>
    <parameter name="storeName" class="java.lang.String"/>
    <queryString>
        <![CDATA[]]>
    </queryString>
    <field name="materialCode" class="java.lang.String"/>
    <field name="materialName" class="java.lang.String"/>
    <field name="materialCount" class="java.lang.Integer"/>
    <field name="materialPrice" class="java.math.BigDecimal"/>
    <background>
        <band splitType="Stretch"/>
    </background>
    <title>
        <band height="88" splitType="Stretch">
            <staticText>
                <reportElement x="6" y="46" width="54" height="20" uuid="12fdd4f4-795b-431e-a813-c98714c67910"/>
                <textElement verticalAlignment="Middle">
                    <font fontName="宋體"/>
                </textElement>
                <text><![CDATA[客戶姓名]]></text>
            </staticText>
            <staticText>
                <reportElement x="6" y="68" width="54" height="20" uuid="166f60b4-aefa-47fe-bb31-979e7a4cf5de"/>
                <textElement textAlignment="Left" verticalAlignment="Middle">
                    <font fontName="宋體"/>
                </textElement>
                <text><![CDATA[客戶電話]]></text>
            </staticText>
            <textField>
                <reportElement x="60" y="46" width="100" height="20" uuid="587beebf-4f4e-49a3-9355-753971c3dd80"/>
                <textElement verticalAlignment="Middle">
                    <font fontName="宋體"/>
                </textElement>
                <textFieldExpression><![CDATA[$P{userName}]]></textFieldExpression>
            </textField>
            <textField>
                <reportElement x="60" y="68" width="100" height="20" uuid="f1c05726-e180-4cd0-a0f0-2d06f92464b8"/>
                <textElement verticalAlignment="Middle">
                    <font fontName="宋體"/>
                </textElement>
                <textFieldExpression><![CDATA[$P{userPhone}]]></textFieldExpression>
            </textField>
            <staticText>
                <reportElement x="160" y="46" width="54" height="20" uuid="2d2c33e8-780b-42db-ac66-a075674752a4"/>
                <textElement verticalAlignment="Middle">
                    <font fontName="宋體"/>
                </textElement>
                <text><![CDATA[車牌號碼]]></text>
            </staticText>
            <staticText>
                <reportElement x="160" y="68" width="54" height="20" uuid="61befc35-b48f-4934-ab5c-8b0ac16e2030"/>
                <textElement verticalAlignment="Middle">
                    <font fontName="宋體"/>
                </textElement>
                <text><![CDATA[車輛型號]]></text>
            </staticText>
            <textField>
                <reportElement x="214" y="46" width="100" height="20" uuid="cbac0147-24b2-47b1-ae25-8e615d7b4e70"/>
                <textElement verticalAlignment="Middle">
                    <font fontName="宋體"/>
                </textElement>
                <textFieldExpression><![CDATA[$P{carNum}]]></textFieldExpression>
            </textField>
            <staticText>
                <reportElement x="314" y="46" width="54" height="20" uuid="ea7123d7-e24f-42e4-99bd-3314a4a286e6"/>
                <textElement verticalAlignment="Middle">
                    <font fontName="宋體"/>
                </textElement>
                <text><![CDATA[VIN碼]]></text>
            </staticText>
            <textField>
                <reportElement x="214" y="68" width="100" height="20" uuid="b5330ecd-0f7c-46e5-87b9-b2cf04639b26"/>
                <textElement verticalAlignment="Middle">
                    <font fontName="宋體"/>
                </textElement>
                <textFieldExpression><![CDATA[$P{carModel}]]></textFieldExpression>
            </textField>
            <textField>
                <reportElement x="368" y="46" width="182" height="20" uuid="0f7c3261-d8f4-46c2-8b43-c96a0dc81a8a"/>
                <textElement verticalAlignment="Middle">
                    <font fontName="宋體"/>
                </textElement>
                <textFieldExpression><![CDATA[$P{vin}]]></textFieldExpression>
            </textField>
            <staticText>
                <reportElement x="314" y="68" width="54" height="20" uuid="7897242f-9f4d-480e-8f3e-fd336e2c6e74"/>
                <textElement verticalAlignment="Middle">
                    <font fontName="宋體"/>
                </textElement>
                <text><![CDATA[里程(Km)]]></text>
            </staticText>
            <textField>
                <reportElement x="368" y="68" width="182" height="20" uuid="630e54d8-a4b8-4a0a-b8b2-1fc2048e9278"/>
                <textElement verticalAlignment="Middle">
                    <font fontName="宋體"/>
                </textElement>
                <textFieldExpression><![CDATA[$P{km}]]></textFieldExpression>
            </textField>
            <textField>
                <reportElement x="6" y="10" width="308" height="30" uuid="ab813d40-4ca1-4afc-b5bd-028d4974f4bf"/>
                <box topPadding="0" leftPadding="0" bottomPadding="0" rightPadding="0">
                    <pen lineWidth="0.0"/>
                </box>
                <textElement verticalAlignment="Middle">
                    <font fontName="宋體" size="18"/>
                </textElement>
                <textFieldExpression><![CDATA[$P{storeName}]]></textFieldExpression>
            </textField>
        </band>
    </title>
    <columnHeader>
        <band height="20">
            <staticText>
                <reportElement x="6" y="0" width="144" height="20" uuid="37caac76-fa7b-4059-8ac8-0acb24dd15de"/>
                <textElement textAlignment="Center" verticalAlignment="Middle">
                    <font fontName="宋體"/>
                </textElement>
                <text><![CDATA[零件名稱]]></text>
            </staticText>
            <staticText>
                <reportElement x="150" y="0" width="40" height="20" uuid="67032300-5eff-44da-9dfb-30e8d44edbb4"/>
                <textElement textAlignment="Center" verticalAlignment="Middle">
                    <font fontName="宋體"/>
                </textElement>
                <text><![CDATA[數量]]></text>
            </staticText>
            <staticText>
                <reportElement x="190" y="0" width="76" height="20" uuid="000cb987-4ce3-4b20-8c24-86e2b3887618"/>
                <textElement textAlignment="Center" verticalAlignment="Middle">
                    <font fontName="宋體"/>
                </textElement>
                <text><![CDATA[材料單價(元)]]></text>
            </staticText>
            <staticText>
                <reportElement x="266" y="0" width="68" height="20" uuid="0c07454c-0840-4a3b-a815-c7f08943497c"/>
                <textElement textAlignment="Center" verticalAlignment="Middle">
                    <font fontName="宋體"/>
                </textElement>
                <text><![CDATA[工時費(元)]]></text>
            </staticText>
            <staticText>
                <reportElement x="334" y="0" width="54" height="20" uuid="81e86971-4606-43a7-b522-bdb01e1e953f"/>
                <textElement textAlignment="Center" verticalAlignment="Middle">
                    <font fontName="宋體"/>
                </textElement>
                <text><![CDATA[合計(元)]]></text>
            </staticText>
            <staticText>
                <reportElement x="388" y="0" width="62" height="20" uuid="9e099f02-0e0e-4527-b881-4c044d881312"/>
                <textElement textAlignment="Center" verticalAlignment="Middle">
                    <font fontName="宋體"/>
                </textElement>
                <text><![CDATA[是否訂貨]]></text>
            </staticText>
            <staticText>
                <reportElement x="450" y="0" width="100" height="20" uuid="27626fea-ed8d-47b6-92a1-949714a94543"/>
                <textElement textAlignment="Center" verticalAlignment="Middle">
                    <font fontName="宋體"/>
                </textElement>
                <text><![CDATA[領料人]]></text>
            </staticText>
        </band>
    </columnHeader>
    <detail>
        <band height="21" splitType="Stretch">
            <textField>
                <reportElement x="6" y="0" width="144" height="20" uuid="79f6d666-db9f-41a2-b773-205c89e0ef5b">
                    <property name="com.jaspersoft.studio.spreadsheet.connectionID" value="55da8db3-ecdf-4a3d-8b30-393bc736f043"/>
                </reportElement>
                <textElement>
                    <font fontName="宋體"/>
                </textElement>
                <textFieldExpression><![CDATA[$F{materialName}]]></textFieldExpression>
            </textField>
            <textField>
                <reportElement x="150" y="0" width="40" height="20" uuid="b50fd257-d11a-4e0b-a1ea-1723b383ba6d">
                    <property name="com.jaspersoft.studio.spreadsheet.connectionID" value="78956194-827a-499e-9556-0e5a1ce80fb0"/>
                </reportElement>
                <textElement>
                    <font fontName="宋體"/>
                </textElement>
                <textFieldExpression><![CDATA[$F{materialCount}]]></textFieldExpression>
            </textField>
            <textField>
                <reportElement x="190" y="0" width="90" height="20" uuid="9a689da4-5847-45a8-8b64-2e8456df7373">
                    <property name="com.jaspersoft.studio.spreadsheet.connectionID" value="5c0c9d68-6d08-459f-a393-1cc05a5bac63"/>
                </reportElement>
                <textElement>
                    <font fontName="宋體"/>
                </textElement>
                <textFieldExpression><![CDATA[$F{materialPrice}]]></textFieldExpression>
            </textField>
        </band>
    </detail>
</jasperReport>
  1. 未實現問題說明
    • 生成html文件
  2. 文件下載
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章