PHP 輕鬆實現導出導入CSV文件

使用PHP內置函數fputcsvfgetcsv兩個函數輕鬆實現

fputcsv
(PHP 5 >= 5.1.0, PHP 7)
fputcsv — 將行格式化爲 CSV 並寫入文件指針

int fputcsv ( resource $handle , array $fields [, string $delimiter = ',' [, string $enclosure = '"' ]] )

fputcsv() 將一行(用 fields 數組傳遞)格式化爲 CSV 格式並寫入由 handle 指定的文件。

參數 說明
handle 文件指針必須是有效的,必須指向由 fopen()fsockopen() 成功打開的文件(並還未由 fclose() 關閉)。
fields 值的一個數組。
delimiter 可選的 delimiter 參數設定字段分界符(只允許一個字符)。
enclosure 可選的 enclosure 參數設定字段字段環繞符(只允許一個字符)。

返回值

返回寫入字符串的長度, 或者在失敗時返回 FALSE。

導出

$list = array (
    array('ID', '姓名','年齡','班級'),
    array('101', '張三', '13',"一班"),
    array('102', '李四', '14',"二班"),
    array('103', '王五', '12',"三班"),
    array('104', '趙六', '15',"三班"),
    array('105', '錢七', '14',"二班"),
    array('106', '王八', '13',"一班"),
);

$fp = fopen('file.csv', 'w');

foreach ($list as $fields) {
    fputcsv($fp, $fields);
}

fclose($fp);

fgetcsv
(PHP 4, PHP 5, PHP 7)
fgetcsv — 從文件指針中讀入一行並解析 CSV 字段

array fgetcsv ( resource $handle [, int $length = 0 [, string $delimiter = ',' [, string $enclosure = '"' [, string $escape = '\\' ]]]] )

fgets() 類似,只除了 fgetcsv() 解析讀入的行並找出 CSV 格式的字段然後返回一個包含這些字段的數組。

參數 說明
handle 一個由 fopen()popen()fsockopen() 產生的有效文件指針。
length 必須大於 CVS 文件內最長的一行。在 PHP 5 中該參數是可選的。如果忽略(在 PHP 5.0.4 以後的版本中設爲 0)該參數的話,那麼長度就沒有限制,不過可能會影響執行效率。
delimiter 設置字段分界符(只允許一個字符)。
enclosure 設置字段環繞符(只允許一個字符)。
escape 設置轉義字符(只允許一個字符),默認是一個反斜槓。

返回值
返回包含讀取字段的索引數組。

Note:
CSV 文件中的空行將被返回爲一個包含有單個 null 字段的數組,不會被當成錯誤。


Note:
在讀取在 Macintosh 電腦中或由其創建的文件時, 如果 PHP 不能正確的識別行結束符,啓用運行時配置可選項 auto_detect_line_endings 也許可以解決此問題。

導入

$list=[];
if (($handle = fopen("file.csv", "r")) !== FALSE) {
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
        $num = count($data);
        for ($c=0; $c < $num; $c++) {
            $arr[]=$data[$c];
        }
        $list[]=$arr;
        unset($arr);
    }
    fclose($handle);
}

echo "<pre >";
print_r($list);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章