论文部分内容阅读
摘要:本文介绍了在PHP环境下,设计Excel的数据导入数据库和管理信息系统数据保存为Excel的方法。此方法不仅能保证数据导入数据库的完整性,而且能免去系统数据导出后重新编辑的复杂性。与以往数据的导入导出相比更能体现出本设计的创新性与简易性。而将此设计嵌入到其他软件系统中更能使系统变得完整与快捷。
关键词:PHP;Excel;系统数据;导入;导出
【中图分类号】:TN948.61
1 引言
随着计算机技术的成熟和多种高级语言的发展,开发一个软件项目已不仅仅局限于一两种语言上。PHP脚本语言以其简洁、方便、快捷和稳定的优点,越来越受到众多软件开发者和网站制作者的青睐。通常一个企业或机关常常需要使用Excel进行办公,而其原先所安装的软件中常常因不能直接与Excel进行数据交流而导致工作量变大,浪费大量的人力资源。本文在这里基于PHP来实现Excel表格信息的向MySQL数据库导入和将页面所显示的查询结果导出为Excel工作表的功能。
2 Excel导入数据库的原理
2.1概述
在此怎样将读来的数据放入数据库是实现功能的关键。我们使用前人编写好的一个PHP类读取Excel内容。
连接数据库后,使用PHP读取Excel内容时,在此以一个实例(
$data= new Spreadsheet_Excel_Reader ( ))将Excel文件信息进行读取。它将会导出Excel文件中所有可以识别的数据并存储在一个对象中。不过这些数据是存储在2个数组中的,而目前尚无方法或函数能实现对这些数据的访问。但可以简单的使用sheets数组名编辑其中的数据。因为sheets数组包含了读入对象的大量数据。它将会导出Excel文件中所有可以识别的数据并将其存储在一个2维数组中 。另外,只有准确定位了各个字段所表示的数据才能将数据无差错的导入到数据库中。
2.2 流程分析
根据导入原理所出示的流程图,如图1所示:
图1 导入原理流程图
总体流程分析:根据图1的流程图可描述如下:用户在本地计算机上选定一个文件后,当要上传到数据库时,程序先要检查是否为.xls后缀,如果不是则程序提示所选文件格式错误。若是.xls后缀的文件则继续运行程序加载reader类。PHP通过reader类实现将Excel中的数据读取到sheets数组中并待用。最后编写PHP代码将sheets中的数据插入到数据库中,导入过程结束。
2.3详细设计与实现
按照图1所示的流程,本文将给出用PHP导入Excel的详细设计方案。首先检查是否后缀为.xls的文件,然后读取表格数据,最后将数据利用嵌入的sql语句导入到数据库中。
2.3.1 检查是否为.xls后缀的文件
这里自定义了一个新的函数,利用此函数,在用户点击导入数据的时候检查所选文件的后缀名。函数内容示例如下:
function import_check() //函数名
{
var f_content = form1.file.value;
Var fileext=f_content.substring(f_content.lastIndexOf("."),f_content.length)
fileext=fileext.toLowerCase()
if (fileext!='.xls')
{
alert("对不起,导入数据格式必须是xls格式文件,请您调整格式后重新上传!");
return false;
}
}
用户在完成选择后在点击上传时调用import_check()函数检查后缀名。示例如下:
2.3.2 加载reader.php读取Excel中的数据
当所选文件满足条件后进行加载reader函数用来读取Excel表格数据。示例如下:
require('reader.php');
$upload_file_name=$_FILES['upload_file']['name'];
$data=new Spreadsheet_Excel_Reader(); //新建一个实例;
$data->setOutputEncoding('gb2312'); //设置输出文本格式;
$data->read("$upload_file_name"); //读取Excel文件中的表格数据
@ $db = mysql_connect('localhost', root, '') or die("Could not
connect to database."); //连接数据库
mysql_query("set names 'gb2312'"); //输出中文
mysql_select_db('tzsdb'); //选择数据库
error_reporting(E_ALL ^ E_NOTICE);
2.3.3 将表格數据导入到数据库
当完成数据读取后,Excel中的表格数据被存在了2个数组中,通过简单的调用sheets数组来将数据有条理的导入到数据库中,示例如下: for($i=1;$i<=$data->sheets[0]['numRows'];$i++){
$sql = "INSERT INTO tzs VALUES(
'". $data->sheets[0]['cells'][$i][1]."',//读取第一列的所有数据;
'". $data->sheets[0]['cells'][$i][2]."',//读取第二列的所有数据;
)";
mysql_query($sql);
}
echo"信息导入成功!";
i代表行数,这里是将2列数据的所有行导入到名为tzs的数据库。
在导入数据表之前最好在Excel中以列为单位编辑好数据,因为导入时Excel表中的一列数据对应sql数据库中的一个字段。
3系统数据导出为Excel的原理
3.1概述
设计此功能的目的是将一份表单查询或排序后的结果导出为Excel来进行备份或者拷贝给其他用户使用。使用Output Control 函数可以自由地控制脚本中数据的输出。它非常地有用,特别是对于:当想在数据已经输出后,再输出文件头的情况。输出控制函数不对使用 header() 或 setcookie(), 发送的文件头信息产生影响,只对那些类似于 echo() 和 PHP 代码的数据块有作用。最终我们会做一个新的.html页面文件,将查询后的页面信息利用变量导入进去,最后导出为Excel,导出的Excel内容恰好就是新建的.html中的内容。
3.2 流程分析
根据事先分析的系统数据导出为Excel原理设计出如图2所示的流程图。
图2系统数据导出为Excel原理设计图
总体流程分析:依据图2的流程图可以描述如下:首先,用户在查询或排序完成后我们将会利用ob_start();ob_get_contents();ob_end_flush();等函数将页面内容获取到browser的cache中。其次,将页面内容的赋值给自定义的一个变量。然后,我们要做的是新建或事先建好一个.html页面文件,将查询后的页面信息利用刚定义的变量导入进去,这样就实现了利用html文件的中间跳板作用。最后,引用能实现导出功能的PHP文件将中间跳板作用的html文件内容下载为Excel表格。
3.3详细设计与实现
按照图2所示的流程和总体流程分析,本文将给出用PHP将查询结果导出为Excel的详细设计方案。首先读取页面内容,然后向跳板html文件写入数据,最后html里的数据引用新的PHP代码下载为Excel格式。
3.3.1 读取页面内容
读取页面内容时使用ob_start();ob_get_contents();ob_end_flush();函数。使用这三个函数可以将页面内容获取到browser的cache中,再将cache里的数据赋值给自定义的一个变量进行页面内容的操作。操作示例如下:
ob_start();//打开browser的缓冲区
echo "";
";
$content = ob_get_contents();//将缓冲区数据赋值给自定义的函数
ob_end_flush();//输出页面内容并关闭缓冲区
3.3.2 缓冲区数据导入到另一個html
当完成页面数据获取后,下一步就是将数据导入到一个作为跳板的html中。示例如下:
$fp = fopen("0001.html", "w");//打开跳板html文件
fwrite($fp, $content);//将cache数据写入到跳板html
fclose($fp);//关闭跳板文件
3.3.3 跳板html内容的导出
当完成页面数据获取及保存到另一个跳板html文件中去后,最后一步就是把跳板html数据导出,这里我们用PHP头函数将跳板文件导出为Excel。示例如下:
<?php
header("Content-type:application/vnd.ms-excel");//设置下载类型为Excel文件
header("Content-Disposition:filename=test.xls");
$url="http://localhost/yjsxxglxt/0001.html";
//资源定位跳板html文件位置
echo file_get_contents( $url );
//读取跳板html数据
?>
这样一个能将查询或排序后的页面内容下载为Excel格式文件的功能就成功实现了,从而方便数据的处理,节省了办公时间。
4 结束语
本文从PHP实现Excel导入导出功能的原理出发,结合自己原创性想法,新辟蹊径,合理实现Excel导入数据库及页面内容导出为Excel的功能。结合其他软件来看,更能体现Excel表格导入导出功能的重要性,有益于办公效率的提高和资源的有效利用。
参考文献:
[1][美]NickKew 著.《Apache模块开发指南》.出版社:电子工业出版社.2008
[2][美]沃尔曼等 著,岳丽华,龚育昌等 译.《数据库系统基础教程》.出版社:机械工业出版社.2003
[3]张海藩 著.《软件工程导论(第5版)》.出版社:清华大学出版社.2008
[4]徐辉 著.《基于XML的Excel和MySQL数据交换的研究及实现》.[期刊论文]-《电脑开发与应用》.2009年3期
[5]周寅 著.《在PHP中实现Excel工作表数据的导入导出》.[期刊论文]-《电脑学习》.2006年4期
[6]赵鹤琴 著.《设计动态网站的最佳方案:Apache+PHP+MySQL》.[期刊论文]-《计算机工程与设计》.2007年4期
关键词:PHP;Excel;系统数据;导入;导出
【中图分类号】:TN948.61
1 引言
随着计算机技术的成熟和多种高级语言的发展,开发一个软件项目已不仅仅局限于一两种语言上。PHP脚本语言以其简洁、方便、快捷和稳定的优点,越来越受到众多软件开发者和网站制作者的青睐。通常一个企业或机关常常需要使用Excel进行办公,而其原先所安装的软件中常常因不能直接与Excel进行数据交流而导致工作量变大,浪费大量的人力资源。本文在这里基于PHP来实现Excel表格信息的向MySQL数据库导入和将页面所显示的查询结果导出为Excel工作表的功能。
2 Excel导入数据库的原理
2.1概述
在此怎样将读来的数据放入数据库是实现功能的关键。我们使用前人编写好的一个PHP类读取Excel内容。
连接数据库后,使用PHP读取Excel内容时,在此以一个实例(
$data= new Spreadsheet_Excel_Reader ( ))将Excel文件信息进行读取。它将会导出Excel文件中所有可以识别的数据并存储在一个对象中。不过这些数据是存储在2个数组中的,而目前尚无方法或函数能实现对这些数据的访问。但可以简单的使用sheets数组名编辑其中的数据。因为sheets数组包含了读入对象的大量数据。它将会导出Excel文件中所有可以识别的数据并将其存储在一个2维数组中 。另外,只有准确定位了各个字段所表示的数据才能将数据无差错的导入到数据库中。
2.2 流程分析
根据导入原理所出示的流程图,如图1所示:
图1 导入原理流程图
总体流程分析:根据图1的流程图可描述如下:用户在本地计算机上选定一个文件后,当要上传到数据库时,程序先要检查是否为.xls后缀,如果不是则程序提示所选文件格式错误。若是.xls后缀的文件则继续运行程序加载reader类。PHP通过reader类实现将Excel中的数据读取到sheets数组中并待用。最后编写PHP代码将sheets中的数据插入到数据库中,导入过程结束。
2.3详细设计与实现
按照图1所示的流程,本文将给出用PHP导入Excel的详细设计方案。首先检查是否后缀为.xls的文件,然后读取表格数据,最后将数据利用嵌入的sql语句导入到数据库中。
2.3.1 检查是否为.xls后缀的文件
这里自定义了一个新的函数,利用此函数,在用户点击导入数据的时候检查所选文件的后缀名。函数内容示例如下:
function import_check() //函数名
{
var f_content = form1.file.value;
Var fileext=f_content.substring(f_content.lastIndexOf("."),f_content.length)
fileext=fileext.toLowerCase()
if (fileext!='.xls')
{
alert("对不起,导入数据格式必须是xls格式文件,请您调整格式后重新上传!");
return false;
}
}
用户在完成选择后在点击上传时调用import_check()函数检查后缀名。示例如下:
2.3.2 加载reader.php读取Excel中的数据
当所选文件满足条件后进行加载reader函数用来读取Excel表格数据。示例如下:
require('reader.php');
$upload_file_name=$_FILES['upload_file']['name'];
$data=new Spreadsheet_Excel_Reader(); //新建一个实例;
$data->setOutputEncoding('gb2312'); //设置输出文本格式;
$data->read("$upload_file_name"); //读取Excel文件中的表格数据
@ $db = mysql_connect('localhost', root, '') or die("Could not
connect to database."); //连接数据库
mysql_query("set names 'gb2312'"); //输出中文
mysql_select_db('tzsdb'); //选择数据库
error_reporting(E_ALL ^ E_NOTICE);
2.3.3 将表格數据导入到数据库
当完成数据读取后,Excel中的表格数据被存在了2个数组中,通过简单的调用sheets数组来将数据有条理的导入到数据库中,示例如下: for($i=1;$i<=$data->sheets[0]['numRows'];$i++){
$sql = "INSERT INTO tzs VALUES(
'". $data->sheets[0]['cells'][$i][1]."',//读取第一列的所有数据;
'". $data->sheets[0]['cells'][$i][2]."',//读取第二列的所有数据;
)";
mysql_query($sql);
}
echo"信息导入成功!";
i代表行数,这里是将2列数据的所有行导入到名为tzs的数据库。
在导入数据表之前最好在Excel中以列为单位编辑好数据,因为导入时Excel表中的一列数据对应sql数据库中的一个字段。
3系统数据导出为Excel的原理
3.1概述
设计此功能的目的是将一份表单查询或排序后的结果导出为Excel来进行备份或者拷贝给其他用户使用。使用Output Control 函数可以自由地控制脚本中数据的输出。它非常地有用,特别是对于:当想在数据已经输出后,再输出文件头的情况。输出控制函数不对使用 header() 或 setcookie(), 发送的文件头信息产生影响,只对那些类似于 echo() 和 PHP 代码的数据块有作用。最终我们会做一个新的.html页面文件,将查询后的页面信息利用变量导入进去,最后导出为Excel,导出的Excel内容恰好就是新建的.html中的内容。
3.2 流程分析
根据事先分析的系统数据导出为Excel原理设计出如图2所示的流程图。
图2系统数据导出为Excel原理设计图
总体流程分析:依据图2的流程图可以描述如下:首先,用户在查询或排序完成后我们将会利用ob_start();ob_get_contents();ob_end_flush();等函数将页面内容获取到browser的cache中。其次,将页面内容的赋值给自定义的一个变量。然后,我们要做的是新建或事先建好一个.html页面文件,将查询后的页面信息利用刚定义的变量导入进去,这样就实现了利用html文件的中间跳板作用。最后,引用能实现导出功能的PHP文件将中间跳板作用的html文件内容下载为Excel表格。
3.3详细设计与实现
按照图2所示的流程和总体流程分析,本文将给出用PHP将查询结果导出为Excel的详细设计方案。首先读取页面内容,然后向跳板html文件写入数据,最后html里的数据引用新的PHP代码下载为Excel格式。
3.3.1 读取页面内容
读取页面内容时使用ob_start();ob_get_contents();ob_end_flush();函数。使用这三个函数可以将页面内容获取到browser的cache中,再将cache里的数据赋值给自定义的一个变量进行页面内容的操作。操作示例如下:
ob_start();//打开browser的缓冲区
echo "
学号 | ";};姓名 | ";};
$content = ob_get_contents();//将缓冲区数据赋值给自定义的函数
ob_end_flush();//输出页面内容并关闭缓冲区
3.3.2 缓冲区数据导入到另一個html
当完成页面数据获取后,下一步就是将数据导入到一个作为跳板的html中。示例如下:
$fp = fopen("0001.html", "w");//打开跳板html文件
fwrite($fp, $content);//将cache数据写入到跳板html
fclose($fp);//关闭跳板文件
3.3.3 跳板html内容的导出
当完成页面数据获取及保存到另一个跳板html文件中去后,最后一步就是把跳板html数据导出,这里我们用PHP头函数将跳板文件导出为Excel。示例如下:
<?php
header("Content-type:application/vnd.ms-excel");//设置下载类型为Excel文件
header("Content-Disposition:filename=test.xls");
$url="http://localhost/yjsxxglxt/0001.html";
//资源定位跳板html文件位置
echo file_get_contents( $url );
//读取跳板html数据
?>
这样一个能将查询或排序后的页面内容下载为Excel格式文件的功能就成功实现了,从而方便数据的处理,节省了办公时间。
4 结束语
本文从PHP实现Excel导入导出功能的原理出发,结合自己原创性想法,新辟蹊径,合理实现Excel导入数据库及页面内容导出为Excel的功能。结合其他软件来看,更能体现Excel表格导入导出功能的重要性,有益于办公效率的提高和资源的有效利用。
参考文献:
[1][美]NickKew 著.《Apache模块开发指南》.出版社:电子工业出版社.2008
[2][美]沃尔曼等 著,岳丽华,龚育昌等 译.《数据库系统基础教程》.出版社:机械工业出版社.2003
[3]张海藩 著.《软件工程导论(第5版)》.出版社:清华大学出版社.2008
[4]徐辉 著.《基于XML的Excel和MySQL数据交换的研究及实现》.[期刊论文]-《电脑开发与应用》.2009年3期
[5]周寅 著.《在PHP中实现Excel工作表数据的导入导出》.[期刊论文]-《电脑学习》.2006年4期
[6]赵鹤琴 著.《设计动态网站的最佳方案:Apache+PHP+MySQL》.[期刊论文]-《计算机工程与设计》.2007年4期