Odoo中文社区可以通过以下三个域名访问:shine-it.net , odoocn.org,odoo.net.cn

原论坛用户的基本信息和发帖这里都予以保留,请注意:原论坛用户无需重新注册新用户,但是您的密码需要重置

开发人员可以登录gitter讨论组: http://gitter.im/odoo-china/Talk, 需要github账号

如果您登录系统碰到问题,请在微信公众号留言:

OpenERP 关于rml报表的修改



  • 1.rml 报表的组成<br />    RML报表主要分两部分组成,第一部分是一个在打印目录里面的.py文件,还有.rml的打印文件,这两个文件共同形成了PDF文件。.这两个文件是一样的文件名,不同的扩展名。<br />  .py文件是一个python程序文件,由它来取数据库的值,并且进行数据计算。<br />  .rml文件是决定PDF的外观,表格和样式都由rml文件来生成的。一个报表的rml样式由两部分组成,一部分是表头,一部分是内容。分在两个不同的rml文件中,表头文件是一个公共文件。<br /><br />2.一个例子讲述rml文件<br />  下面我以一个POS单来讲述一下rml文件的组成,在代码中,我标记了,每段代码起到的是什么作用。<br />  为什么以POS单做为例子呢?因为POS单简单,代码少,但具有了rml打印文件的所有部分。<br />  这个代码已经不是原来的代码了,我已经删除了好多格式文字的代码,以便看的更清楚,事实上,这些代码,只起到装饰作用,做简单的报表,可以不用的。<br />[code]<br /><?xml version="1.0"?><br /><document filename="test.pdf"><br />  <template pageSize="(204.0,842.0)" <!-前面的数字代表打印纸张的大小,这个用数字表示的,也可以用cm表示,比如21cm。->title="Receipt" author="OpenERP S.A. (sales@openerp.com)" allowSplitting="20"><br />    <pageTemplate id="first"><br />      <frame id="first" x1="0.0" y1="0.0" width="204" height="800"/> <!-这个数字代表的打印内容的大小,纸边界,起始位置,这个位置决定了生成文件后文字的位置,一般要测试才能知道具体位置-〉<br />    </pageTemplate><br />  </template><br />  <stylesheet>〈!-这个标签是打印样式,表格样式 定义了表格名称,划线,文字的大小等等,可以不定义,表格没有线,文件一样大小-〉<br />    <blockTableStyle id="Standard_Outline"><br />      <blockAlignment value="LEFT"/><br />      <blockValign value="TOP"/><br />    </blockTableStyle> <br />    <blockTableStyle id="Table2"><br />      <blockAlignment value="LEFT"/><br />      <blockValign value="TOP"/><br />      <lineStyle kind="LINEABOVE" colorName="#000000" start="1,0" stop="1,0"/><br />      <!-上面的这行,kind="LINEABOVE" 决定了表格划线 colorName="#000000" 决定了表格线的颜色 start="1,0" stop="1,0"决定了划线的起止位置,没有这句,表格是没有线的 -><br />    </blockTableStyle><br />    <blockTableStyle id="Table4"><br />      <blockAlignment value="LEFT"/><br />      <blockValign value="TOP"/><br />    </blockTableStyle><br />    <blockTableStyle id="Table10"><br />      <blockAlignment value="LEFT"/><br />      <blockValign value="TOP"/><br />      <lineStyle kind="LINEABOVE" colorName="#000000" start="0,1" stop="0,1"/><br />      <lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="0,-1" stop="0,-1"/><br />      <lineStyle kind="LINEABOVE" colorName="#000000" start="1,1" stop="1,1"/><br />      <lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="1,-1" stop="1,-1"/><br />      <lineStyle kind="LINEABOVE" colorName="#000000" start="2,1" stop="2,1"/><br />      <lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="2,-1" stop="2,-1"/><br />    </blockTableStyle><br />    <initialize><br />      <paraStyle name="all" alignment="justify"/><br />    </initialize><br />    </stylesheet><br />  <story><!-story开始就是表格的内容了,oe的数据就调用到这里-><br />    <para>[[ repeatIn(objects,'o') ]]</para> <!-para标签调用数据和要显示的文字,这个标签里面的内容就是表格内的内容-><br />    <para>[[o.user_id.company_id.name]]</para><br />    <para>[[ address and display_address(address)]]</para><br />    <para>电话 : [[ address and address.phone ]]</para><br />    <para>收银 : [[ o.user_id.name ]]</para><br />    <para>超市 : [[ o.shop_id.name ]]</para><br />    <para>时间 : [[ o.date_order ]]</para><br />    <para>N° : [[ o.name ]]</para><br />    <blockTable colWidths="68.0,68.0,68.0"><!-一个blockTable标签就是一个表格,colWidths表格的宽度,后来字一个分号代表一个格,还有一个标签 rowHeights表格的高度-><br />      <tr><br />        <td><br />          <para>Description</para><br />        </td><br />        <td><br />          <para>Qty</para><br />        </td><br />        <td><br />          <para>Price</para><br />        </td><br />      </tr><!-一个td代表一个格,一个tr代表表格的一行-><br />      <tr><br />        <td><br />          <para>[[ repeatIn(o.lines,'line') ]]</para><br />          <para>[[ line.product_id.name ]]</para><br />          <para>With a [[ line and line.discount == 0.0 and removeParentNode('font') ]] ([[ '%.2f' % line.discount ]]) % discount. <!-百分号是格式化用的%.2f'表示两位小数-><br />          </para><br />          <para><br />            <font color="white"> </font><br />          </para><br />        </td><br />        <td><br />          <para>[[o.state=='cancel' and o.statement_ids and '-' or '']][['%.f' % line.qty ]]</para><br />        </td><br />        <td><br />          <para>[[o.state=='cancel' and o.statement_ids and '-' or '']][[ formatLang(net(line.id), currency_obj=company.currency_id) ]] <font face="Helvetica">[[ line and line.discount == 0.0 and removeParentNode('font') ]] ([[ formatLang(line.discount, currency_obj=company.currency_id) ]])</font></para><br />        </td><br />      </tr><br />    </blockTable><br />    <blockTable colWidths="136.0,68.0" style="Table2"><br />      <tr><br />        <td><br />          <para>Taxes :</para><br />        </td><br />        <td><br />          <para>[[o.state=='cancel' and o.statement_ids and '-' or '']][[formatLang(o.amount_tax, currency_obj=company.currency_id)]]</para><br />        </td><br />      </tr><br />    </blockTable><br />    <blockTable colWidths="136.0,68.0" style="Table4"><br />      <tr><br />        <td><br />          <para>Total :</para><br />        </td><br />        <td><br />          <para>[[o.state=='cancel' and o.statement_ids and '-' or '']][[formatLang(o.amount_total, currency_obj=company.currency_id)]]</para><br />        </td><br />      </tr><br />    </blockTable><br />    <blockTable colWidths="102.0,34.0,68.0" style="Table10"><br />      <tr><br />        <td><br />          <para>Payment Mode</para><br />        </td><br />        <td><br />          <para><br />            <font> </font><br />          </para><br />        </td><br />        <td><br />          <para>Amount</para><br />        </td><br />      </tr><br />      <tr><br />        <td><br />          <para>[[ repeatIn(get_journal_amt(o),'d') ]]</para><br />          <para>[[ d['name'] ]]</para><br />        </td><br />        <td><br />          <para><br />            <font color="white"> </font><br />          </para><br />        </td><br />        <td><br />          <para>[[ formatLang(d['amt'] or 0, currency_obj=company.currency_id) ]]</para><br />        </td><br />      </tr><br />    </blockTable><br />  </story><br /></document><br />[/code]<br />  以上是对rml文件的分析,根据这个分析就能写出自己的rml文件了,但这只是一部分,因为你还不会调用其它数据到rml文件里面来。不过我们能够修改表格去掉不显示的东西,和完全重新画一个新样式的表格了。<br /><br />3.报表的表头<br />  即使这样,我们发现,如果使用系统表头的打印文件,默认的表头,在横线下面有很大一块空白。这样我们就要修改表头的rml文件,修改这个不用找到文件,在软件里就能修改。<br />  在设置-公司-公司-页眉页脚里时行修改。修改第一项“RML页眉”下面是我修改过的一个例子:<br />[code]<br /><header><br />    <pageTemplate><br />        <frame id="first" x1="1.3cm" y1="3.0cm" height="21.7cm" width="19.0cm"/><br />        <!-上面这段代码表示了带表头打印的宽高,我说的那个空白是由y1="3.0cm"控制的,是表的打印高度,改成6,文字就上去了,打印的位置比较合适-><br />        <stylesheet><br />            <!-- Set here the default font to use for all <para> tags --><br />            <paraStyle name='Normal' fontName="DejaVu Sans"/><br />            <paraStyle name="main_footer" fontSize="8.0" alignment="CENTER"/><br />            <paraStyle name="main_header" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/><br />        </stylesheet><br />        <pageGraphics><br />            <!-- Set here the default font to use for all <drawString> tags --><br />            <setFont name="DejaVu Sans" size="8"/><br />            <!-- You Logo - Change X,Y,Width and Height --><br />            <image x="1.3cm" y="27.7cm" height="40.0" >[[ company.logo or removeParentNode('image') ]]</image><br />            <fill color="black"/><br />            <stroke color="black"/><br /><br />            <!-- page header --><br />            <lines>1.3cm 27.7cm 20cm 27.7cm</lines><!-这个是表头的线,要保留-><br />            <drawRightString x="20cm" y="27.8cm">[[ company.rml_header1 ]]</drawRightString><br />            <drawString x="1.3cm" y="27.3cm">[[ company.partner_id.name ]]</drawString><br />            <place x="1.3cm" y="25.3cm" height="1.8cm" width="15.0cm"><br />                <para style="main_header">[[ display_address(company.partner_id) or  '' ]]</para><br />            </place><!--phone这段是公司电话吧,可以删除这段话在表头里没啥用--><br />            <drawString x="1.3cm" y="25.0cm">Phone:</drawString><br />            <drawRightString x="7cm" y="25.0cm">[[ company.partner_id.phone or '' ]]</drawRightString><br />            <drawString x="1.3cm" y="24.6cm">Mail:</drawString><br />            <drawRightString x="7cm" y="24.6cm">[[ company.partner_id.email or '' ]]</drawRightString><br />            <lines>1.3cm 24.5cm 7cm 24.5cm</lines><!--这个线可以不要,没啥用--><br /><br />            <!-- left margin --><!--这段代码是打印在底下左边的公司版权,那个90好像是文字旋转90度,改打印公司名字就在我加的**那里--><br />            <rotate degrees="90"/><br />            <fill color="grey"/><br />            <drawString x="2.65cm" y="-0.4cm">power by openERP</drawString><br />            <fill color="black"/><br />            <rotate degrees="-90"/><br /><br />            <!--page bottom--><!--这段是打印底下的页码和线,页码计算在这段代码里,自己写的rml代码可以参考这个--><br />            <lines>1.2cm 2.65cm 19.9cm 2.65cm</lines><br />            <place x="1.3cm" y="0cm" height="2.55cm" width="19.0cm"><br />                <para style="main_footer">[[ company.rml_footer ]]</para><br />                <para style="main_footer">Contact : [[ user.name ]] - Page: <pageNumber/></para><br />            </place><br />        </pageGraphics><br />    </pageTemplate><br /></header><br />[/code]<br />4.关于格式化.py文件<br />  这个文件我还没太弄懂,好像又称做解释器我只发我知道的,我看OE介绍,这个文件主要包括以下代码:<br />[code]<br />  import time<br />from report import report_sxw<br /><br />class order(report_sxw.rml_parse):<br />    def init(self, cr, uid, name, context):<br />        super(order, self).init(cr, uid, name, context)<br />        self.localcontext.update({<br />            'time': time,<br />        })<br /><br />report_sxw.report_sxw('report.sale.order', 'sale.order',<br />      'addons/sale/report/order.rml', parser=order, header=True)<br />[/code]<br />    就写到这,关于如何调用数据库数据,等我弄明白了,再给大家写出来,好像得用python代码。<br />    承德-至阳<br />



  • 1.rml 报表的组成<br />    RML报表主要分两部分组成,第一部分是一个在打印目录里面的.py文件,还有.rml的打印文件,这两个文件共同形成了PDF文件。.这两个文件是一样的文件名,不同的扩展名。<br />  .py文件是一个python程序文件,由它来取数据库的值,并且进行数据计算。<br />  .rml文件是决定PDF的外观,表格和样式都由rml文件来生成的。一个报表的rml样式由两部分组成,一部分是表头,一部分是内容。分在两个不同的rml文件中,表头文件是一个公共文件。<br /><br />2.一个例子讲述rml文件<br />  下面我以一个POS单来讲述一下rml文件的组成,在代码中,我标记了,每段代码起到的是什么作用。<br />  为什么以POS单做为例子呢?因为POS单简单,代码少,但具有了rml打印文件的所有部分。<br />  这个代码已经不是原来的代码了,我已经删除了好多格式文字的代码,以便看的更清楚,事实上,这些代码,只起到装饰作用,做简单的报表,可以不用的。<br />[code]<br /><?xml version="1.0"?><br /><document filename="test.pdf"><br />  <template pageSize="(204.0,842.0)" <!-前面的数字代表打印纸张的大小,这个用数字表示的,也可以用cm表示,比如21cm。->title="Receipt" author="OpenERP S.A. (sales@openerp.com)" allowSplitting="20"><br />    <pageTemplate id="first"><br />      <frame id="first" x1="0.0" y1="0.0" width="204" height="800"/> <!-这个数字代表的打印内容的大小,纸边界,起始位置,这个位置决定了生成文件后文字的位置,一般要测试才能知道具体位置-〉<br />    </pageTemplate><br />  </template><br />  <stylesheet>〈!-这个标签是打印样式,表格样式 定义了表格名称,划线,文字的大小等等,可以不定义,表格没有线,文件一样大小-〉<br />    <blockTableStyle id="Standard_Outline"><br />      <blockAlignment value="LEFT"/><br />      <blockValign value="TOP"/><br />    </blockTableStyle> <br />    <blockTableStyle id="Table2"><br />      <blockAlignment value="LEFT"/><br />      <blockValign value="TOP"/><br />      <lineStyle kind="LINEABOVE" colorName="#000000" start="1,0" stop="1,0"/><br />      <!-上面的这行,kind="LINEABOVE" 决定了表格划线 colorName="#000000" 决定了表格线的颜色 start="1,0" stop="1,0"决定了划线的起止位置,没有这句,表格是没有线的 -><br />    </blockTableStyle><br />    <blockTableStyle id="Table4"><br />      <blockAlignment value="LEFT"/><br />      <blockValign value="TOP"/><br />    </blockTableStyle><br />    <blockTableStyle id="Table10"><br />      <blockAlignment value="LEFT"/><br />      <blockValign value="TOP"/><br />      <lineStyle kind="LINEABOVE" colorName="#000000" start="0,1" stop="0,1"/><br />      <lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="0,-1" stop="0,-1"/><br />      <lineStyle kind="LINEABOVE" colorName="#000000" start="1,1" stop="1,1"/><br />      <lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="1,-1" stop="1,-1"/><br />      <lineStyle kind="LINEABOVE" colorName="#000000" start="2,1" stop="2,1"/><br />      <lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="2,-1" stop="2,-1"/><br />    </blockTableStyle><br />    <initialize><br />      <paraStyle name="all" alignment="justify"/><br />    </initialize><br />    </stylesheet><br />  <story><!-story开始就是表格的内容了,oe的数据就调用到这里-><br />    <para>[[ repeatIn(objects,'o') ]]</para> <!-para标签调用数据和要显示的文字,这个标签里面的内容就是表格内的内容-><br />    <para>[[o.user_id.company_id.name]]</para><br />    <para>[[ address and display_address(address)]]</para><br />    <para>电话 : [[ address and address.phone ]]</para><br />    <para>收银 : [[ o.user_id.name ]]</para><br />    <para>超市 : [[ o.shop_id.name ]]</para><br />    <para>时间 : [[ o.date_order ]]</para><br />    <para>N° : [[ o.name ]]</para><br />    <blockTable colWidths="68.0,68.0,68.0"><!-一个blockTable标签就是一个表格,colWidths表格的宽度,后来字一个分号代表一个格,还有一个标签 rowHeights表格的高度-><br />      <tr><br />        <td><br />          <para>Description</para><br />        </td><br />        <td><br />          <para>Qty</para><br />        </td><br />        <td><br />          <para>Price</para><br />        </td><br />      </tr><!-一个td代表一个格,一个tr代表表格的一行-><br />      <tr><br />        <td><br />          <para>[[ repeatIn(o.lines,'line') ]]</para><br />          <para>[[ line.product_id.name ]]</para><br />          <para>With a [[ line and line.discount == 0.0 and removeParentNode('font') ]] ([[ '%.2f' % line.discount ]]) % discount. <!-百分号是格式化用的%.2f'表示两位小数-><br />          </para><br />          <para><br />            <font color="white"> </font><br />          </para><br />        </td><br />        <td><br />          <para>[[o.state=='cancel' and o.statement_ids and '-' or '']][['%.f' % line.qty ]]</para><br />        </td><br />        <td><br />          <para>[[o.state=='cancel' and o.statement_ids and '-' or '']][[ formatLang(net(line.id), currency_obj=company.currency_id) ]] <font face="Helvetica">[[ line and line.discount == 0.0 and removeParentNode('font') ]] ([[ formatLang(line.discount, currency_obj=company.currency_id) ]])</font></para><br />        </td><br />      </tr><br />    </blockTable><br />    <blockTable colWidths="136.0,68.0" style="Table2"><br />      <tr><br />        <td><br />          <para>Taxes :</para><br />        </td><br />        <td><br />          <para>[[o.state=='cancel' and o.statement_ids and '-' or '']][[formatLang(o.amount_tax, currency_obj=company.currency_id)]]</para><br />        </td><br />      </tr><br />    </blockTable><br />    <blockTable colWidths="136.0,68.0" style="Table4"><br />      <tr><br />        <td><br />          <para>Total :</para><br />        </td><br />        <td><br />          <para>[[o.state=='cancel' and o.statement_ids and '-' or '']][[formatLang(o.amount_total, currency_obj=company.currency_id)]]</para><br />        </td><br />      </tr><br />    </blockTable><br />    <blockTable colWidths="102.0,34.0,68.0" style="Table10"><br />      <tr><br />        <td><br />          <para>Payment Mode</para><br />        </td><br />        <td><br />          <para><br />            <font> </font><br />          </para><br />        </td><br />        <td><br />          <para>Amount</para><br />        </td><br />      </tr><br />      <tr><br />        <td><br />          <para>[[ repeatIn(get_journal_amt(o),'d') ]]</para><br />          <para>[[ d['name'] ]]</para><br />        </td><br />        <td><br />          <para><br />            <font color="white"> </font><br />          </para><br />        </td><br />        <td><br />          <para>[[ formatLang(d['amt'] or 0, currency_obj=company.currency_id) ]]</para><br />        </td><br />      </tr><br />    </blockTable><br />  </story><br /></document><br />[/code]<br />  以上是对rml文件的分析,根据这个分析就能写出自己的rml文件了,但这只是一部分,因为你还不会调用其它数据到rml文件里面来。不过我们能够修改表格去掉不显示的东西,和完全重新画一个新样式的表格了。<br /><br />3.报表的表头<br />  即使这样,我们发现,如果使用系统表头的打印文件,默认的表头,在横线下面有很大一块空白。这样我们就要修改表头的rml文件,修改这个不用找到文件,在软件里就能修改。<br />  在设置-公司-公司-页眉页脚里时行修改。修改第一项“RML页眉”下面是我修改过的一个例子:<br />[code]<br /><header><br />    <pageTemplate><br />        <frame id="first" x1="1.3cm" y1="3.0cm" height="21.7cm" width="19.0cm"/><br />        <!-上面这段代码表示了带表头打印的宽高,我说的那个空白是由y1="3.0cm"控制的,是表的打印高度,改成6,文字就上去了,打印的位置比较合适-><br />        <stylesheet><br />            <!-- Set here the default font to use for all <para> tags --><br />            <paraStyle name='Normal' fontName="DejaVu Sans"/><br />            <paraStyle name="main_footer" fontSize="8.0" alignment="CENTER"/><br />            <paraStyle name="main_header" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/><br />        </stylesheet><br />        <pageGraphics><br />            <!-- Set here the default font to use for all <drawString> tags --><br />            <setFont name="DejaVu Sans" size="8"/><br />            <!-- You Logo - Change X,Y,Width and Height --><br />            <image x="1.3cm" y="27.7cm" height="40.0" >[[ company.logo or removeParentNode('image') ]]</image><br />            <fill color="black"/><br />            <stroke color="black"/><br /><br />            <!-- page header --><br />            <lines>1.3cm 27.7cm 20cm 27.7cm</lines><!-这个是表头的线,要保留-><br />            <drawRightString x="20cm" y="27.8cm">[[ company.rml_header1 ]]</drawRightString><br />            <drawString x="1.3cm" y="27.3cm">[[ company.partner_id.name ]]</drawString><br />            <place x="1.3cm" y="25.3cm" height="1.8cm" width="15.0cm"><br />                <para style="main_header">[[ display_address(company.partner_id) or  '' ]]</para><br />            </place><!--phone这段是公司电话吧,可以删除这段话在表头里没啥用--><br />            <drawString x="1.3cm" y="25.0cm">Phone:</drawString><br />            <drawRightString x="7cm" y="25.0cm">[[ company.partner_id.phone or '' ]]</drawRightString><br />            <drawString x="1.3cm" y="24.6cm">Mail:</drawString><br />            <drawRightString x="7cm" y="24.6cm">[[ company.partner_id.email or '' ]]</drawRightString><br />            <lines>1.3cm 24.5cm 7cm 24.5cm</lines><!--这个线可以不要,没啥用--><br /><br />            <!-- left margin --><!--这段代码是打印在底下左边的公司版权,那个90好像是文字旋转90度,改打印公司名字就在我加的**那里--><br />            <rotate degrees="90"/><br />            <fill color="grey"/><br />            <drawString x="2.65cm" y="-0.4cm">power by openERP</drawString><br />            <fill color="black"/><br />            <rotate degrees="-90"/><br /><br />            <!--page bottom--><!--这段是打印底下的页码和线,页码计算在这段代码里,自己写的rml代码可以参考这个--><br />            <lines>1.2cm 2.65cm 19.9cm 2.65cm</lines><br />            <place x="1.3cm" y="0cm" height="2.55cm" width="19.0cm"><br />                <para style="main_footer">[[ company.rml_footer ]]</para><br />                <para style="main_footer">Contact : [[ user.name ]] - Page: <pageNumber/></para><br />            </place><br />        </pageGraphics><br />    </pageTemplate><br /></header><br />[/code]<br />4.关于格式化.py文件<br />  这个文件我还没太弄懂,好像又称做解释器我只发我知道的,我看OE介绍,这个文件主要包括以下代码:<br />[code]<br />  import time<br />from report import report_sxw<br /><br />class order(report_sxw.rml_parse):<br />    def init(self, cr, uid, name, context):<br />        super(order, self).init(cr, uid, name, context)<br />        self.localcontext.update({<br />            'time': time,<br />        })<br /><br />report_sxw.report_sxw('report.sale.order', 'sale.order',<br />      'addons/sale/report/order.rml', parser=order, header=True)<br />[/code]<br />    就写到这,关于如何调用数据库数据,等我弄明白了,再给大家写出来,好像得用python代码。<br />    承德-至阳<br />



  • 写的不对的地方,请大家指正



  • 谢谢分享<br /><br />先顶再读



  • 向分享者致敬!



  • 赞......  支持分享....



  • 帮楼主加了 [code][/code] 标签,这样看起来清楚些。<br /><br />xml注释如果用 <!--  --> 这样双中划线括起来应该看起来更清晰些。



  • 再整理一下,一个rml表,主要包括以下几部分:<br /><br />第一部分:表的说明<br />[code]<br /><?xml version="1.0"?><br /><document filename="test.pdf"><br />  <template pageSize="(204.0,842.0)" title="Receipt" author="OpenERP S.A. (sales@openerp.com)" allowSplitting="20"><br />    <pageTemplate id="first"><br />      <frame id="first" x1="0.0" y1="0.0" width="204" height="800"/><br />    </pageTemplate><br />  </template><br />[/code]<br />第二部分 表的格式,包括每个表的格线等<br />[code]<br />  <stylesheet><br />    <blockTableStyle id="Standard_Outline"><br />      <blockAlignment value="LEFT"/><br />      <blockValign value="TOP"/><br />    </blockTableStyle> <br />    <blockTableStyle id="Table10"><br />      <blockAlignment value="LEFT"/><br />      <blockValign value="TOP"/><br />      <lineStyle kind="LINEABOVE" colorName="#000000" start="0,1" stop="0,1"/><br />      <lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="0,-1" stop="0,-1"/><br />      <lineStyle kind="LINEABOVE" colorName="#000000" start="1,1" stop="1,1"/><br />      <lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="1,-1" stop="1,-1"/><br />      <lineStyle kind="LINEABOVE" colorName="#000000" start="2,1" stop="2,1"/><br />      <lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="2,-1" stop="2,-1"/><br />    </blockTableStyle><br />    <initialize><br />      <paraStyle name="all" alignment="justify"/><br />    </initialize><br />    </stylesheet><br />[/code]<br />第三部分,表格内容<br />[code]<br /> <story><br />    <blockTable colWidths="68.0,68.0,68.0"><br />      <tr><br />        <td><br />          <para>Description</para><br />        </td><br />        <td><br />          <para>Qty</para><br />        </td><br />        <td><br />          <para>Price</para><br />        </td><br />      </tr><br />      <tr><br />        <td><br />          <para>[[ repeatIn(o.lines,'line') ]]</para><br />          <para>[[ line.product_id.name ]]</para><br />          <para><br />            <font color="white"> </font><br />          </para><br />        </td><br />        <td><br />          <para>[[o.state=='cancel' and o.statement_ids and '-' or '']][['%.f' % line.qty ]]</para><br />        </td><br />        <td><br />          <para>[[o.state=='cancel' and o.statement_ids and '-' or '']][[ formatLang(net(line.id), currency_obj=company.currency_id) ]] <font face="Helvetica">[[ line and line.discount == 0.0 and removeParentNode('font') ]] ([[ formatLang(line.discount, currency_obj=company.currency_id) ]])</font></para><br />        </td><br />      </tr><br />    </blockTable><br />  </story><br /></document><br />[/code]<br />就是以上三部分控制着一个表格



  • 先占个座再慢慢拜读。。。。



  • 页眉页脚能通过rml文件直接修改吗


  • 管理员

    这里已经回复你了[url=http://shine-it.net/index.php/topic,2405.msg22901.html#new]http://shine-it.net/index.php/topic,2405.msg22901.html#new[/url]



  • 谢谢分享,还没到报表开发阶段呢,先mark



  • 刚接触没几天,正要修个页眉和页脚,看出来点思路来了,谢谢分享


登录后回复
 

与 Odoo 中文社区 的连接断开,我们正在尝试重连,请耐心等待