PHP导入导出Excel文件的方法
下面我来给大家介绍在php中操作excel两个实例,一个是利用PHP-ExcelReader导入excel并输出,另一种是直接输入excel并导出,下面看实例。
借助PHP-ExcelReader这个开源类,我们可以轻松地导入Excel文件数据,示例代码如下:
PHP-ExcelReader下载地址:http://sourceforge.net/projects/phpexcelreader/
<?php require_once 'Excel/reader.php'; $data = new Spreadsheet_Excel_Reader(); $data->setOutputEncoding('gbk'); $data->read('test.xls'); for ($i = 1; $i <= $data->sheets[0]['numRows']; $i++) { for ($j = 1; $j <= $data->sheets[0]['numCols']; $j++) { echo "\"".$data->sheets[0]['cells'][$i][$j]."\","; } echo "\n"; } ?>
例.phpexcel导到excel,1.test.php,代码如下:
<?php require_once 'reader.php'; // ExcelFile($filename, $encoding); $data = new Spreadsheet_Excel_Reader(); // Set output Encoding. $data->setOutputEncoding('gbk'); //"data.xls"是指要导入到mysql中的excel文件 $data->read('data.xls'); @ $db = mysql_connect('localhost', 'root', '123456') or die("Could not connect to database.");//连接数据库 mysql_query("set names 'gbk'");//输出中文 mysql_select_db('mydb'); //选择数据库 error_reporting(E_ALL ^ E_NOTICE); for ($i = 1; $i <= $data->sheets[0]['numRows']; $i++) { //以下注释的for循环打印excel表数据 /* for ($j = 1; $j <= $data->sheets[0]['numCols']; $j++) { echo """.$data->sheets[0]['cells'][$i][$j]."","; } echo "\n"; //PHP开源代码 */ //以下代码是将excel表数据【3个字段】插入到mysql中,根据你的excel表字段的多少,改写以下代码吧! $sql = "INSERT INTO test VALUES('". $data->sheets[0]['cells'][$i][1]."','". $data->sheets[0]['cells'][$i][2]."','". $data->sheets[0]['cells'][$i][3]."')"; echo $sql.' '; $res = mysql_query($sql); } ?>
例.导出excel文件
比如我需要一个做php导出 excel的的程序,只需要把相关的数据导出到excel表就可以了,这么简单的操作就不需要用那些类库什么的了,直接用header的方式就可以了:header("Content-type:application/vnd.ms-excel");
看看如下代码如下:
<?php header("Content-type:application/vnd.ms-excel"); header("Content-Disposition:attachment;filename=Export_test.xls"); $tab="t"; $br="\n"; $head="编号".$tab."备注".$br; //输出内容如下: echo $head.$br; echo "test321318312".$tab; echo "string1"; echo $br; echo "330181199006061234".$tab; //直接输出会被Excel识别为数字类型 echo "number"; echo $br; echo "=\"330181199006061234\"".$tab; //原样输出需要处理 echo "string2"; echo $br; ?>
在导出后会发现一个问题,如果数据是数字会出现一些意想不到的情况,比如,"012345",在excel中会变成"12345";如果输入身份证号码这样的长数字,在excel中会用科学计数法表示出来,并且最后的四位数字会出现偏差,变位0000等情况,这就需要把单元格设置为文本格式,方法是
echo "="330181199006061234""如果程序是utf-8编码的,还需要用iconv函数去转码,不然是会乱码的,乱码的。
另word格式导入类似,指定header就可以了,代码如下:
header("Content-Type: application/msword"); header("Content-Disposition:attachment;filename=doc.doc");
本文地址:http://www.phprm.com/develop/fs1178.html
转载随意,但请附上文章地址:-)