本文目錄一覽:
- 1、三種辦法,1,PHP 如何處理上傳的CSV文件
- 2、如何使用PHP導出csv和excel文件
- 3、php點擊按鈕上傳csv文件,存入mysql資料庫代碼怎麼寫
- 4、php如何讀取CSV大文件並且將其導入資料庫示例
- 5、PHP操作CSV文件的問題,請教大家!
三種辦法,1,PHP 如何處理上傳的CSV文件
可以用fgetcsv函數: — 從文件指針中讀入一行並解析 CSV 欄位
但他無法處理裡邊的中文; 所以在上傳後,要先把csv轉一下編碼;
如何使用PHP導出csv和excel文件
(一)phpexcel文件導出:
步驟1,引入文件require APPPATH.’/libraries/PHPExcel.PHP’;
步驟2, 實例化PHPEXCEL對象 $objPHPExcel=new PHPExcel();
步驟3, 設置表頭 $column = array(‘A’,’B’,’C’); $line = array(‘詞語’,’頻次’,’詞性’);
//填充表頭信息
for($i = 0;$i count($tableheader_all);$i++) {
$objPHPExcel-getActiveSheet()-setCellValue(“$letter[$i]1″,”$tableheader[$i]”);
//上一行中”$letter[$i]1″表示第「1」行第「$i」列
}
步驟4, 填充數據
for ($i = 2;$i = count($data) + 1;$i++) {//因為內容是從第二行開始的,所以i=2表示從第二行開始填充數據
$j = 0;
foreach ($tmp as $key=$val ){
$objPHPExcel-getActiveSheet()-setCellValue(“$letter[$j]$i”,$data[$i-2][$val]); //數據是從第一條開始但是i的初值是2所以想從第一條開始應該是$data[$i-2]開始
$j++;
}
}
步驟5,寫進excel中並輸出
$write = new PHPExcel_Writer_Excel5($objPHPExcel);
header(“Pragma: public”);
header(“Expires: 0”);
header(“Cache-Control:must-revalidate, post-check=0, pre-check=0”);
header(“Content-Type:application/force-download”);
header(“Content-Type:application/vnd.ms-execl”);
header(“Content-Type:application/octet-stream”);
header(“Content-Type:application/download”);;
header(‘Content-Disposition:attachment;filename=”數據導出_詞雲圖.xls”‘);
header(“Content-Transfer-Encoding:binary”);
$write-save(‘php://output’);
(一)CSV文件導出:
csv文件導出最令人頭疼的問題就是編碼問題,現在分享一下我的經驗
首先看伺服器是Linux的還是windows的 如果是windows的伺服器那麼編碼問題只能藉助於mb_convert_encoding()或者是iconv兩個函數相互轉換中文編碼
如果伺服器是linux的 那麼很簡單 utf-8: setlocale(LC_ALL, 『en_US.UTF-8′); 簡體中文:setlocale(LC_ALL, 『zh_CN’);
下面來說csv導出步驟:
$result = mysql_query(“select * from student order by id asc”);
$str = “姓名,性別,年齡\n”;
$str = iconv(‘utf-8′,’gb2312’,$str);
while($row=mysql_fetch_array($result)){
$name = iconv(‘utf-8′,’gb2312’,$row[‘name’]); //中文轉碼
$sex = iconv(‘utf-8′,’gb2312’,$row[‘sex’]);
$str .= $name.”,”.$sex.”,”.$row[‘age’].”\n”; //用引文逗號分開
}
$filename = date(‘Ymd’).’.csv’; //設置文件名
export_csv($filename,$str); //導出
要將數據導出到本地即下載,需要修改header信息,代碼如下:
function export_csv($filename,$data) {
header(“Content-type:text/csv”);
header(“Content-Disposition:attachment;filename=”.$filename);
header(‘Cache-Control:must-revalidate,post-check=0,pre-check=0’);
header(‘Expires:0’);
header(‘Pragma:public’);
echo $data;
}
php點擊按鈕上傳csv文件,存入mysql資料庫代碼怎麼寫
?php
$data=file(“data.csv”);
$j=count($data);
for($i=2;$i$j;$i++){
$val=”‘”.str_replace(“,”,”‘,'”,trim($data[$i])).”‘”;
$sql=”insert into tab values(“.$val.”)”;
mysql_query($sql,$mylink);
}
?//最簡單的形式]
//我不了解csv 現在給你改下
?php
$fp=fopen(“a.csv”,”r”);
while(! feof($fp)){
$data=fgetcsv($fp);
if(!is_array($data))
continue;
$sql=$p=””;
foreach($data as $val){
$sql.=$p.”‘”.$val.”‘”;
$p=”,”;
}
$sql=”insert into tab values(“.$sql.”)”;
echo $sql;
//mysql_query($sql,$mylink);
}
fclose($fp);
?
php如何讀取CSV大文件並且將其導入資料庫示例
思路:
讀取csv文件,每讀取一行數據,就插入資料庫
示例
文件夾結構
/
file.csv //csv大文件,這裡只模擬三行數據,不考慮運行效率(PS:csv文件格式很簡單,文件一般較小,解析很快,運行效率的瓶頸主要在寫入資料庫操作)
index.php //php文件
file.csv
singi,20
lily,19
daming,23
index.php
/**
* 讀取csv文件,每讀取一行數據,就插入資料庫
*/
//獲取資料庫實例
$dsn = ‘mysql:dbname=test;host=127.0.0.1’;
$user = ‘root’;
$password = ”;
try {
$db = new PDO($dsn, $user, $password);
} catch (PDOException $e) {
echo ‘Connection failed: ‘ . $e-getMessage();
}
//讀取file.csv文件
if (($handle = fopen(“file.csv”, “r”)) !== FALSE) {
while (($row = fgetcsv($handle, 1000, “,”)) !== FALSE) {
//寫入資料庫
$sth = $db-prepare(‘insert into test set name=:name,age=:age’);
$sth-bindParam(‘:name’,$row[0],PDO::PARAM_STR,255);
$sth-bindParam(‘:age’,$row[1],PDO::PARAM_INT);
$sth-execute();
}
fclose($handle);
}
數據表
CREATE TABLE `test` (
`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`name` VARCHAR(255) NULL DEFAULT ” COLLATE ‘utf8mb4_bin’,
`age` INT(10) NULL DEFAULT ‘0’,
PRIMARY KEY (`id`)
)
COLLATE=’utf8mb4_bin’
ENGINE=InnoDB;
運行結束後,資料庫中會插入csv中的三行數據
PHP操作CSV文件的問題,請教大家!
csv是以逗號和回車分隔開的 ..
你首先讀取文件..
然後用explode分隔回車,
得到一個數組,再對數組內的數據遍歷用逗號分隔.會得到具體的數據..
思路就這樣….自己多加嘗試..理解就可以..
原創文章,作者:FMC1W,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/130817.html