查看: 5648|回复: 0
打印 上一主题 下一主题

利用XML实现通用WEB报表打印实际使用中的例子

[复制链接]
跳转到指定楼层
1#
发表于 2008-9-4 18:44:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
台州网址导航
最近做的一个B/S项目,在打印时采用了在IE中嵌入.net winform控件和XML结合的方式(参见http://www.yesky.com/20030214/1652186.shtml),在实际应用过程中,有一些心得,和大家分享。

(一)使用通用模版格式化XML文件

系统中共用到了三种单据,分别为出库单,入库单,送货单,因此,定义三个模版文件,格式如下:

chukudan.xsl:


<?xml version="1.0" encoding="GB2312"?>
<xsl:stylesheet version="1.0"  xmlns:xsl="http://www.w3.org/1999/XSL/Transform">   
   <xsl:template match="Bill">   
   <root>
<pagesetting>
  <landscape>false</landscape>
  <paperkind>Custom</paperkind>
  <paperwidth>800</paperwidth>
  <paperheight>600</paperheight>
  <paperleft>0</paperleft>
  <paperight>0</paperight>
  <papetop>0</papetop>
  <papebottom>0</papebottom>
</pagesetting>
<reporttable>
      <bill x="55" y="19" border="0" bordercolor="white" maxlines="6">
  <xsl:for-each select="BillMaster">
   <toptable width="743">
    <tr height="20">
     <td width="118"  align="right"  fontsize="10" fontname="宋体" fontcolor="black" b="true" i="false" u="false" bgcolor="white">车次号:</td>
     <td width="449"  align="right"  fontsize="10" fontname="宋体" fontcolor="black" b="true" i="false" u="false" bgcolor="White"><xsl:value-of select="SERIAL_NO" /></td>
     <td width="35"  align="right"  fontsize="10" fontname="宋体" fontcolor="black" b="true" i="false" u="false" bgcolor="white"></td>
     <td width="138"  align="right"  fontsize="10" fontname="宋体" fontcolor="black" b="true" i="false" u="false" bgcolor="white"></td>
    </tr>   
   </toptable>
  </xsl:for-each>
  <detailtable width="373">
   <xsl:for-each select="BillDetail">   
    <tr height="33">
     <td width="90" align="right"  fontsize="10" fontname="宋体" fontcolor="black" b="true" i="false" u="false" bgcolor="White"><xsl:value-of select="BILL_NO" /></td>
     <td width="173" align="right"  fontsize="10" fontname="宋体" fontcolor="black" b="true" i="false" u="false" bgcolor="white"><xsl:value-of select="PROD_MODEL_2" /></td>
     <td width="55" align="right"  fontsize="10" fontname="宋体" fontcolor="black" b="true" i="false" u="false" bgcolor="White"><xsl:value-of select="PROD_NUM" /></td>
     <td width="55" align="right"  fontsize="10" fontname="宋体" fontcolor="black" b="true" i="false" u="false" bgcolor="white"><xsl:value-of select="PIECE_NUM" /></td>         
    </tr>  
   
   </xsl:for-each>
  </detailtable>
  <mastertable width="370">
   <xsl:for-each select="BillMaster">
    <tr height="33">
     <td width="90" align="right"  fontsize="10" fontname="宋体" fontcolor="black" b="true" i="false" u="false" bgcolor="White">
     </td>
     <td width="280" align="right"  fontsize="10" fontname="宋体" fontcolor="black" b="true" i="false" u="false" bgcolor="white"><xsl:value-of select="ADDRESS" /></td>
    </tr>
    <tr height="33">
     <td width="90" align="right"  fontsize="10" fontname="宋体" fontcolor="black" b="true" i="false" u="false" bgcolor="white">
     </td>
     <td width="90" align="right"  fontsize="10" fontname="宋体" fontcolor="black" b="true" i="false" u="false" bgcolor="White"><xsl:value-of select="CONTACT_PERSON" /></td>
     <td width="70" align="right"  fontsize="10" fontname="宋体" fontcolor="black" b="true" i="false" u="false" bgcolor="white">
     </td>
     <td width="120" align="right"  fontsize="10" fontname="宋体" fontcolor="black" b="true" i="false" u="false" bgcolor="White"><xsl:value-of select="CONTACT_PHONE" /></td>
    </tr>
    <tr height="33">        
     <td width="90" align="right"  fontsize="10" fontname="宋体" fontcolor="black" b="true" i="false" u="false" bgcolor="White">
     </td>
     <td width="280" align="right"  fontsize="10" fontname="宋体" fontcolor="black" b="true" i="false" u="false" bgcolor="white"><xsl:value-of select="DRIVER_UNIT" /></td>
    </tr>
    <tr height="33">
     <td width="90" align="right"  fontsize="10" fontname="宋体" fontcolor="black" b="true" i="false" u="false" bgcolor="white">
     </td>
     <td width="90" align="right"  fontsize="10" fontname="宋体" fontcolor="black" b="true" i="false" u="false" bgcolor="white"><xsl:value-of select="DRIVER_NO" /></td>
     <td width="70" align="right"  fontsize="10" fontname="宋体" fontcolor="black" b="true" i="false" u="false" bgcolor="white">
     </td>
     <td width="120" align="right"  fontsize="10" fontname="宋体" fontcolor="black" b="true" i="false" u="false" bgcolor="white"><xsl:value-of select="DRIVER_PERSON" /></td>
    </tr>
    <tr height="33">
     <td width="90" align="right"  fontsize="10" fontname="宋体" fontcolor="black" b="true" i="false" u="false" bgcolor="white">
     </td>
     <td width="90" align="right"  fontsize="10" fontname="宋体" fontcolor="black" b="true" i="false" u="false" bgcolor="white"><xsl:value-of select="CAR_MODEL" />
     </td>
     <td width="70" align="right"  fontsize="10" fontname="宋体" fontcolor="black" b="true" i="false" u="false" bgcolor="white">
     </td>
     <td width="120" align="right"  fontsize="10" fontname="宋体" fontcolor="black" b="true" i="false" u="false" bgcolor="white"></td>
    </tr>
    <tr height="33">
     <td width="90"  align="right"  fontsize="10" fontname="宋体" fontcolor="black" b="true" i="false" u="false" bgcolor="white">
     </td>
     <td width="280" align="right"  fontsize="10" fontname="宋体" fontcolor="black" b="true" i="false" u="false" bgcolor="white"><xsl:value-of select="COME_TO" /></td>
    </tr>
   </xsl:for-each>
  </mastertable>
  
  <foottable width="743">
   <xsl:for-each select="BillMaster">
    <tr height="35">
     <td width="90" align="right"  fontsize="10" fontname="宋体" fontcolor="black" b="true" i="false" u="false" bgcolor="White"></td>
     <td width="173" align="right"  fontsize="10" fontname="宋体" fontcolor="black" b="true" i="false" u="false" bgcolor="white"></td>
     <td width="55" align="right"  fontsize="10" fontname="宋体" fontcolor="black" b="true" i="false" u="false" bgcolor="White"></td>
     <td width="55" align="right"  fontsize="10" fontname="宋体" fontcolor="black" b="true" i="false" u="false" bgcolor="white"></td>         
   
     <td width="90"  align="right"  fontsize="10" fontname="宋体" fontcolor="black" b="true" i="false" u="false" bgcolor="white">
     </td>
     <td width="280" align="right"  fontsize="10" fontname="宋体" fontcolor="black" b="true" i="false" u="false" bgcolor="white"><xsl:value-of select="REMARK" /></td>
    </tr>  
   </xsl:for-each>
      </foottable>   
   
      </bill>
   </reporttable>
</root>     
   </xsl:template>  

</xsl:stylesheet>


其中,toptable是表头,detailtable是表格左边的产品明细,mastertable是表格右边的运输信息等,foottable是最下面制表人等信息。

然后,在asp.net页面中,将查询出的结果作如下转换



            '是否取得了单据
            If billInfoXml <> Nothing Then

                billInfoDoc.LoadXml(billInfoXml)
                'billInfoDoc.LoadXml("http://111.111.111.111/stockmg/test.xsl")
                billTrans.Load(billFormatXmlUrl)

                billXmlWr.Formatting = System.Xml.Formatting.Indented
                billXmlWr.Indentation = 4
                billXmlWr.IndentChar = " "

                billTrans.Transform(billNav, Nothing, billXmlWr, Nothing)
                billXmlWr.Flush()

            End If



返回的信息用javascript代码加载到打印控件:

parent.frames.frmhidPrint.parent.frames.frmhidPrint.print1.SetXml(xmlResult); //SetMessage(xmlResult); parent.frames.frmhidPrint.parent.frames.frmhidPrint.print1.PrintAct();

注意,这里调用打印控件用了parent.frames....这是为了节省每次打开页面时加载打印控件的时间,使用了一个框架网页,把打印控件放在一个单独的页面中,从而不需每次加载。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖
台州维博网络(www.tzweb.com)专门运用PHP+MYSQL/ASP.NET+MSSQL技术开发网站门户平台系统等。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

网站推广
关于我们
  • 台州朗动科技(Tzweb.com)拥有多年开发网站平台系统门户手机客户端等业务的成功经验。主要从事:政企网站,系统平台,微信公众号,各类小程序,手机APP客户端,浙里办微应用,浙政钉微应用、主机域名、虚拟空间、后期维护等服务,满足不同企业公司的需求,是台州地区领先的网络技术服务商!

Hi,扫描关注我

Copyright © 2005-2026 站长论坛 All rights reserved

Powered by 站长论坛 with TZWEB Update Techonolgy Support

快速回复 返回顶部 返回列表