要做在線Excel表格編輯功能,Excel的xls文件格式的解析就是個問題,畢竟這是微軟Office的私有專利格式.
所以要做的話還是用通用的csv(Comma Separated Value,逗號分隔值)格式吧.
各種辦公室軟體都能辨識csv表格,其實就是以特定分隔符號(如逗號)分隔儲存格的表格.
拿PHP來說,fgetcsv讀入csv表格,傳回一個陣列,
然後foreach輸出成HTML的
,這步驟操作幾行程式碼就能實現,非常簡單.
工作量主要還在於瀏覽器前端,建議你用jQuery進行DOM和AJAX操作,
要實現phpMyAdmin那樣細粒度雙擊單元格編輯,然後AJAX提交也不難,
或者整個表格寫好後一次性$("form").serialize();然後AJAX提交也可以.CSV表格的幾條規則:
1.每一行的單元格內容之間用逗號分隔.
2.如果單元格的內容本身有逗號,這個單元格的內容將會用引號包含.
3.如果單元格的內容本身有引號:
(1)引號不在首或尾,這個單元格內容不會被引號包含.
(2)引號在首或尾,這個單元格內容會被引號包含,並且原來首尾的引號會被轉義.
讀寫CSV
<?php
header('Content-Type: text/plain; charset=utf-8');
//导出CSV表格:数组转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);
//导入CSV表格:CSV转数组
$fp = fopen('file.csv', 'r');
while ( ($row = fgetcsv($fp)) !== FALSE ) {
//从文件指针中读入一行并解析CSV
$arr[] = $row;
}
fclose($fp);
var_export($arr);
登入後複製
另存為一個獨立檔案
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");
?>
登入後複製
自動保存csv檔案到指定地點
<?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處理CSV表格檔案的常用操作方法總結相關文章請關注PHP網網!