Cell插件利用xml上传表格数据于服务器的B/S操作

引言

随着XML技术发展,XML技术的广泛运用,用友华表cell插件在XML上的运用也取得很大发展,用友华表cell插件可以很方便的将客户端cell报表数据以XML形式发送给服务器,服务器再接受xml数据,通过解析xml数据流将cell报表数据入库或做相应处理。下例方案演示客户端的组织发送,以及服务器的接收解析入库。

正文:(本文以ASP ,客户端JavaScript,服务器端VbScript,Access数据库为例)

用友华表Cell插件推荐的xml格式是(实际运用根据业务逻辑):

<Workbook> 
       <DocumentProperties>
           <Created>2004-06-11T00:55:04Z</Created>
           <Version>03.1015</Version>
       </DocumentProperties>
       <Worksheet Name="第1页">
         <Table>
           <Row Index="3">
               <Cell Index="2">
                   <Data Type="Number">1234</Data>
               </Cell>
               <Cell Index="3">
                   <Data Type="Number">4567</Data>
               </Cell>
           </Row>
           <Row Index="4">
                <Cell Index="2">
                     <Data Type="String">asd</Data>
                </Cell> 
                < Cell Index="3">
                     <Data Type="String">ASDF</Data>
                </Cell>
           </Row>
         </Table>
       </Worksheet>
       <Worksheet Name="第2页">
         <Table>
           <Row Index="1">
              < Cell Index="1">
                  <Data Type="Number">1234</Data>
              </Cell>
              <Cell Index="2">
                  <Data Type="Number">4567</Data>
              </Cell>
           </Row>
         </Table>
       </Worksheet>
</Workbook>

客户端的操作

1.SaveToXML()

利用cell插件的SaveToXML()函数,返回报表数据的xml字符集,通过该函数将报表数据写入xml结构
xmldoc=cellweb.SaveToXml(xml_dom)

2.MSXML2.DOMDocument

创建MSXML2.DOMDocument的ActiveX对象Objxml,利用该对象的loadxml方法将xml文档导入到对象(上面的xmldoc)
objxml=new ActiveXObject("MSXML2.DOMDocument");
objxml.loadXML(xmldoc);

3.Microsoft.XMLHTTP

通过创建Microsoft.XMLHTTP的xmlhttp对象objS来实现xml数据流的发送
objS=new ActiveXObject("Microsoft.XMLHTTP");
发送xml数据流前先用open 方法打开,形式如下:
objS.open("post","http://127.0.0.1/upload_xml.asp",false);
objS.send(objxml);              //向服务器发送xml数据流。

服务器端的操作

1.创建MSXML2.DOMDocument对象Objxml接收xml数据流

set Objxml=Server.CreateObject("MSXML2.DOMDocument") 
利用对象load()方法接收发来的数据流,将数据流导入到Objxml对象里
Objxml.load(Request)
利用save方法把xml数据流保存一份xml文件以便验证
Objxml.save(Server.MapPath("temp.xml"))

2.创建ADO的连接对象connection和recordset记录集对象通过对xml的解析,利用记录集Addnew方法将数据写入Access数据库

set rootlist = Objxml.documentElement.getElementsByTagName("Table") '得到Objxml对象所有"Table"Node,注意xml是区分大小的
set conn = Server.CreateObject("ADODB.Connection")  '注意xml是区分大小的
connstr="××××××"    
conn.Open connstr               '建立数据库的连接
set Objrs = Server.CreateObject("ADODB.Recordset") 
Objrs.Open "tcell",conn,1,3     '打开tcell表,将数据写入数据库
for i=0 to (rootlist.length-1)  '遍历表节点 
   for j=0 to (rootlist.Item(i).childNodes.length-1)  '遍历行节点 
      for k=0 to (rootlist.Item(i).childNodes.Item(j).childNodes.length-1)   '遍历列节点 
          Objrs.AddNew 
          Objrs(1)="第"+CStr(i+1)+"页"+CStr(j+1)+"行"+CStr(k+1)+"列"   '定位cell上的单元格
          Objrs(2)=rootlist(i).childNodes(j).childNodes(k).Text        '写入单元格数据
          Objrs(3)=rootlist(i).childNodes(j).childNodes(k).childNodes(0).attributes.getNamedItem("Type").value      '写入单元格数据类型
          Objrs.Update 
      next 
   next 
next 
set Objrs=nothing 
set Conn=nothing
释放对象.
posted @ 2009-03-09 15:22  无很  阅读(730)  评论(0编辑  收藏  举报