要做在線Excel表格編輯功能,Excel的xls文件格式的解析就是個(gè)問題,畢竟這是微軟Office的私有專利格式.
所以要做的話還是用通用的csv(Comma Separated Value,逗號(hào)分隔值)格式吧.
各種辦公軟件都能識(shí)別csv表格,其實(shí)就是以特定分隔符(比如逗號(hào))分隔單元格的表格.
拿PHP來說,fgetcsv讀入csv表格,返回一個(gè)數(shù)組,
然后foreach輸出成HTML的
,這步操作幾行代碼就能實(shí)現(xiàn),非常簡(jiǎ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處理CSV表格文件的常用操作方法總結(jié)相關(guān)文章請(qǐng)關(guān)注PHP中文網(wǎng)!
本站聲明
本文內(nèi)容由網(wǎng)友自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請(qǐng)聯(lián)系admin@php.cn
對(duì)基于PHP的API進(jìn)行版本控制的最佳實(shí)踐是什么?
Jun 14, 2025 am 12:27 AM
基于toversionaphp,useUrl deuseUrl specteringforclarityAndEsofRouting,單獨(dú)的codetoavoidConflicts,dremecateOldVersionswithClearCommunication,andConsiderCustomHeadeSerlySerallyWhennEnncelsy.startbyplacingtheversionIntheUrl(E.G.,epi/api/v
如何在PHP中實(shí)施身份驗(yàn)證和授權(quán)?
Jun 20, 2025 am 01:03 AM
tosecurelyhandleauthenticationandationallizationInphp,lofterTheSesteps:1.AlwaysHashPasswordSwithPassword_hash()andverifyusingspasspassword_verify(),usepreparedStatatementStopreventsqlineptions,andStoreSeruserDatain usseruserDatain $ _sessiveferterlogin.2.implementrole-2.imaccessccsccccccccccccccccccccccccc.
PHP中的程序和面向?qū)ο蟮木幊谭独g有什么區(qū)別?
Jun 14, 2025 am 12:25 AM
procemal and object-tiriendedprogromming(oop)inphpdiffersimplessintustructure,可重復(fù)使用性和datahandling.1.procedural-Progrogursmingusesfunctimesfunctionsormanized sequalized sequalized sequiential,poiperforsmallscripts.2.OpporganizesCodeOrganizescodeOdeIntsocloceSandObjects,ModelingReal-Worlden-Worlden
PHP中有哪些弱參考(弱圖),何時(shí)有用?
Jun 14, 2025 am 12:25 AM
PHPdoesnothaveabuilt-inWeakMapbutoffersWeakReferenceforsimilarfunctionality.1.WeakReferenceallowsholdingreferenceswithoutpreventinggarbagecollection.2.Itisusefulforcaching,eventlisteners,andmetadatawithoutaffectingobjectlifecycles.3.YoucansimulateaWe
如何在PHP中安全地處理文件上傳?
Jun 19, 2025 am 01:05 AM
要安全處理PHP中的文件上傳,核心在于驗(yàn)證文件類型、重命名文件并限制權(quán)限。1.使用finfo_file()檢查真實(shí)MIME類型,僅允許特定類型如image/jpeg;2.用uniqid()生成隨機(jī)文件名,存儲(chǔ)至非Web根目錄;3.通過php.ini和HTML表單限制文件大小,設(shè)置目錄權(quán)限為0755;4.使用ClamAV掃描惡意軟件,增強(qiáng)安全性。這些步驟有效防止安全漏洞,確保文件上傳過程安全可靠。
如何與PHP的NOSQL數(shù)據(jù)庫(例如MongoDB,Redis)進(jìn)行交互?
Jun 19, 2025 am 01:07 AM
是的,PHP可以通過特定擴(kuò)展或庫與MongoDB和Redis等NoSQL數(shù)據(jù)庫交互。首先,使用MongoDBPHP驅(qū)動(dòng)(通過PECL或Composer安裝)創(chuàng)建客戶端實(shí)例并操作數(shù)據(jù)庫及集合,支持插入、查詢、聚合等操作;其次,使用Predis庫或phpredis擴(kuò)展連接Redis,執(zhí)行鍵值設(shè)置與獲取,推薦phpredis用于高性能場(chǎng)景,Predis則便于快速部署;兩者均適用于生產(chǎn)環(huán)境且文檔完善。
PHP中==(松散比較)和===(嚴(yán)格的比較)之間有什么區(qū)別?
Jun 19, 2025 am 01:07 AM
在PHP中,==與===的主要區(qū)別在于類型檢查的嚴(yán)格程度。==在比較前會(huì)進(jìn)行類型轉(zhuǎn)換,例如5=="5"返回true,而===要求值和類型都相同才會(huì)返回true,例如5==="5"返回false。使用場(chǎng)景上,===更安全應(yīng)優(yōu)先使用,==僅在需要類型轉(zhuǎn)換時(shí)使用。
如何在PHP( - , *, /,%)中執(zhí)行算術(shù)操作?
Jun 19, 2025 pm 05:13 PM
PHP中使用基本數(shù)學(xué)運(yùn)算的方法如下:1.加法用 號(hào),支持整數(shù)和浮點(diǎn)數(shù),也可用于變量,字符串?dāng)?shù)字會(huì)自動(dòng)轉(zhuǎn)換但不推薦依賴;2.減法用-號(hào),變量同理,類型轉(zhuǎn)換同樣適用;3.乘法用*號(hào),適用于數(shù)字及類似字符串;4.除法用/號(hào),需避免除以零,并注意結(jié)果可能是浮點(diǎn)數(shù);5.取模用%號(hào),可用于判斷奇偶數(shù),處理負(fù)數(shù)時(shí)余數(shù)符號(hào)與被除數(shù)一致。正確使用這些運(yùn)算符的關(guān)鍵在于確保數(shù)據(jù)類型清晰并處理好邊界情況。
See all articles