在Jasper iReport中锁定/保护单元格或列

时间:2014-11-18 16:31:22

标签: jasper-reports protected locked

我正在尝试锁定从Jasper iReport创建的Excel工作表中的列/单元格,因为我们的客户端不希望用户能够更新公式。我在这方面找不到多少。

我添加了在配置引用(http://jasperreports.sourceforge.net/config.reference.html#net.sf.jasperreports.export.xls.cell.locked)中找到的锁定属性,但它不会阻止在导出的工作表上编辑列中的单元格。

<jr:column width="100">
    <jr:detailCell style="table" height="20" rowSpan="1">
        <textField>
            <reportElement style="table" x="0" y="0" width="100" height="20">
                <property name="net.sf.jasperreports.export.xls.formula" value="INDIRECT(ADDRESS(ROW(),4))"/>
                <property name="net.sf.jasperreports.export.xls.cell.locked" value="true"/>
            </reportElement>
        </textField>
    </jr:detailCell>
</jr:column>

配置参考还表示设置“仅在封闭纸张受保护时才有效”。我使用密码属性为工作表添加了密码,但这会导致整个工作表受到保护。

<property name="net.sf.jasperreports.export.xls.password" value="password" />

在整个工作表受到保护的情况下,我尝试将需要可更新的字段的locked属性设置为false。但由于整张表都受到保护,我仍然无法更新它们。

关于如何保护某些细胞或柱而不是其他细胞或柱的任何想法?

1 个答案:

答案 0 :(得分:1)

我昨天在jaspersoft工作室遇到了同样的问题。可能是我太晚了,你已经解决了这个问题。在这种情况下,只是为了帮助像我们这样的人,这是实现目标的方法。

似乎一旦我们在工作表级别设置了密码,默认情况下所有单元格都被锁定(第二个想法,这似乎很明显)。所以,如果我们要解锁一个单元格,我们必须明确提及。

<property name="net.sf.jasperreports.export.xls.cell.locked" value="false"/>

因此,下面的代码将生成一个excel表,其中&#34; 静态文本&#34;单元格将被锁定并且&#34; 静态文字22 &#34;细胞将被解锁。希望这个例子可以帮助别人,他们不必像我一样四处转转。

<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="Blank_A4" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="3bff4add-3bc7-49b8-acd4-0ec822191576">
<property name="com.jaspersoft.studio.data.defaultdataadapter" value="One Empty Record"/>
<property name="net.sf.jasperreports.export.xls.password" value="test_password"/>
<queryString>
<![CDATA[]]>
</queryString>
<background>
<band splitType="Stretch"/>
</background>
<title>
<band height="79" splitType="Stretch">
<staticText>
<reportElement x="123" y="2" width="100" height="30" uuid="c9f7abf8-2ed4-44c3-abf5-84fda5d190f4"/>
<text><![CDATA[Static Text]]></text>
</staticText>
<staticText>
<reportElement x="223" y="2" width="100" height="30" uuid="d95b84d7-5d1b-4919-b4f0-82a30c9effd6">
<property name="net.sf.jasperreports.export.xls.cell.locked" value="false"/>
</reportElement>
<text><![CDATA[Static Text22]]></text>
</staticText>
</band>
</title>
</jasperReport>