phpcsv
❶ php 導出csv時如何設置屬性,合並單元格之類的。。
CSV文件本身就是不帶格式符號的純文字,無法直接在PHP中控制單元格合並這樣的事情,我覺得你可以用html代碼生成execl能直接讀的文檔比較好
$result=mysql_query("select*fromstudentorderbyidasc");
$str="<tr><td>姓名</td><td>性別</td><td>年齡</td></tr> ";
$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.="<tr><td>".$name."</td><td>".$sex."</td><td>".$row['age']."</td></tr>";
}
$filename=date('Ymd').'.xls';
export_xls($filename,$str);
functionexport_xls($filename,$string){
//可以修改樣式,控制字型大小、字體、表格線、對齊方式、表格寬度、單元格padding等,在下邊的<style></style>
$header="<htmlxmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40"> <!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> <head> <metahttp-equiv="Content-type"content="text/html;charset=GBK"/> <style> td{padding:4px;mso-ignore:padding;color:windowtext;font-size:10.0pt;font-weight:400;font-style:normal;text-decoration:none;font-family:Arial;mso-generic-font-family:auto;mso-font-charset:134;mso-number-format:General;text-align:general;vertical-align:middle;border:.5ptsolidwindowtext;mso-background-source:auto;mso-pattern:auto;mso-protection:lockedvisible;white-space:nowrap;mso-rotate:0;} </style> </head><body> <tablex:strborder=0cellpadding=0cellspacing=0width=100%style="border-collapse:collapse">";
$footer="</table> </body></html>";
$exportString=$header.$string.$footer;
header("Cache-Control:public");
header("Pragma:public");
header("Content-type:Content-type:application/vnd.ms-excel");
header("Accept-Ranges:bytes");
header("Content-Disposition:attachment;filename=".$filename);
header("Content-length:".strlen($exportString));
echo$exportString;
exit;
}
❷ php 生成 csv文件
$filename="export_".date('Ymd').".csv";
header('Content-Type:application/vnd.ms-excel');
header('Content-Disposition:attachment;filename="'.$filename.'"');
header('Cache-Control:max-age=0');
//寫入你的查詢代碼
$fp=fopen('php://output','a');
$print_hea=array("姓名","年齡","性別");
fputcsv($fp,$print_hea);
//下面是你的查詢結果代碼,把結果循環在數組中後使用
fputcsv($fp,$print_hea_new);
❸ php上傳文件是,判斷是否csv文件的文件類型怎麼寫
$_FILES接收到文件信息是個數組。
其中$_FILES['myFile']['name']客戶端文件的原名稱,
您用『.』來分割$_FILES['myFile']['name']分成一個索引數組,這個數組的最後一個值就是文件的擴展名。
或者你從最後一個「.」位置截取$_FILES['myFile']['name'],截取到最後。得到的結果也是文件的擴展名;
$_FILES['myFile']['type']得到的是文件的 MIME類型,這個並不能很好的反映文件的擴展名,
例如:
MIME類型為「text/html」,這個類型對應.html .htm .stm三種文件擴展名
MIME類型為「text/plain」,對應的是.c .txt .h .bas四種文件擴展名
❹ 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=newPDO($dsn,$user,$password);
}catch(PDOException$e){
echo'Connectionfailed:'.$e->getMessage();
}
//讀取file.csv文件
if(($handle=fopen("file.csv","r"))!==FALSE){
while(($row=fgetcsv($handle,1000,","))!==FALSE){
//寫入資料庫
$sth=$db->prepare('insertintotestsetname=:name,age=:age');
$sth->bindParam(':name',$row[0],PDO::PARAM_STR,255);
$sth->bindParam(':age',$row[1],PDO::PARAM_INT);
$sth->execute();
}
fclose($handle);
}
數據表
CREATETABLE`test`(
`id`INT(10)UNSIGNEDNOTNULLAUTO_INCREMENT,
`name`VARCHAR(255)NULLDEFAULT''COLLATE'utf8mb4_bin',
`age`INT(10)NULLDEFAULT'0',
PRIMARYKEY(`id`)
)
COLLATE='utf8mb4_bin'
ENGINE=InnoDB;
運行結束後,資料庫中會插入csv中的三行數據
❺ php 寫入數據到csv中,不覆蓋原有數據,以新增行插入如何實現
這個跟fputcsv無關,而主要的關鍵在於你打開文件的模式,你需要使用 a 或是 a+ 模式打開文件。
'a' 寫入方式打開,將文件指針指向文件末尾。如果文件不存在則嘗試創建之。
'a+' 讀寫方式打開,將文件指針指向文件末尾。如果文件不存在則嘗試創建之。
$fp = fopen('file.csv', 'a+');
foreach($stu as $data);
{
fputcsv($fp,$data); //每次寫入一組數據到csv文件中的一行
}
❻ php逐行讀取txt、csv並分頁
$filename='a.txt';//文件名
$str=file_get_content($filename);//獲得內容
$arr=explode("\n",$str);//分行存入數組
foreach($arr as $row){//遍歷每行
$temp=explode(" ",$row);
//此時$temp[0]=前面的id號,$temp[1]=中文名,$temp[2]=後面的一長串
//賦值吧
}
//explode是按字元分割string
//可以查查php手冊
//存回去用file_put_content
❼ php導出csv文件時,只能在瀏覽器上顯示文件內容,沒有下載提示,更沒有下載的csv文件,幫忙指點啊!
據我的理解,export_csv這個函數的功能就是顯示csv內容。
按照你的說明猜測,你應該是先將資料庫的內容輸出到csv文件里,然後再給出一個指向該文件的下載鏈接就可以了。
export_csv這個函數可以設計成直接用 file 操作函數寫入內容就可以了,因為csv本身是純文本文件,沒有什麼特殊的文件格式。
❽ php 讀取同一目錄下的csv文件(一個或多個)
如果你的代碼是可以正常運行的,用glob函數可以讀取相對應的文件
<?php
$path = 'warehouse_data/DFRC/'
foreach (glob($path."*.csv") as $filename) {
$handle = fopen($filename,"r");
setlocale(LC_ALL,array('zh_CN.gbk','zh_CN.GBK GBK ','zh_CN.gb2312','zh_CN.gb18030','en_US.UTF-8','zh_CN'));
while ($data = fgetcsv($handle, 2000, ",")) {
$sql = "insert into `".$t."`(`pu_no`,`cust_no`,`custname`,`requ`,`supply`,`supply_no`,`ck_adr`,`arr_time`,`arr_adr`,`unload_point`,`indent_mount`,
`snp`,`case_mount`,`dgs`,`gj_dd`,`sd`,`pack_no`,`auto_style`) values ('".$data[0]."','".$data[1]."','".$data[2]."','".$data[3]."','".$data[4]."',
'".$data[5]."','".$data[6]."','".$data[7]."','".$data[8]."','".$data[9]."','".$data[10]."','".$data[11]."','".$data[12]."','".$data[14]."','".$data[15]."',
'".$data[16]."','".$data[17]."','".$data[29]."')" ;
echo $sql.'<br />'
mysql_query($sql);
//print_r($data);
}
unset($handle);
unlink($filename);
}
?>
❾ php導出csv,如下代碼為什麼不彈出提示保存或打開CSV文件
加
header ( "Content-type:application/vnd.ms-excel;charset=utf-8" );
❿ php 生成csv文件並提示保存
<?php
//文件名
$filename="test.csv";
//數據(具體的根據需要做處理,如果是從資料庫查詢,原理與此類似,只需設置好寫入格式和數據即可。
$data="測試csv";
//設置header
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;
?>