2011-11-22 38 views
5

Tôi đã viết đặc tả jasper để tạo PDF từ nguồn dữ liệu bảng. Điều này làm việc tốt. Bây giờ tôi phải thêm vài cột nữa và báo cáo bây giờ không có vẻ tốt. Tôi bây giờ suy nghĩ nếu tôi có thể bóp trong tên cột trong nhiều dòng như hình dưới đâyCách đặt tên cột bao gồm nhiều dòng trong tạo báo cáo jasper

Bảo trì ngày

để

Maintenance

ngày

Có thể đạt được điều này ở Jasper?

Kính trọng, Paul

+0

Ý của bạn là sử dụng API JasperReports? –

+0

Không sử dụng API. Tôi đã viết jrxml và tôi sử dụng nguồn dữ liệu bảng để tạo tệp PDF. – paulhudson

+0

Bạn có thể xem đoạn mã jrxml của mình trong bài đăng –

Trả lời

3

Tên cột của bạn có được mã hóa cứng không? Bạn chỉ cần thay đổi "Ngày bảo trì" thành "Bảo trì \ nDate" để có trả lại vận chuyển không?

Lưu ý: bạn không thể thêm ký tự "\ n" vào phần tử Văn bản tĩnh. Bạn cần sử dụng trường văn bản. May mắn thay, bạn có thể chỉ cần kích chuột phải vào một phần tử Static Text trong iReport và biến nó thành một Text Field.

Tôi đoán điều đó có thể giải quyết được. Nếu không, sau đó bạn có thể cần phải làm cho câu hỏi rõ ràng hơn.

+0

Có, tên cột của bảng của tôi được mã hóa cứng trong tệp jrxml. Đây là cùng mã mà tôi có – paulhudson

+0

Hoàn hảo. Trong trường hợp đó, việc thêm "\ n" phải là thứ bạn cần. – mdahlman

+0

Không chắc chắn cách định dạng đoạn trích xml \t \t \t \t \t \t \t \t paulhudson

1

Nếu bạn đang sử dụng JasperReports API bạn có thể sử dụng mẫu này:

//Detail 
    band = new JRDesignBand(); 
    band.setHeight(40); 

    JRDesignStaticText staticText = new JRDesignStaticText(); 
    staticText.setX(0); 
    staticText.setY(0); 
    staticText.setWidth(60); 
    staticText.setHeight(20); 
    staticText.setMode(ModeEnum.OPAQUE); 
    staticText.setHorizontalAlignment(HorizontalAlignEnum.LEFT); 
    staticText.setStyle(boldStyle); 
    staticText.setText("ID: "); 
    staticText.getLineBox().getLeftPen().setLineWidth(1); 
    staticText.getLineBox().getTopPen().setLineWidth(1); 
    staticText.getLineBox().setLeftPadding(10); 
    band.addElement(staticText); 

    textField = new JRDesignTextField(); 
    textField.setX(60); 
    textField.setY(0); 
    textField.setWidth(200); 
    textField.setHeight(20); 
    textField.setHorizontalAlignment(HorizontalAlignEnum.LEFT); 
    textField.setStyle(normalStyle); 
    expression = new JRDesignExpression(); 
    expression.setValueClass(java.lang.Integer.class); 
    expression.setText("$F{Id}"); 
    textField.setExpression(expression); 
    textField.getLineBox().getTopPen().setLineWidth(1); 
    textField.getLineBox().getRightPen().setLineWidth(1); 
    textField.getLineBox().setLeftPadding(10); 
    band.addElement(textField); 

    staticText = new JRDesignStaticText(); 
    staticText.setX(0); 
    staticText.setY(20); 
    staticText.setWidth(60); 
    staticText.setHeight(20); 
    staticText.setMode(ModeEnum.OPAQUE); 
    staticText.setHorizontalAlignment(HorizontalAlignEnum.LEFT); 
    staticText.setStyle(boldStyle); 
    staticText.setText("Name: "); 
    staticText.getLineBox().getLeftPen().setLineWidth(1); 
    staticText.getLineBox().getBottomPen().setLineWidth(1); 
    staticText.getLineBox().setLeftPadding(10); 
    band.addElement(staticText); 


    textField = new JRDesignTextField(); 
    textField.setStretchWithOverflow(true); 
    textField.setX(60); 
    textField.setY(20); 
    textField.setWidth(200); 
    textField.setHeight(20); 
    textField.setPositionType(PositionTypeEnum.FLOAT); 
    textField.setStyle(normalStyle); 
    expression = new JRDesignExpression(); 
    expression.setValueClass(java.lang.String.class); 
    expression.setText("$F{FirstName} + \" \" + $F{LastName}"); 
    textField.setExpression(expression); 
    textField.getLineBox().getRightPen().setLineWidth(1); 
    textField.getLineBox().getBottomPen().setLineWidth(1); 
    textField.getLineBox().setLeftPadding(10); 
    band.addElement(textField); 

    ((JRDesignSection) jasperDesign.getDetailSection()).addBand(band); 

Kết quả sẽ là:

enter image description here

này là gần như giống hệt nhau để này đoạn mã của jrxml tệp:

<detail> 
    <band height="40" splitType="Stretch"> 
     <staticText> 
      <reportElement x="0" y="0" width="60" height="20"/> 
      <box leftPadding="10"> 
       <topPen lineWidth="1.0"/> 
       <leftPen lineWidth="1.0"/> 
      </box> 
      <textElement/> 
      <text><![CDATA[ID: ]]></text> 
     </staticText> 
     <textField> 
      <reportElement x="60" y="0" width="200" height="20"/> 
      <box leftPadding="10"> 
       <topPen lineWidth="1.0"/> 
       <rightPen lineWidth="1.0"/> 
      </box> 
      <textElement/> 
      <textFieldExpression><![CDATA[$F{Id}]]></textFieldExpression> 
     </textField> 
     <staticText> 
      <reportElement x="0" y="20" width="60" height="20"/> 
      <box leftPadding="10"> 
       <leftPen lineWidth="1.0"/> 
       <bottomPen lineWidth="1.0"/> 
      </box> 
      <textElement/> 
      <text><![CDATA[Name: ]]></text> 
     </staticText> 
     <textField> 
      <reportElement x="60" y="20" width="200" height="20"/> 
      <box leftPadding="10"> 
       <bottomPen lineWidth="1.0"/> 
       <rightPen lineWidth="1.0"/> 
      </box> 
      <textElement/> 
      <textFieldExpression><![CDATA[$F{FirstName} + " " + $F{LastName}]]></textFieldExpression> 
     </textField> 
    </band> 
</detail> 
Các vấn đề liên quan