首页 > php开发 > PHP导入导出Excel文件的方法

PHP导入导出Excel文件的方法

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


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

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

例.导入Excel文件

<?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/54184.html

收藏随意^^请保留教程地址.

标签:iconv select for循环

相关文章

发表留言