2011-11-11 1 views
1

Jasper Report 출력을 xls에서 xlsx로 변경했을 때 파일 보호와 관련된 문제가 있습니다.XLSX를 출력으로 사용할 때 Jasper Generated Report를 보호하는 방법은 무엇입니까?

XLSX는 XLS에 비해 더 큰 행 (최대 1.000.000)을 지원할 수 있으므로 변경해야합니다.

문제는 보고서를 보호해야한다는 것입니다. 재스퍼 구성

<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

를 사용하여이 기능을 지원하지만, 이것은 출력이 XLSX 때, 나는 그런 XLSX하는 XLS에서 변화와 같은 사소한 사용하려고 작동하지 않기 때문에 이것은 쉬운 일입니다 결과는 동일하게 유지됩니다.

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

어떻게 출력으로 XLSX를 사용하는 경우 재스퍼 보고서를 생성 보호하기 위해?

답변

1

JExcelApiExporterJExcelApiMetadataExporter 클래스는 net.sf.jasperreports.export.xls.password 속성을 사용 (JR의 소스 코드에 파고 후) 자신을 만들 수있다. 그리고이 두 수출업자 (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을 사용합니다.

관련 문제