下面我來給大家介紹在php中操作excel兩個實例,一個是利用PHP-ExcelReader導(dǎo)入excel并輸出,另一種是直接輸入excel并導(dǎo)出,下面看實例。
借助PHP-ExcelReader這個開源類,我們可以輕松地導(dǎo)入Excel文件數(shù)據(jù),示例代碼如下:
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導(dǎo)到excel,1.test.php,代碼如下:
- require_once 'reader.php';
- // ExcelFile($filename, $encoding);
- $data = new Spreadsheet_Excel_Reader();
- // Set output Encoding.
- $data->setOutputEncoding('gbk');
- //”data.xls”是指要導(dǎo)入到mysql中的excel文件
- $data->read('data.xls');
- @ $db = mysql_connect('localhost', 'root', '123456') or
- die("Could not connect to database.");//連接數(shù)據(jù)庫
- mysql_query("set names 'gbk'");//輸出中文
- mysql_select_db('mydb'); //選擇數(shù)據(jù)庫
- error_reporting(E_ALL ^ E_NOTICE);
- for ($i = 1; $i <= $data->sheets[0]['numRows']; $i++) {
- //以下注釋的for循環(huán)打印excel表數(shù)據(jù)
- /*
- for ($j = 1; $j <= $data->sheets[0]['numCols']; $j++) {
- echo """.$data->sheets[0]['cells'][$i][$j]."",";
- }
- echo "n";
- //PHP開源代碼
- */
- //以下代碼是將excel表數(shù)據(jù)【3個字段】插入到mysql中,根據(jù)你的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);
- }
- ?>
例.導(dǎo)出excel文件
比如我需要一個做php導(dǎo)出 excel的的程序,只需要把相關(guān)的數(shù)據(jù)導(dǎo)出到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;
- //輸出內(nèi)容如下:
- echo $head.$br;
- echo "test321318312".$tab;
- echo "string1";
- echo $br;
- echo "330181199006061234".$tab; //直接輸出會被Excel識別為數(shù)字類型
- echo "number";
- echo $br;
- echo "="330181199006061234"".$tab; //原樣輸出需要處理
- echo "string2";
- echo $br;
- ?>
在導(dǎo)出后會發(fā)現(xiàn)一個問題,如果數(shù)據(jù)是數(shù)字會出現(xiàn)一些意想不到的情況,比如,"012345",在excel中會變成"12345";如果輸入身份證號碼這樣的長數(shù)字,在excel中會用科學(xué)計數(shù)法表示出來,并且最后的四位數(shù)字會出現(xiàn)偏差,變位0000等情況,這就需要把單元格設(shè)置為文本格式,方法是
echo "="330181199006061234""如果程序是utf-8編碼的,還需要用iconv函數(shù)去轉(zhuǎn)碼,不然是會亂碼的,亂碼的。
另word格式導(dǎo)入類似,指定header就可以了,代碼如下:
- header("Content-Type: application/msword");
- header("Content-Disposition:attachment;filename=doc.doc");
新聞熱點
疑難解答