PHP處理CSV表格文件的常用操作方法總結(jié)
要做在線Excel表格編輯功能,Excel的xls文件格式的解析就是個問題,畢竟這是微軟Office的私有專利格式.
所以要做的話還是用通用的csv(Comma Separated Value,逗號分隔值)格式吧.
各種辦公軟件都能識別csv表格,其實就是以特定分隔符(比如逗號)分隔單元格的表格.
拿PHP來說,fgetcsv讀入csv表格,返回一個數(shù)組,
然后foreach輸出成HTML的<table>,這步操作幾行代碼就能實現(xiàn),非常簡單.
工作量主要還在于瀏覽器前端,建議你用jQuery進行DOM和AJAX操作,
要實現(xiàn)phpMyAdmin那樣細粒度雙擊單元格編輯,然后AJAX提交也不難,
或者整個表格寫好后一次性$("form").serialize();然后AJAX提交也可以.
CSV表格的幾條規(guī)則:
1.每一行的單元格內(nèi)容之間用逗號分隔.
2.如果單元格的內(nèi)容本身有逗號,這個單元格的內(nèi)容將會用引號包含.
3.如果單元格的內(nèi)容本身有引號:
(1)引號不在首或尾,這個單元格內(nèi)容不會被引號包含.
(2)引號在首或尾,這個單元格內(nèi)容會被引號包含,并且原來首尾的引號會被轉(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);
另存為一個獨立文件
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); ?>
相關(guān)文章
PHP isset()與empty()的使用區(qū)別詳解
本文主要介紹了PHP isset()與empty()的使用區(qū)別。具有很好的參考價值,下面跟著小編一起來看下吧2017-02-02基于curl數(shù)據(jù)采集之單頁面并行采集函數(shù)get_htmls的使用
用第一篇的get_html()實現(xiàn)簡單的數(shù)據(jù)采集,由于是一個一個執(zhí)行才采集數(shù)據(jù)的傳輸時間就會是所有頁面下載的總時長,一個頁面假設(shè)1秒,那么10個頁面就是10秒了。所幸curl還提供了并行處理的功能2013-04-04PHPMailer ThinkPHP實現(xiàn)自動發(fā)送郵件功能
這篇文章主要為大家詳細介紹了PHPMailer ThinkPHP實現(xiàn)自動發(fā)送郵件功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-06-06