首頁 >後端開發 >php教程 >PHP處理CSV表格檔案的常用操作方法總結

PHP處理CSV表格檔案的常用操作方法總結

高洛峰
高洛峰原創
2016-12-26 14:39:041161瀏覽

要做在線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(&#39;Content-Type: text/plain; charset=utf-8&#39;);
 
//导出CSV表格:数组转CSV
$arr = array (
  array(&#39;ab&#39;, &#39;cd&#39;),
  array(&#39;"a,b"&#39;, &#39;"c,d"&#39;),
);
$fp = fopen(&#39;file.csv&#39;, &#39;w&#39;);
foreach ($arr as $row) {
  //将一行格式化为CSV并写入文件指针
  fputcsv($fp, $row);
}
fclose($fp);
unset($arr);
 
//导入CSV表格:CSV转数组
$fp = fopen(&#39;file.csv&#39;, &#39;r&#39;);
while ( ($row = fgetcsv($fp)) !== FALSE ) {
  //从文件指针中读入一行并解析CSV
  $arr[] = $row;
}
fclose($fp);
var_export($arr);

另存為一個獨立檔案
download.php:

<?php
$list = array (
  &#39;aaa,bbb,ccc,dddd&#39;,
  &#39;123,456,789&#39;,
  &#39;"aaa","bbb"&#39;
);
session_start();
$_SESSION[&#39;outputArray&#39;]=$list;
?>
<a href="test.php" target="_blank">下载csv文件</a>

test.php:

<?php
session_start();
$outputArray=$_SESSION[&#39;outputArray&#39;];
header(&#39;Content-Type: application/csv&#39;);
header(&#39;Content-Disposition: attachment;filename="sales.csv"&#39;);
$output=fopen(&#39;php://output&#39;,&#39;w&#39;) or die("can not open");
foreach ($outputArray as $line) {
  fputcsv($output, split(&#39;,&#39;, $line));
}
fclose($output) or die("can not close");
?>

自動保存csv檔案到指定地點

<?php
 
$list = array (
  &#39;aaa,bbb,ccc,dddd&#39;,
  &#39;123,456,789&#39;,
  &#39;"aaa","bbb"&#39;
);
 
$fp = fopen(&#39;file.csv&#39;, &#39;w&#39;);
 
foreach ($list as $line) {
  fputcsv($fp, split(&#39;,&#39;, $line));
}
 
fclose($fp);
?>

更多 PHP處理CSV表格檔案的常用操作方法總結相關文章請關注PHP網網!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn