PHP處理CSV表格文件的常用操作方法總結(jié)
要做在線Excel表格編輯功能,Excel的xls文件格式的解析就是個(gè)問題,畢竟這是微軟Office的私有專利格式.
所以要做的話還是用通用的csv(Comma Separated Value,逗號(hào)分隔值)格式吧.
各種辦公軟件都能識(shí)別csv表格,其實(shí)就是以特定分隔符(比如逗號(hào))分隔單元格的表格.
拿PHP來說,fgetcsv讀入csv表格,返回一個(gè)數(shù)組,
然后foreach輸出成HTML的<table>,這步操作幾行代碼就能實(shí)現(xiàn),非常簡單.
工作量主要還在于瀏覽器前端,建議你用jQuery進(jìn)行DOM和AJAX操作,
要實(shí)現(xiàn)phpMyAdmin那樣細(xì)粒度雙擊單元格編輯,然后AJAX提交也不難,
或者整個(gè)表格寫好后一次性$("form").serialize();然后AJAX提交也可以.
CSV表格的幾條規(guī)則:
1.每一行的單元格內(nèi)容之間用逗號(hào)分隔.
2.如果單元格的內(nèi)容本身有逗號(hào),這個(gè)單元格的內(nèi)容將會(huì)用引號(hào)包含.
3.如果單元格的內(nèi)容本身有引號(hào):
(1)引號(hào)不在首或尾,這個(gè)單元格內(nèi)容不會(huì)被引號(hào)包含.
(2)引號(hào)在首或尾,這個(gè)單元格內(nèi)容會(huì)被引號(hào)包含,并且原來首尾的引號(hào)會(huì)被轉(zhuǎn)義.
讀寫CSV
<?php
header('Content-Type: text/plain; charset=utf-8');
//導(dǎo)出CSV表格:數(shù)組轉(zhuǎn)CSV
$arr = array (
array('ab', 'cd'),
array('"a,b"', '"c,d"'),
);
$fp = fopen('file.csv', 'w');
foreach ($arr as $row) {
//將一行格式化為CSV并寫入文件指針
fputcsv($fp, $row);
}
fclose($fp);
unset($arr);
//導(dǎo)入CSV表格:CSV轉(zhuǎn)數(shù)組
$fp = fopen('file.csv', 'r');
while ( ($row = fgetcsv($fp)) !== FALSE ) {
//從文件指針中讀入一行并解析CSV
$arr[] = $row;
}
fclose($fp);
var_export($arr);
另存為一個(gè)獨(dú)立文件
download.php:
<?php $list = array ( 'aaa,bbb,ccc,dddd', '123,456,789', '"aaa","bbb"' ); session_start(); $_SESSION['outputArray']=$list; ?> <a href="test.php" target="_blank">下載csv文件</a>
test.php:
<?php
session_start();
$outputArray=$_SESSION['outputArray'];
header('Content-Type: application/csv');
header('Content-Disposition: attachment;filename="sales.csv"');
$output=fopen('php://output','w') or die("can not open");
foreach ($outputArray as $line) {
fputcsv($output, split(',', $line));
}
fclose($output) or die("can not close");
?>
自動(dòng)保存csv文件到指定地點(diǎn)
<?php
$list = array (
'aaa,bbb,ccc,dddd',
'123,456,789',
'"aaa","bbb"'
);
$fp = fopen('file.csv', 'w');
foreach ($list as $line) {
fputcsv($fp, split(',', $line));
}
fclose($fp);
?>
- php輸出表格的實(shí)現(xiàn)代碼(修正版)
- 將php數(shù)組輸出html表格的方法
- php將HTML表格每行每列轉(zhuǎn)為數(shù)組實(shí)現(xiàn)采集表格數(shù)據(jù)的方法
- php動(dòng)態(tài)實(shí)現(xiàn)表格跨行跨列實(shí)現(xiàn)代碼
- PHP處理excel cvs表格的方法實(shí)例介紹
- PHP 簡易輸出CSV表格文件的方法詳解
- php 分頁原理詳解
- php實(shí)現(xiàn)的漂亮分頁方法
- PHP分頁函數(shù)代碼(簡單實(shí)用型)
- PHP通用分頁類page.php[仿google分頁]
- php實(shí)現(xiàn)的后臺(tái)表格分頁功能示例
相關(guān)文章
PHP遞歸獲取目錄內(nèi)所有文件的實(shí)現(xiàn)方法
下面小編就為大家?guī)硪黄狿HP遞歸獲取目錄內(nèi)所有文件的實(shí)現(xiàn)方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-11-11
PHP substr()函數(shù)參數(shù)解釋及用法講解
substr() 函數(shù)返回字符串的一部分。這篇文章給大家介紹了PHP substr()函數(shù)參數(shù)解釋及用法講解,需要的朋友參考下2017-11-11
PHP提取字符串中的手機(jī)號(hào)正則表達(dá)式怎么寫
PHP通過正則表達(dá)式提取字符串中的手機(jī)號(hào)并判斷運(yùn)營商,簡單快速方便,能提取多個(gè)手機(jī)號(hào)。下面通過本文實(shí)例代碼給大家詳細(xì)介紹,需要的的朋友參考下吧2017-07-07

