2012-11-05 7 views
0

에서 수행 된 PDF 보고서에서 URL을 찾아보세요되어 아래의이 PDF 보고서의 스타일을 정의 할 필요가 ... Pdf Report서식 내가 XSL 파일 그리고 XSL 파일에 의해 형성된다 아래의 PDF 보고서를 XSL

사용

XSL 파일은 ..

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet version="1.1" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:set="http://exslt.org/sets" extension-element-prefixes="set" exclude-result-prefixes="fo"> 
    <xsl:output method="xml" version="1.0" omit-xml-declaration="no" indent="yes"/> 
    <xsl:template match="/"> 
    <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"> 
     <fo:layout-master-set> 
     <fo:simple-page-master master-name="A4" page-width="21cm" page-height="29.7cm" margin-top="2cm" margin-bottom="1cm" margin-left="1cm" margin-right="1cm"> 
      <fo:region-body margin-bottom="2cm" margin-top="4cm"/> 
      <fo:region-after extent="2cm"/> 
      <fo:region-before extent="4cm"/> 
     </fo:simple-page-master> 
       </fo:layout-master-set> 
     <fo:page-sequence master-reference="A4" initial-page-number="1"> 
     <fo:static-content flow-name="xsl-region-after"> 
      <fo:block border-bottom-style="solid" 
           text-align="left" font-size="9pt" > 
       </fo:block> 
      <fo:block font-size="9pt" text-align="end"> 
      <fo:table table-layout="fixed"> 
       <fo:table-column column-width="9.5cm"/> 
       <fo:table-column column-width="9.5cm"/> 
       <fo:table-body> 
       <fo:table-row> 
         <fo:table-cell 
             text-align="center"> 
        <fo:block text-align="left"> 
              Run: 
            <xsl:value-of select="substring( DepartmentSalesReport/CurrentDate , 6, 2)" /> 
             /
            <xsl:value-of select="substring( DepartmentSalesReport/CurrentDate , 9, 2)" /> 
             /
            <xsl:value-of select="substring( DepartmentSalesReport/CurrentDate , 1, 4)" /> 
             @ 
            <xsl:value-of select="DepartmentSalesReport/currentTime" /> 
             </fo:block> 
          </fo:table-cell> 
        <fo:table-cell text-align="right"> 
        <!--fo:block space-before="8mm"> 
         <xsl:text>Keep this report for 6 months</xsl:text> 
        </fo:block--> 
        </fo:table-cell> 
        <fo:table-cell > 
        <fo:block space-before="8mm">Page <fo:page-number/> of <fo:page-number-citation ref-id="terminator"/></fo:block> 
        </fo:table-cell> 
       </fo:table-row> 
       </fo:table-body> 
      </fo:table> 

      </fo:block> 
     </fo:static-content> 

     <fo:static-content flow-name="xsl-region-before"> 
      <fo:block text-align-last="center" space-after="1.5cm"> 
      <fo:table table-layout="fixed"> 
       <fo:table-column column-width="4cm"/> 
       <fo:table-column column-width="10cm"/> 
       <fo:table-column column-width="2cm"/> 
       <fo:table-column column-width="2cm"/> 
       <fo:table-body> 
       <fo:table-row> 
        <fo:table-cell font-size="9pt"> 
        <fo:block>Store Number: 
         <xsl:value-of select="DepartmentSalesReport/store_code"/> 
        </fo:block> 
        </fo:table-cell> 
        <fo:table-cell text-align="center"> 
          <fo:block text-align-last="center" font-size="14pt" font-weight="bold" space-after="1mm"> 
           <fo:inline text-decoration="underline">Department Sales Report</fo:inline> 
           </fo:block> 
        </fo:table-cell> 
        <fo:table-cell text-align="right" font-size="9pt"> 
        <fo:block > 
         <xsl:value-of select="DepartmentSalesReport/tradingday"/> 
        </fo:block> 
        </fo:table-cell> 
        <fo:table-cell text-align="right" font-size="9pt"> 
        <xsl:variable name="date"><xsl:value-of select="DepartmentSalesReport/tradingdate"/></xsl:variable> 
        <fo:block> 
         <xsl:value-of select="substring($date,5,2)"/>/<xsl:value-of select="substring($date,7,2)"/>/<xsl:value-of select="substring($date,1,4)"/> 
        </fo:block> 
        </fo:table-cell> 
       </fo:table-row> 
       </fo:table-body> 
      </fo:table> 
      <fo:table table-layout="fixed"> 
       <fo:table-column column-width="19cm"/> 
      <fo:table-body> 
       <fo:table-row> 
        <fo:table-cell text-align="center"> 
             <fo:block text-align-last="center" font-size="9pt" > 
             Summary of Sales by department, only those 
              departments with activity (Sales, 
              refunds, voids) will appear on this 
              report.Use this report to monitor sales in 
              key departments and make merchandising 
              decisions as needed. 
          </fo:block> 
        </fo:table-cell> 
       </fo:table-row> 
       </fo:table-body> 
      </fo:table> 
      </fo:block> 
      <fo:block font-size="9pt" > 
      <fo:table table-layout="fixed" > 
          <fo:table-column 
           column-width="1.6cm" /> 
          <fo:table-column 
           column-width="6cm" 
           text-align="center"/> 
          <fo:table-column 
           column-width="1.6cm" /> 
          <fo:table-column 
           column-width="1.6cm" /> 
          <fo:table-column 
           column-width="1.8cm" 
           text-align="center"/> 
          <fo:table-column 
           column-width="1.6cm" /> 
          <fo:table-column 
           column-width="1.6cm" /> 
          <fo:table-column 
           column-width="1.6cm" 
           text-align="center"/> 
          <fo:table-column 
           column-width="1.6cm" /> 
          <fo:table-body> 
          <fo:table-row> 
          <fo:table-cell number-columns-spanned="9"> <fo:block color="black" 
         space-before.optimum="-8pt"> 
         <fo:block border-bottom-style="solid" 
           text-align="left" font-size="9pt" /> 

        </fo:block></fo:table-cell> 
          </fo:table-row> 
          <fo:table-row font-weight="bold"> 
           <fo:table-cell number-columns-spanned="2"> 
          <fo:block text-align="left"><xsl:text>-------------------------Department-------------------</xsl:text></fo:block> 
          </fo:table-cell> 
          <fo:table-cell number-rows-spanned="2"> 
          <fo:block text-align="right"><xsl:text>Net Sales</xsl:text></fo:block> 
          </fo:table-cell> 
          <fo:table-cell number-rows-spanned="2"> 
          <fo:block text-align="right"><xsl:text>Qty</xsl:text></fo:block> 
          </fo:table-cell> 
          <fo:table-cell number-rows-spanned="2"> 
          <fo:block text-align="right"><xsl:text>% of Sales</xsl:text></fo:block> 
          </fo:table-cell> 
          <fo:table-cell number-columns-spanned="2"> 
          <fo:block text-align="right"><xsl:text>--------Void--------</xsl:text></fo:block> 
          </fo:table-cell> 
           <fo:table-cell number-columns-spanned="2"> 
          <fo:block text-align="right"><xsl:text>-------Return-------</xsl:text></fo:block> 
          </fo:table-cell>   
           </fo:table-row> 
           <fo:table-row font-weight="bold"> 
            <fo:table-cell> 
              <fo:block text-align="left"> 
               <xsl:text>#</xsl:text> 
              </fo:block> 
             </fo:table-cell> 
             <fo:table-cell> 
              <fo:block text-align="left"> 
               <xsl:text>Description</xsl:text> 
              </fo:block> 
             </fo:table-cell> 
             <fo:table-cell> 
              <fo:block text-align="right"> 
               <xsl:text>Qty</xsl:text> 
              </fo:block> 
             </fo:table-cell> 
             <fo:table-cell> 
              <fo:block text-align="right"> 
               <xsl:text>Amount</xsl:text> 
              </fo:block> 
             </fo:table-cell> 
             <fo:table-cell> 
              <fo:block text-align="right"> 
               <xsl:text>Qty</xsl:text> 
              </fo:block> 
             </fo:table-cell> 
             <fo:table-cell> 
              <fo:block text-align="right"> 
               <xsl:text>Amount</xsl:text> 
              </fo:block> 
             </fo:table-cell> 
           </fo:table-row> 
        <fo:table-row > 
          <fo:table-cell number-columns-spanned="9" > <fo:block color="black" 
         space-before.optimum="-8pt"> 

        </fo:block></fo:table-cell> 
          </fo:table-row> 

          </fo:table-body> 
          </fo:table> 
      </fo:block> 
      <fo:block border-bottom-style="solid" 
           text-align="left" font-size="9pt" /> 



    </fo:static-content> 


     <fo:flow flow-name="xsl-region-body"> 
     <xsl:variable name="storeSales" select="sum(DepartmentSalesReport/DepartmentDesc/netSales)"/> 
     <br/> 
      <!--   <fo:block font-size="9pt" space-after="3mm" break-before="page">--> 
      <xsl:for-each select="DepartmentSalesReport/DepartmentDesc"> 
        <fo:block font-size="9pt" space-after="1mm"> 
        <fo:table table-layout="fixed" > 
          <fo:table-column 
           column-width="1.6cm" /> 
          <fo:table-column 
           column-width="6cm" 
           text-align="center"/> 
          <fo:table-column 
           column-width="1.6cm" /> 
          <fo:table-column 
           column-width="1.6cm" /> 
          <fo:table-column 
           column-width="1.8cm" /> 
          <fo:table-column 
           column-width="1.6cm" /> 
          <fo:table-column 
           column-width="1.6cm" /> 
          <fo:table-column 
           column-width="1.6cm" 
           text-align="center"/> 
          <fo:table-column 
           column-width="1.6cm" /> 
        <fo:table-body> 
         <xsl:variable name="levelNo"><xsl:value-of select="levelNbr"/></xsl:variable> 
           <xsl:variable name="levelCheck"><xsl:value-of select="level"/></xsl:variable> 
           <xsl:if test="$levelCheck!=''"> 
            <xsl:if test="$levelNo='2'"> 
            <fo:table-row> 
            <fo:table-cell number-columns-spanned="9"> 
            <fo:block> 
              <xsl:text>&#160;</xsl:text> 
            </fo:block> 
            </fo:table-cell> 
            </fo:table-row> 
           </xsl:if> 
        <fo:table-row > 
             <fo:table-cell> 
              <fo:block text-align="left"> 
               <xsl:value-of select="level"/> 
              </fo:block> 
             </fo:table-cell> 

             <xsl:choose> 
             <xsl:when test="$levelNo!='2'"> 
             <fo:table-cell> 
              <fo:block text-align="left"> 
               <xsl:value-of select="prgpName"/> 
              </fo:block> 
             </fo:table-cell> 
              </xsl:when> 
             <xsl:otherwise> 
              <fo:table-cell> 
               <fo:block text-align="left"> 
                ***DEPT TOTAL*** </fo:block> 
              </fo:table-cell> 
             </xsl:otherwise> 
              </xsl:choose> 
             <fo:table-cell> 
              <fo:block text-align="right"> 
               <xsl:value-of 
                select="format-number(netSales,'0.00')"/> 
              </fo:block> 
             </fo:table-cell> 
             <fo:table-cell> 
              <fo:block text-align="right"> 
               <xsl:value-of 
                select="format-number(prodCount,'0')"/> 
              </fo:block> 
             </fo:table-cell> 


             <fo:table-cell> 
              <xsl:variable name="salesPercentage"><xsl:value-of select="format-number((netSales div $storeSales)*100, '###,##0')"/></xsl:variable> 
              <xsl:if test="$salesPercentage='NaN'"> 
              <fo:block text-align="right"> 
               <xsl:text>0</xsl:text> 
              </fo:block> 
              </xsl:if> 
              <xsl:if test="$salesPercentage!='NaN'"> 
              <fo:block text-align="right"> 
               <xsl:value-of 
                select="$salesPercentage"/> 
              </fo:block> 
              </xsl:if> 
             </fo:table-cell> 
             <fo:table-cell> 
              <fo:block text-align="right"> 
               <xsl:value-of 
                select="format-number(postVoidQuantity,'0')"/> 
              </fo:block> 
             </fo:table-cell> 
             <fo:table-cell> 
              <fo:block text-align="right"> 
               <xsl:value-of 
                select="format-number(postVoidAmount,'0.00')"/> 
              </fo:block> 
             </fo:table-cell> 
             <fo:table-cell> 
              <fo:block text-align="right"> 
               <xsl:value-of 
                select="format-number(returnQuantity,'0')"/> 
              </fo:block> 
             </fo:table-cell> 
             <fo:table-cell> 
              <fo:block text-align="right"> 
               <xsl:value-of 
                select="format-number(returnAmount,'0.00')"/> 
              </fo:block> 
             </fo:table-cell> 
            </fo:table-row> 
         <xsl:if test="$levelNo='2'"> 
            <fo:table-row> 
            <fo:table-cell number-columns-spanned="9"> 
            <fo:block> 
              <xsl:text>&#160;</xsl:text> 
            </fo:block> 
            </fo:table-cell> 
            </fo:table-row> 
           </xsl:if> 
            </xsl:if> 
        </fo:table-body> 

        </fo:table> 
       </fo:block> 

      </xsl:for-each> 
     <fo:block border-bottom-style="solid" 
           text-align="left" font-size="9pt" /> 
      <fo:block font-size="9pt" space-after="1mm" space-before="2mm"> 

<fo:table> 
<fo:table-column column-width="1.5cm"/> 
<fo:table-column column-width="4.5cm"/> 

<fo:table-header> 
    <fo:table-row> 
    <fo:table-cell> 
     <fo:block font-weight="bold"></fo:block> 
    </fo:table-cell> 
    <fo:table-cell> 
    <fo:block text-align="left" space-after="1.5mm"> 
    <xsl:text>DEPARTMENT TOTALS</xsl:text></fo:block> 
    </fo:table-cell> 
    </fo:table-row> 
</fo:table-header> 

<fo:table-body> 
    <fo:table-row> 
    <fo:table-cell> 
     <fo:block></fo:block> 
    </fo:table-cell> 
    <fo:table-cell> 
     <fo:block><xsl:text>SS SALES</xsl:text> <xsl:value-of select="DepartmentSalesReport/store_code"/></fo:block> 
    </fo:table-cell> 
    </fo:table-row> 
    <fo:table-row> 
    <fo:table-cell> 
     <fo:block></fo:block> 
    </fo:table-cell> 
    <fo:table-cell> 
     <fo:block><xsl:text>CIGARETTE SALES</xsl:text></fo:block> 
    </fo:table-cell> 
    </fo:table-row> 
    <fo:table-row> 
    <fo:table-cell> 
     <fo:block></fo:block> 
    </fo:table-cell> 
    <fo:table-cell> 
     <fo:block space-after="1.5mm"><xsl:text>LIQUOR SALES</xsl:text></fo:block> 
    </fo:table-cell> 
    </fo:table-row> 
    <fo:table-row> 
    <fo:table-cell> 
     <fo:block></fo:block> 
    </fo:table-cell> 
    <fo:table-cell> 
     <fo:block><xsl:text>TOTAL FRONT END SALES</xsl:text></fo:block> 
    </fo:table-cell> 
    </fo:table-row> 

</fo:table-body> 

</fo:table> 

</fo:block> 



       <fo:block space-before="5mm" text-align="center" font-size="9pt" font-weight="bold" id="terminator"> 
       <xsl:text></xsl:text> 
      </fo:block> 

     </fo:flow> 

     </fo:page-sequence> 
    </fo:root> 
    </xsl:template> 

</xsl:stylesheet> 
이제

나는이 링크에서와 같이 현재 보고서에 새 행을 추가 한 .. Modified Report이다, 그러나 당신은 또한 진드기 내가 원하는 것을 본 것처럼 알려 주시기 바랍니다 빨간색 화살표로 표시된 SS 영업부 앞면에 인쇄 될 59997 또한 수정해야 할 사항을 알려주십시오. 그것을 달성하기 위해 xsl에서, 숫자 값이 59997 인 knowlegde 목적은 xsl에서 오는 것입니다. <fo:block><xsl:text>SS SALES</xsl:text> <xsl:value-of select="DepartmentSalesReport/store_code"/></fo:block> 앞에 값을 표시하는 방법과 현재 xsl에서 수행 할 형식을 설명하는 방법을 알려주십시오.

나는이 때문에 붙어 버렸기 때문에 사람들에게 조언 해주세요 !! !! 어떤 도움도 내 마음의 밑바닥에서 높이 평가 될 것입니다 !!

다음은 XML입니다. 검토해주세요 ..! 당신의 XSL-FO를 생성하는 XSLT보고 들어

<?xml version="1.0" encoding="UTF-8"?> 
<Report Name="DepartmentSalesReport" Title="Department Sales Report" 
    Description="Department Sales Report" Version="1.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
     <InitParam Name="tradingdate" Type="java.lang.String" /> 
     <InitParam Name="tradingday" Type="java.lang.String" /> 
     <ReportBand BandType="HeaderBand" Name="DepartmentSalesReportBand"> 
     <ReportElement Type="Header" DataSource="OutletSQL"> 
     <DataField Name="store_code" Type="Data" FieldName="ORGU_CODE" /> 
     </ReportElement> 
     <ReportElement Type="Header" DataSource="InitParams"> 
     <DataField Name="tradingdate" Type="Data" FieldName="tradingdate" /> 
     </ReportElement> 
     <ReportElement Type="Header" DataSource="InitParams"> 
     <DataField Name="tradingday" Type="Data" FieldName="tradingday" /> 
     </ReportElement> 
    </ReportBand> 
    <ReportBand BandType="DetailBand" Name="Terminal"> 
     <ReportElement Type="Detail" Name="DepartmentDesc" DataSource="DataSql"> 
      <DataField Name="level" Type="Data" FieldName="LEVEL"/> 
      <DataField Name="levelNbr" Type="Data" FieldName="LEVELNBR"/> 
      <DataField Name="prgpName" Type="Data" FieldName="PRGP_NAME"/> 
      <DataField Name="prodCount" Type="Data" FieldName="PROD_COUNT"/> 
      <DataField Name="netSales" Type="Data" FieldName="NET_SALES"/> 
      <DataField Name="postVoidQuantity" Type="Data" FieldName="POST_VOID_QUANTITY"/> 
      <DataField Name="postVoidAmount" Type="Data" FieldName="POST_VOID_AMOUNT"/> 
      <DataField Name="returnQuantity" Type="Data" FieldName="RETURN_QUANTITY"/> 
      <DataField Name="returnAmount" Type="Data" FieldName="RETURN_AMOUNT"/> 

     </ReportElement> 

     <ReportElement Type="Header" DataSource="DateSQL"> 
      <DataField Name="CurrentDate" Type="Data" FieldName="1" /> 
      <DataField Name="currentTime" Type="Data" FieldName="2" /> 
     </ReportElement> 
    </ReportBand> 
    <DataSource 
     Type="walgreens.pos.maintenance.eod.DepartmentSalesReportDataSource" 
     Name="DataSql" 
     Statement=""> 
    </DataSource> 
    <DataSource 
     Type="com.pcmsgroup.v21.star.framework.application.reports.SpringReadOnlySQLStatement" 
     Name="OutletSQL" 
     Statement="select ORGU_CODE,OUTL_TRADE_DATE from outlet,org_unit where outlet.OUTL_ID = org_unit.OUTL_ID"> 
    </DataSource> 

    <DataSource 
     Type="com.pcmsgroup.v21.star.framework.application.reports.SpringReadOnlySQLStatement" 
     Name="DateSQL" 
     Statement="SELECT current date,current time FROM sysibm.sysdummy1"> 
    </DataSource> 

</Report> 
+0

의 모든 행에 대해이 작업을 수행해야하는 새로운 테이블 셀

<fo:table-row> <fo:table-cell> <fo:block/> </fo:table-cell> <fo:table-cell> <fo:block> <xsl:text>SS SALES</xsl:text> </fo:block> </fo:table-cell> <fo:table-cell> <fo:block> <xsl:value-of select="DepartmentSalesReport/store_code"/> </fo:block> </fo:table-cell> </fo:table-row> 

를 추가, 아무도 도울 수 당신. –

답변

0

는 순간에 당신의 합계에 별도의 테이블 인 보고서 부서의 목록, 관련 별도의 테이블 중 한 곳입니다. 부서를 나열하는 테이블의 경우, 아홉 열

<fo:table table-layout="fixed"> 
    <fo:table-column column-width="1.6cm"/> 
    <fo:table-column column-width="6cm" text-align="center"/> 
    <fo:table-column column-width="1.6cm"/> 
    <fo:table-column column-width="1.6cm"/> 
    <fo:table-column column-width="1.8cm"/> 
    <fo:table-column column-width="1.6cm"/> 
    <fo:table-column column-width="1.6cm"/> 
    <fo:table-column column-width="1.6cm" text-align="center"/> 
    <fo:table-column column-width="1.6cm"/> 
    <fo:table-body> 

이 부서 합계를 위해, 그러나 거기에 테이블 단지 내가 당신이 정말로에 해당 여기에 세 개의 열을 원하는 의심 두 개의 열

<fo:table> 
    <fo:table-column column-width="1.5cm"/> 
    <fo:table-column column-width="4.5cm"/> 
    <fo:table-header> 

있다

<fo:table 
    <fo:table-column column-width="1.6cm"/> 
    <fo:table-column column-width="6cm"/> 
    <fo:table-column column-width="1.6cm"/> 
    <fo:table-header> 

그런 부서 목록 테이블의 처음 세 컬럼 길이, 예를 들어, 총 행에 대해, 대신이 일을 ...

<fo:table-row> 
    <fo:table-cell> 
     <fo:block/> 
    </fo:table-cell> 
    <fo:table-cell> 
     <fo:block> 
     <xsl:text>SS SALES</xsl:text> 
     <xsl:value-of select="DepartmentSalesReport/store_code"/> 
     </fo:block> 
    </fo:table-cell> 
</fo:table-row> 

그냥 입력 XML을 보지 않고 당신은 아마 최종 '합계'테이블