下面我來給各位同學簡單的分享兩個利用php操作csv格式文件的例子,一個是對csv輸出下載,另一個是利用php的fgetcsv函數、fputcsv函數進行讀寫操作.
導入、導出CSV文件,代碼如下:
- class csv
- {
- private $resource;
- /**
- * @param string $fileName 文件路徑
- * @param string $mode 文件訪問類型:w:寫入、r:只讀
- */
- public function __construct($fileName, $mode)
- {
- $this->resource = fopen($fileName, $mode);
- }
- public function __destruct()
- {
- fclose($this->resource);
- }
- /**
- * 導入CSV
- * @param array $data
- * @return int
- */
- public function export($data)
- {
- fputcsv($this->resource, $data);
- }
- /**
- * 導出CSV
- * @return array
- */
- public function import()
- {
- $tmp = array();
- while($data = fgetcsv($this->resource))
- {
- $tmp[] = $data;
- }
- return $tmp;
- }
- }
這里我們主要用到了php fgetcsv函數、fputcsv函數,CSV文件下載代碼如下:
- function exportUserTask()
- {
- //獲取數據庫數據
- /*
- * $result = array(
- * array(value1,value2,value3,value4,value5,value6),
- * array(value1,value2,value3,value4,value5,value6),
- * );
- */
- $handle = fopen('php://output', "w");
- header('Content-Type: application/csv');
- header('Content-Disposition: attachment; filename="test.csv"');
- //表頭
- fputcsv($handle, array('用戶UID', '用戶名', '進行中', '已完成', '已失敗', '總計'));
- foreach($result as $value)
- {
- fputcsv($handle, $value);
- }
- fclose($handle);
- }
需要提醒的是在導入、導出數據過程注意中文亂碼問題,這主要是數據編碼格式問題,使用過程根據實際情況對數據進行轉碼.
新聞熱點
疑難解答