2011-11-11 19 views
1

Jasper Report出力をxlsからxlsxに変更したときにファイル保護に関連する問題があります。出力としてXLSXを使用しているときにJasper Generated Reportを保護する方法は?

XLSXはXLSに比べて大きな行(最大1.000.000)をサポートできるため、変更が必要です。

問題は、レポートを保護する必要があることです。ジャスパーの設定は、私がXLSXとするXLSからそのような変更など些細な使用しようとすると、出力はXLSXとき

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

http://jasperforge.org/uploads/publish/jasperreportswebsite/trunk/config.reference.html#net.sf.jasperreports.export.xls.password

しかし、これは動作しませんを使用してこれをサポートするため、これは簡単な作業です結果は同じままです。

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

出力としてXLSXを使用する場合、Jasper Generated Reportを保護するにはどうすればよいですか?あなただけJExcelApiExporterJExcelApiMetadataExporterクラスはnet.sf.jasperreports.export.xls.passwordプロパティを使用(JRのソースコードに掘った後)自分で作ることができたよう

答えて

1

。そして、この2人の輸出者(JRXlsxExporterではなく、JRXlsExporterでなく)だけがパスワードを設定できます。

net.sf.jasperreports.engine.export.JExcelApiExporterからの抜粋:

protected void setParameters() 
{ 
    super.setParameters(); 

    if (createCustomPalette) 
    { 
     initCustomPalette(); 
    } 

    password = 
     getStringParameter(
      JExcelApiExporterParameter.PASSWORD, 
      JExcelApiExporterParameter.PROPERTY_PASSWORD 
      ); 

... 

} 

private final void setSheetSettings(WritableSheet sheet) 
{ 
    PageOrientation po; 
    PaperSize ps; 

    if (jasperPrint.getOrientationValue() == OrientationEnum.PORTRAIT) 
    { 
     po = PageOrientation.PORTRAIT; 
    } 
    else 
    { 
     po = PageOrientation.LANDSCAPE; 
    } 
    if ((ps = getSuitablePaperSize(jasperPrint)) != null) 
    { 
     sheet.setPageSetup(po, ps, 0, 0); 
    } 
    else 
    { 
     sheet.setPageSetup(po); 
    } 
    SheetSettings sheets = sheet.getSettings(); 
    ... 
    if(password != null) 
    { 
     sheets.setPassword(password); 
     sheets.setProtected(true); 
    } 
... 
} 

あなたがあなた自身のXlsxExporterを書くことができます。

JRXLSExporterはPOI libraryを使用し、JExcelApiExporterはJExcelApiを使用します。

関連する問題