下面我來給大家介紹在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
代碼如下 復制代碼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");