2014-11-18 4 views
1

Я пытаюсь заблокировать столбец/ячейку на листе excel, который создан из Jasper iReport, потому что наш клиент не хочет, чтобы пользователь мог обновить формулу , Я не смог многое найти по этому поводу.Блокировка/защита ячейки или столбца в Jasper iReport

Я добавил заблокированное свойство, которое я нашел в ссылке на конфигурацию (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" /> 

С всем листом, защищенным, я попытался добавить заблокированный набор свойств лжи для полей, которые должны быть обновляемыми. Но я все еще не мог их обновить, поскольку весь лист был защищен.

Любые идеи о том, как защитить некоторые ячейки или столбцы, а не другие?

ответ

1

Я столкнулся с тем же вопросом вчера в студии jaspersoft. Может быть, я опоздал, и вы уже решили это самостоятельно. В этом случае, чтобы помочь другим, подобным нам, вот способ сделать это.

Кажется, что после того, как мы установили пароль на уровне листа, все ячейки по умолчанию заблокированы (по-другому, это кажется очевидным). Итак, если мы хотим разблокировать ячейку, мы должны указать явно.

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

Таким образом, приведенный ниже код будет производить лист первенствовать, где «Статический текст» клетка будет заперта и «Статический Text22» клетка будет разблокирован. Надеюсь, этот пример поможет другим, и им не придется обойти его, как я.

<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> 
+0

Спасибо! Просто попробовал, и это сработало для меня. В моем вопросе звучит так, будто я пробовал это, но я понятия не имею, что я делаю неправильно! – jem

Смежные вопросы