网络在线考试系统中数据导入导出的PHP实现

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

网络在线考试系统中数据导入导出的PHP 实现

作者:杨鑫

来源:《电脑知识与技术》2016年第18期

摘要:在信息系统的开发过程中,经常要将电子表格导入到网站数据库表,有时候还需要将数据库表中的内容导出到Excel电子表格。该文介绍了一种基于PHP的电子表格导入导出技术:将电子表格保存为CSV格式,再读出每行数据,分隔每行数据为不同的字段,再把字段写入数据库表;此外,PHP还提供了写Excel电子表格的功能。

关键词:Excel电子表格;MySql数据表;导入;导出

中图分类号:TP317 文献标识码:A 文章编号:1009-3044(2016)18-0091-02

PHP Implementation of Data Import and Export in the Online Examination System

YANG Xin

(Department of Computer Science,Wuhan Polytechnic, Wuhan 430074, China)

Abstract: In the development process of information system, often need to import the spreadsheet to the website database table, and sometimes also need to export the contents of the database table to Excel electronic form. This paper introduces a kind of based on PHP spreadsheet import and export technology: save the spreadsheet as a file in CSV format, read out data for each line, separating each row of data for different field, then the field is written as a database table;in addition, PHP also provides functionality to write Excel spreadsheet.

Key words:Excel table; MySQL table; import; export

本网络在线考试系统采用LAMP(Linux+Apache+MySQL+PHP)平台。采用B/S架构,根据武汉职业技术学院精品资源共享课《管理信息系统开发》在线考试系统需求,本考试系统支持单选题、多选题、判断题等客观题题型,支持将考生信息和试题从Excel中导入到系统(MySQL数据库),还支持将成绩信息(MySQL数据表)导出到Excel电子表格。

1 从Excel电子表格导入到MySQL数据表

将电子表格Excel导入到MySQL数据库表。为了最简洁地把问题讲述清楚,我们以最简单的电子表格stu.xls为例,stu.xls中保存中考生的信息,包括学号、姓名和成绩,其中考前成绩为空,考试结束后成绩不为空。

1.1 电子表格转变为纯文本格式

第一步,使用办公软件Excel将电子表格stu.xls另存为stu.csv格式,如图1所示。CSV格式实际上是一种以逗号为分隔的纯文本格式,如果使用记事本打开stu.csv文件则显示为如图2的纯文本格式。

1.2 纯文本文件的分割

第二步:分割纯文本文件stu.csv。因为该文件是纯文本文件,容易想到将该文件分割为不同的行,每一行就是一个考生信息的记录(除首行是标题信息外)。然后再用逗号将每一行继续分割为不同的字段值。在php中提供了字符串分割函数explode。该函数的功能是分割字符串为字符型数组。例如:执行语句$st=explode(“,”,”01,刘备”)后,可以得到

$st[0]=”01”,$st[1]=”刘备”。

关键代码为:

$content=file_get_contents("cj.csv");

$temp = explode("\r\n",$content);

$content就是文本文件中的内容,包含特殊字符回车和换行。因此可以考虑使用回车和换行字符将$content分割为字符型数组。上面两行代码执行之后,$temp[0]=”学号,姓名,成绩”;$tem[1]=”01,刘备”;$temp[2]=”02,关羽”;$temp[3]=”03,张飞”;$temp[4]=”04,赵云”;

1.3 继续分割记录,并写入MySQL数据库表

第三步:继续分割文本文件的每一行。即分割$temp数组的每一个元素。使用逗号来分割。分割得到的结果是不同的字段,例如可以得到“01”、“刘备”、“03”、“赵云”等等信息。然后顺便写入到MySQL数据库表中。关键代码为:

$conn=mysql_connect("127.0.0.1","root","root") or die ("connect mysql false");

mysql_select_db("db_chengji", $conn);

mysql_query("set names utf8");

for ($j=1;$j

{

$st=explode(",",$temp[$j]);

$sql3="insert into tb_cj (xuehao,xingming,score) values( '".$st[0]."','".$st[1]."','-1')";

mysql_query($sql3,$conn);

}

上面的代码,将Excel表中的内容分割为多行,每一行保存在数组$temp中,再将字符型数组的每一个元素分割为单个的字段信息。

考虑到标题无需导入到数据库表,因此上面的循环变量$j从1开始(有意跳过0,忽略标题信息),再将记录插入MySQL数据表的时候,将成绩项用字符串’-1’来填充(-1表示考试前)。

Excel文件stu.csv导入到数据表tb_cj后结果如图3所示。

2 从MySQL数据表导出到Excel电子表格

考试后需要将考生的成绩导出到Excel 文件。导出为Excel文件非常简单,只需要把成绩显示在html的table中,然后在php文件的前面加上下面两个语句即可:

header("Content-type:application/vnd.ms=excel");

header("Content-Disposition:attachment;filename=cj.xls");

完整代码如下:

header("Content-type:application/vnd.ms=excel");

header("Content-Disposition:attachment;filename=cj.xls");

$conn=mysql_connect("127.0.0.1","root","root") or die ("connect mysql false");

mysql_query("set names utf8");

$db_selected = mysql_select_db("db_chengji", $conn);

$sql=mysql_query("select * from tb_cj",$conn);

?>

相关文档
最新文档