电子商务网站导入Excel数据的设计与实现
来源:岁月联盟
时间:2010-07-01
[关键词] Excel 商务网站 PHP
一、引言
在互联高速的今天,众多纷纷建立了各自的电子商务网站。本文论述了利用PHP、XML技术在网站中导入Excel数据的实现方法。
二、相关技术简介
1.XML技术。XML是Web上的数据表示和交换的标准,允许Internet的应用程序之间交换数据,并将数据的格式和内容与处理方法分离开来。XML具有良好的数据存储格式、开放性、可扩展性、自描述性、高度的结构化、便于网络传输等特性。
2.Exce l2003的XML支持。微软的Office 2003增加了XML的支持功能。在Excel 2003中通过添加XML架构定义(XSD文件)到工作簿,提高本机 XML 的支持。可以在 Excel 电子表格和 XML架构之间创建一个映像,轻松地导入从其他数据库和应用程序中创建的XML数据,将XML元素从XML架构中映像到Excel工作表的单元格,也可将Excel工作表数据导出为XML数据,用于与其他数据库和应用程序的交互。
3.PHP和MySQL数据库。PHP是当前流行的开发网站应用程序的一种Web服务器脚本语言,PHP提供的DOM解析器可以处理XML文档。DOM解析器一次性地将整个XML文档读到内存,并且DOM解析器为XML文档的每个元素创建一个树型结构,在内存中保存其树型结构。MySQL是一个免费的SQL数据库服务器软件,广泛应用于网站的后台数据库。PHP和MySQL的组合是构建商务网站的一种解决方案。
三、Excel数据导入到网站的数据库的实现
下面以网上书店管理系统为例,介绍如何将Excel文件中的图书信息导入到网站数据库的实现过程。这里以MySQL作为网站的后台数据库。
1.将Excel工作表另存为Excel XML表格文档。在Excel 2003中可以将工作表另存为XML表格文档。Excel XML表格文档实际上是文本文件,它直接根据Excel工作表的数据类型,将工作表保存为XML文档,可以在Excel中打开XML表格文档并且象标准Excel电子表格一样进行编辑。上述图书信息的Excel工作表另存为XML表格文档后,其XML部分内容如下:
<Workbook>
<Worksheet ss:Name=“Sheet1”>
<Table ss:ExpandedColumnCount=”3”ss:ExpandedRowCount=”150”>
... <Row>
<Cell><Data ss:Type=“String”>电子商务概论</Data></Cell>
<Cell><Data ss:Type=“String”>北京大学出版社</Data></Cell>
<Cell><Data ss:Type=“Number”>23.6</Data></Cell>
</Row>... </Table> ... </Worksheet>
</Workbook>
分析上面的部分XML内容格式,得到XML表格文档的根元素是<Workbook>,代表一个工作簿。在<Workbook>根元素下,<Worksheet>子元素定义当前工作簿里的工作表,其ss:Name属性指定工作表名称,在一个有效的XML表格文档里,至少需要该元素的一个实例。每个<Worksheet>元素包含一个<Table>元素,定义一个工作表的属性和内容,其中ss:ExpandedColumnCount属性指定工作表的总列数,ss:ExpandedRowCount属性指定工作表的总行数。<Table>元素的子元素是<Row>,每个<Row>元素包含一个或者多个<Cell>元素,而<Cell>元素又包含<Data>元素,指定单元格的值。因此工作表中每行数据由一个<Row>元素来定义,每个单元格由<Cell>元素定义。
2.设计Excel XML表格文档导入到网站数据库的程序。对于另存的Excel XML表格文档,通过访问网站提供的表单页面和程序,利用HTTP协议,将它上传到网站,由Web服务器端的PHP脚本程序对上传的XML文档进行解析,读取其每个<Row>元素的数据,作为一个新记录插入到MySQL数据库。导入Excel XML表格文档的程序设计如下:
(1)创建Excel XML表格的XML文档对象。PHP的全局数组$_FILES存放了有关上传文件的信息。假设上传表单的文件域名为file,$_FILES['file']['tmp_name']数组元素就存放了上传的临时文件名。下面代码根据上传的XML文档,创建一个文档对象。$dom = DOMDocument::load($_FILES['file']['tmp_name']);
(2)读取XML文档的指定元素。利用文档对象的getElementsByTagName方法获取XML文档中指定的所有子元素。下面代码返回XML文档中所有<Row>元素及其子孙元素组成的对象集合。$rows =$dom->getElementsByTagName('Row');根据上述设计思想,下面的PHP程序功能是读取上传的Excel XML表格文档,外循环读取每个<Row>元素对应的对象,内循环读取一个<Row>元素对象中的每个<Cell>子元素对象,由$cell->nodeValue属性得到<Cell>元素的值,即其中<Data>元素的内容。根据读取的一行数据内容构建一条INSERT命令,将新记录插入到MySQL数据库。
<?php
…
if ( $_FILES['file']['tmp_name'] ) {
$dom = DOMDocument::load( $_FILES['file']['tmp_name'] );
$rows = $dom->getElementsByTagName( 'Row' );
foreach ($rows as $row) {
$cells = $row->getElementsByTagName('Cell');
$vals=“”;
foreach( $cells as $cell )
$vals=$vals.“'”.$cell->nodeValue.“'”;
$vals=LEFT($vals,STRLEN($vals)-1);
$sql=“insert into BookStore(booktitle, publishor, price) values(“. $vals. “);”;
mysql_query($sql,$conn);
} } }
?>
四、结束语
本文介绍的Excel数据导入程序是针对某一种格式的Excel工作表的。利用这种Excel数据导入方法,实现原始数据到网站数据库的自动导入,避免了大量数据重新输入的问题,提高了管理人员的工作效率,可应用于商务网站管理平台。
:
[1]微软:Excel 2003帮助[EB/OL].http://office.microsoft.com/zh-cn/excel/
[2]徐辉:PHP Web程序设计教程与实验[M].北京:清华大学出版社,2008
下一篇:移动商务组织的创新模式