1

クライアントがユーザーが数式を更新できないようにするため、Jasper iReport から作成された Excel シートの列/セルをロックしようとしています。私はこれについて多くを見つけることができませんでした。

config リファレンス ( 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>

構成リファレンスには、「囲んでいるシートが保護されている場合にのみ効果がある」という設定も記載されています。password プロパティを使用してシートにパスワードを追加しましたが、これによりシート全体が保護されてしまいます。

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

シート全体を保護した状態で、更新可能にする必要があるフィールドに対して、locked プロパティを false に設定して追加してみました。しかし、シート全体が保護されていたため、まだ更新できませんでした。

一部のセルまたは列を保護し、他のセルまたは列を保護しない方法についてのアイデアはありますか?

4

1 に答える 1

1

昨日jaspersoft studioで同じ問題に直面していました。手遅れかもしれませんが、あなたはすでにこれを自分で解決しています。その場合、私たちのような他の人を助けるために、ここにそれを行う方法があります.

シート レベルでパスワードを設定すると、デフォルトですべてのセルがロックされているようです (よく考えてみると、これは明らかなようです)。したがって、セルのロックを解除したい場合は、明示的に言及する必要があります。

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

したがって、以下のコードは、「Static Text」セルがロックされ、「Static Text22」セルがロック解除される Excel シートを生成します。この例が他の人に役立ち、私のようにぐるぐる回る必要がないことを願っています.

<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>
于 2015-04-16T04:12:06.777 に答える