当前位置:首页 > PHP教程 > php高级应用 > 列表

PHP导入导出Excel文件的方法

发布:smiling 来源: PHP粉丝网  添加日期:2014-01-09 20:32:48 浏览: 评论:0 

下面我来给大家介绍在php中操作excel两个实例,一个是利用PHP-ExcelReader导入excel并输出,另一种是直接输入excel并导出,下面看实例。

借助PHP-ExcelReader这个开源类,我们可以轻松地导入Excel文件数据,示例代码如下:

PHP-ExcelReader下载地址:http://sourceforge.net/projects/phpexcelreader/

  1. <?php  
  2. require_once 'Excel/reader.php';  
  3. $data = new Spreadsheet_Excel_Reader();  
  4. $data->setOutputEncoding('gbk');  
  5. $data->read('test.xls');  
  6. for ($i = 1; $i <= $data->sheets[0]['numRows']; $i++) {  
  7.     for ($j = 1; $j <= $data->sheets[0]['numCols']; $j++) {  
  8.         echo """.$data->sheets[0]['cells'][$i][$j]."",";  
  9.     }  
  10.     echo "n";  
  11. }  
  12. ?> 

例.phpexcel导到excel,1.test.php,代码如下:

  1. require_once 'reader.php'
  2. // ExcelFile($filename, $encoding); 
  3. $data = new Spreadsheet_Excel_Reader(); 
  4. // Set output Encoding. 
  5. $data->setOutputEncoding('gbk'); 
  6. //”data.xls”是指要导入到mysql中的excel文件 
  7. $data->read('data.xls'); 
  8. $db = mysql_connect('localhost''root''123456'or  
  9.        die("Could not connect to database.");//连接数据库 
  10. mysql_query("set names 'gbk'");//输出中文 
  11. mysql_select_db('mydb');       //选择数据库 
  12. error_reporting(E_ALL ^ E_NOTICE); 
  13. for ($i = 1; $i <= $data->sheets[0]['numRows']; $i++) { 
  14. //以下注释的for循环打印excel表数据 
  15. /* 
  16. for ($j = 1; $j <= $data->sheets[0]['numCols']; $j++) { 
  17.             echo """.$data->sheets[0]['cells'][$i][$j]."","; 
  18.            } 
  19.            echo "n";  
  20. //PHP开源代码 
  21.  
  22. */ 
  23. //以下代码是将excel表数据【3个字段】插入到mysql中,根据你的excel表字段的多少,改写以下代码吧! 
  24.     $sql = "INSERT INTO test VALUES('"
  25.                $data->sheets[0]['cells'][$i][1]."','"
  26.                  $data->sheets[0]['cells'][$i][2]."','"
  27.                  $data->sheets[0]['cells'][$i][3]."')"
  28.     echo $sql.' 
  29. '; 
  30.        $res = mysql_query($sql); 
  31. ?> 

例.导出excel文件

比如我需要一个做php导出 excel的的程序,只需要把相关的数据导出到excel表就可以了,这么简单的操作就不需要用那些类库什么的了,直接用header的方式就可以了:header("Content-type:application/vnd.ms-excel");

看看如下代码如下:

  1. <?php  
  2. header("Content-type:application/vnd.ms-excel");  
  3. header("Content-Disposition:attachment;filename=Export_test.xls");  
  4. $tab="t"$br="n"
  5. $head="编号".$tab."备注".$br
  6. //输出内容如下:   
  7. echo $head.$br
  8. echo  "test321318312".$tab;   
  9. echo  "string1";  
  10. echo  $br
  11. echo  "330181199006061234".$tab;  //直接输出会被Excel识别为数字类型 
  12. echo  "number";  
  13. echo  $br
  14. echo  "="330181199006061234"".$tab;  //原样输出需要处理 
  15. echo  "string2";  
  16. echo  $br
  17. ?> 

在导出后会发现一个问题,如果数据是数字会出现一些意想不到的情况,比如,"012345",在excel中会变成"12345";如果输入身份证号码这样的长数字,在excel中会用科学计数法表示出来,并且最后的四位数字会出现偏差,变位0000等情况,这就需要把单元格设置为文本格式,方法是

echo "="330181199006061234""如果程序是utf-8编码的,还需要用iconv函数去转码,不然是会乱码的,乱码的。

另word格式导入类似,指定header就可以了,代码如下:

  1. header("Content-Type:   application/msword");         
  2. header("Content-Disposition:attachment;filename=doc.doc"); 

Tags: 导入 导出 Excel

分享到: