首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在jasperreports中添加表边框

在 JasperReports 中添加表格边框可以通过设置表格单元格(JRDesignCell)和表格元素(JRDesignElement)的边框属性来实现。以下是一个详细的步骤指南,帮助你在 JasperReports 中为表格添加边框。

1. 使用 iReport 或 Jaspersoft Studio

如果你使用的是 iReport 或 Jaspersoft Studio 设计报表,可以通过图形界面轻松设置表格边框。

1.1 打开报表设计器

  1. 打开 iReport 或 Jaspersoft Studio。
  2. 打开你要编辑的报表文件(.jrxml)。

1.2 添加表格元素

  1. 在报表设计器中,找到 "Palette" 面板。
  2. 拖动 "Table" 元素到报表设计区域。

1.3 配置表格单元格

  1. 选择表格中的单元格(例如,表头单元格或数据单元格)。
  2. 在 "Properties" 面板中,找到 "Borders" 选项。
  3. 设置边框的样式、颜色和宽度。

2. 手动编辑 JRXML 文件

如果你更喜欢手动编辑 JRXML 文件,可以直接在 XML 中设置边框属性。

2.1 示例 JRXML 代码

以下是一个示例 JRXML 代码,展示了如何为表格单元格添加边框。

代码语言:javascript
复制
<?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="SampleReport" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="12345678-1234-1234-1234-123456789012">

    <detail>
        <band height="50">
            <componentElement>
                <reportElement x="0" y="0" width="555" height="50"/>
                <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">
                    <jr:column>
                        <jr:columnHeader>
                            <jr:box>
                                <jr:pen lineWidth="1.0" lineColor="#000000"/>
                            </jr:box>
                            <jr:textField>
                                <reportElement x="0" y="0" width="100" height="20"/>
                                <textElement>
                                    <font size="12" isBold="true"/>
                                </textElement>
                                <textFieldExpression><![CDATA["Header 1"]]></textFieldExpression>
                            </jr:textField>
                        </jr:columnHeader>
                        <jr:detailCell>
                            <jr:box>
                                <jr:pen lineWidth="1.0" lineColor="#000000"/>
                            </jr:box>
                            <jr:textField>
                                <reportElement x="0" y="0" width="100" height="20"/>
                                <textFieldExpression><![CDATA[$F{field1}]]></textFieldExpression>
                            </jr:textField>
                        </jr:detailCell>
                    </jr:column>
                    <!-- 其他列定义 -->
                </jr:table>
            </componentElement>
        </band>
    </detail>
</jasperReport>

2.2 解释

  1. <jr:box> 元素:用于定义单元格的边框。
    • <jr:pen> 元素:用于设置边框的宽度和颜色。
      • lineWidth 属性:设置边框的宽度。
      • lineColor 属性:设置边框的颜色。
  2. <jr:columnHeader><jr:detailCell> 元素:分别定义表头单元格和数据单元格的边框。

3. 动态生成报表

如果你是通过 Java 代码动态生成报表,可以使用 JasperReports API 设置单元格的边框。

3.1 示例 Java 代码

以下是一个示例 Java 代码,展示了如何动态生成带有边框的表格。

代码语言:javascript
复制
import net.sf.jasperreports.engine.*;
import net.sf.jasperreports.engine.design.*;
import net.sf.jasperreports.engine.type.*;

public class JasperReportExample {
    public static void main(String[] args) throws JRException {
        // 创建 JasperDesign 对象
        JasperDesign jasperDesign = new JasperDesign();
        jasperDesign.setName("SampleReport");
        jasperDesign.setPageWidth(595);
        jasperDesign.setPageHeight(842);
        jasperDesign.setColumnWidth(555);
        jasperDesign.setLeftMargin(20);
        jasperDesign.setRightMargin(20);
        jasperDesign.setTopMargin(20);
        jasperDesign.setBottomMargin(20);

        // 创建 Detail Band
        JRDesignBand detailBand = new JRDesignBand();
        detailBand.setHeight(50);
        jasperDesign.setDetail(detailBand);

        // 创建 Table
        JRDesignComponentElement tableElement = new JRDesignComponentElement();
        tableElement.setX(0);
        tableElement.setY(0);
        tableElement.setWidth(555);
        tableElement.setHeight(50);

        JRDesignTable table = new JRDesignTable();
        tableElement.setComponent(table);

        // 创建列
        JRDesignColumn column = new JRDesignColumn();
        column.setWidth(100);

        // 创建列头单元格
        JRDesignCell headerCell = new JRDesignCell();
        headerCell.setWidth(100);
        headerCell.setHeight(20);

        JRDesignBox headerBox = new JRDesignBox();
        JRDesignPen headerPen = new JRDesignPen();
        headerPen.setLineWidth(1f);
        headerPen.setLineColor(Color.BLACK);
        headerBox.setPen(headerPen);
        headerCell.setBox(headerBox);

        JRDesignTextField headerTextField = new JRDesignTextField();
        headerTextField.setX(0);
        headerTextField.setY(0);
        headerTextField.setWidth(100);
        headerTextField.setHeight(20);
        headerTextField.setExpression(new JRDesignExpression("\"Header 1\""));
        headerCell.addElement(headerTextField);

        column.setColumnHeader(headerCell);

        // 创建数据单元格
        JRDesignCell detailCell = new JRDesignCell();
        detailCell.setWidth(100);
        detailCell.setHeight(20);

        JRDesignBox detailBox = new JRDesignBox();
        JRDesignPen detailPen = new JRDesignPen();
        detailPen.setLineWidth(1f);
        detailPen.setLineColor(Color.BLACK);
        detailBox.setPen(detailPen);
        detailCell.setBox(detailBox);

        JRDesignTextField detailTextField = new JRDesignTextField();
        detailTextField.setX(0);
        detailTextField.setY(0);
        detailTextField.setWidth(100);
        detailTextField.setHeight(20);
        detailTextField.setExpression(new JRDesignExpression("$F{field1}"));
        detailCell.addElement(detailTextField);

        column.setDetailCell(detailCell);

        table.addColumn(column);

        detailBand.addElement(tableElement);

        // 编译报表
        JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);

        // 填充报表
        JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, new HashMap<>(), new JREmptyDataSource());

        // 导出报表
        JasperExportManager.exportReportToPdfFile(jasperPrint, "SampleReport.pdf");
    }
}

解释

  1. 创建 JasperDesign 对象:定义报表的基本属性。
  2. 创建 Detail Band:添加一个 Detail Band 到报表设计中。
  3. 创建 Table 元素:定义表格及其列、列头单元格和数据单元格。
  4. 设置单元格边框:使用 JRDesignBoxJRDesignPen 设置单元格的边框属性。
  5. 编译和填充报表:编译报表设计并填充数据。
  6. 导出报表:将报表导出为 PDF 文件。
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

边框检测 Python 的应用

游戏开发,我们经常会回使用到边框检测。我们知道,边框检测是计算机视觉中常用的技术,用于检测图像的边界和轮廓。Python,可以使用OpenCV库来实现边框检测。具体是怎么实现的?...以下是一个简单的示例代码,演示如何在Python中使用OpenCV进行边框检测:1、问题背景:用户试图编写一个程序,该程序要求用户输入一个数字,然后屏幕上绘制相应数量的矩形。然而,这些矩形不能重叠。...可以通过将违规坐标设置为其中一个角的坐标,然后添加或减去一定数值来实现。也可以基于修改后的点重新生成违规矩形,或者将所有点与违规点等距离地移动。这可能是最好的选择,除非对随机原则非常严格。...边框检测图像处理、目标检测和计算机视觉领域有着广泛的应用,能够帮助识别物体的形状、边界和结构。通过使用OpenCV库,可以方便地实现边框检测功能。...所以说边框检测实际应用是很重要的,如有任何疑问可以评论区留言讨论。

16710

Excel实战技巧98:使用VBA工作添加ActiveX控件

要使用VBA从控件工具箱(ActiveX控件)添加控件,可以使用OLEObjects集合的Add方法。...Forms.Optionbutton.1(选项按钮) Forms.Textbox.1(文本框) Forms.Listbox.1(列表框) Forms.Commandbutton.1(命令按钮) 下面通过一个例子,提供在工作添加...如下图1所示,要求每项工作前面都添加复选框,并且当用户选中复选框后,自动隐藏该复选框所在的行。 ?...图1 下面的代码用来工作添加复选框: Sub RefreshList() Dim oCheck As OLEObject Dim rCell As Range, rRange As...接下来,确定数据范围后,第一列添加复选框并设置了一些属性值以方便以后操作。这里,有一些通用的适合于其他控件的属性,也有一些专属于复选框的属性。

5.2K10

Xcode 添加 Swift package 依赖

如果开发人员正确遵循 SemVer,则他们应该: 只要不破坏任何API或添加功能,就可以修复错误时更改补丁号。 当他们添加不会破坏任何API的功能时,请更改次版本号。 更改API时更改主版本号。...要尝试,请打开 ContentView.swift 并将此导入添加到顶部: import SamplePackage 是的,外部依赖关系现在是一个模块,我们可以需要的任何地方导入它。...Swift这只需要一行代码,因为序列具有map()方法,通过将函数应用于每个元素,我们可以将一种类型的数组转换为另一种类型的数组。...我们的例子,我们希望从每个整数初始化一个新的字符串,因此我们可以将String.init用作要调用的函数。...现在将此最后一行添加到属性: return strings.joined(separator: ", ") 这就完成了我们的代码:文本视图将显示结果的值,该结果将继续并选择随机数,对其进行排序,将它们进行字符串化

6.5K10

Java PDF 添加表单域

PDF表单域是指用户PDF文件可以自主进行填写、选择等操作的区域,其主要目的是采集用户输入或选择的数据。常见的表单域包括文本框、单选按钮、复选框、列表框和组合框等。...文本将介绍如何使用 Free Spire.PDF for JavaJava程序创建PDF表单域。...Jar包导入 方法一:下载Free Spire.PDF for Java包并解压缩,然后将lib文件夹下的Spire.Pdf.jar包作为依赖项导入到Java应用程序 方法二:直接通过Maven仓库安装...; //文本框前的文字 page.getCanvas().drawString(text, font, brush1, new Point2D.Float(0, baseY)); //PDF...绘制文字 Rectangle2D.Float tbxBounds = new Rectangle2D.Float(baseX, baseY , 150, 15); //创建Rectangle2D

3.8K30

PowerBI创建时间(非日期

powerquery创建日期是使用powerbi过程中一个必不可少的内容(当然,你也可以使用DAX来创建): Power BI创建日期的几种方式概览 但是很多时候我们进行数据分析时,只有日期是不够的...,某些行业,我们不仅要对年、季度月、周、日等维度进行分析,我们可能还需要对分钟、小时、15分钟、5分钟等进行划分维度并分析。...有朋友会说,日期添加一个时间列就完了,不过,如果你真的直接把时间添加在日期上,你就会发现组合结果的庞大。假设日期包括每天一条记录,其中包含 10 年的数据,也即是有3650行数据。...3亿行对于一个维度来说,太过于huge。哪怕只保留到分钟,仍然会超过 500 万行,很显然是不合适的。 因此呢,不要合并日期和时间。这两个应该是两个不同的,并且它们都可以与事实建立关系。...添加办法也很简单,powerquery添加空白查询,然后打开高级查询编辑器,输入以下代码: ? 点击完成即可。

4.3K10

Excel公式嵌入查找

标签:Excel公式 通常,我们会在工作中放置查找,然后使用公式查找相对应的值。然而,这也存在风险,就是用户可能会在删除行时无意识地将查找的内容也删除,从而导致查找错误。...如下图1所示,将查找放置列AA和列BB。 图1 如下图2所示,查找查找列A的值并返回相应的结果。...图2 此时,如果我们删除行,而这些删除的行刚好在查找数据所在的行,那么就破坏了查找。那么,该怎么避免这种情况呢? 一种解决方法是另一个工作中放置查找,然后隐藏该工作。...然而,如果查找的数据不多,正如上文示例那样,那么可以将查找嵌入到公式。 如下图3所示,选择公式中代表查找所在单元格区域的字符。...如果不好理解,你可以直接将其复制到工作。 按Ctrl+C键复制花括号内容后,工作中选择5行2列区域,输入=号,按Ctrl+V键,再按Ctrl+Shift+Enter组合键,结果如下图6所示。

23430

如何在MySQL现有添加自增ID?

当在MySQL数据库,自增ID是一种常见的主键类型,它为的每一行分配唯一的标识符。某些情况下,我们可能需要在现有的MySQL添加自增ID,以便更好地管理和索引数据。...本文中,我们将讨论如何在MySQL现有添加自增ID,并介绍相关的步骤和案例。图片创建新的自增ID列添加自增ID列是现有添加自增ID的一种常见方法。...案例研究:现有添加自增ID假设我们有一个名为customers的,现在我们想要在该添加自增ID列以便更好地管理数据。...数据一致性:添加自增ID列可能需要对现有数据进行更新操作,确保进行更新之前备份数据,并小心处理可能出现的冲突或错误。结论本文中,我们讨论了如何在MySQL现有添加自增ID。...通过合理地添加自增ID列,我们可以更好地管理和索引MySQL的数据,提高数据的查询效率和一致性。请记住,进行任何操作之前,请备份数据并谨慎处理。

1.2K20

链表----链表添加元素详解

1.2对于链表来说,若想访问链表每个节点则需要把链表的头存起来,假如链表的头节点为head,指向链表第一个节点,如图: ?...2.2 如在链表头添加一个666元素则需要先将666放进一个节点里,节点里存入这个元素以及相应的next。 ?...2.3 链表头添加新元素的相关代码 //链表头添加新的元素e public void addFirst(E e) { Node node = new Node(e);...从上不难看出,对于链表添加元素关键是找到要添加的节点的前一个节点,因此对于索引为0的节点添加元素就需要单独处理。...关于链表中间添加元素的代码: //链表的index(0--based)的位置添加新的元素e (实际不常用,练习用) public void add(int index, E e)

2.7K30
领券