① 如何使用PHP導出csv和excel文件
把Excel文件導入mysql:
打開excel文件,可用phpExcel開源的類
或者:
先把excel文件另存為csv格式,最好是utf8編碼。
fgetcsv() — 從文件指針中讀入一行並解析 CSV 欄位,返回數組
② 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中的數據建立成一個數據表
其實你把$sql列印出來看看也許就知道錯在哪兒了。
大概看了一下你的代碼,
先將csv中的每一行分割成數組,再連接到sql語句中,但是你貌似忘記加空格了,
例如
nom,VARCHAR,20,TRUE,PRIMARY,TRUE
按照你的代碼處理成sql語句就變成了(缺少空格)
nomVARCHAR20TRUEPRIMARYTRUE
正確情況應該是(逗號替換成空格,最後還要加上一個逗號)
nom VARCHAR 20 TRUE,PRIMARY TRUE,
④ php怎麼講字元串變成csv格式
PHPExcel完全可以滿足你的要求,給個簡單處理例子,具體的你還是看看PHPExcel的文檔:
$filename = "myexcel.xlsx";
$objReader = PHPExcel_IOFactory::createReader('Excel2007');
$objPHPExcel = $objReader->load($filename);
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'CSV');
$objWriter->save(str_replace('.xlsx', '.csv',$filename));
⑤ php導出csv,如下代碼為什麼不彈出提示保存或打開CSV文件
加
header ( "Content-type:application/vnd.ms-excel;charset=utf-8" );
⑥ php 寫入數據到csv中,不覆蓋原有數據,以新增行插入如何實現
這個跟fputcsv無關,而主要的關鍵在於你打開文件的模式,你需要使用 a 或是 a+ 模式打開文件。
'a' 寫入方式打開,將文件指針指向文件末尾。如果文件不存在則嘗試創建之。
'a+' 讀寫方式打開,將文件指針指向文件末尾。如果文件不存在則嘗試創建之。
$fp = fopen('file.csv', 'a+');
foreach($stu as $data);
{
fputcsv($fp,$data); //每次寫入一組數據到csv文件中的一行
}
⑦ PHP生成CSV文件問題 麻煩各位高手幫忙看看
csv很簡單
數據以,分開
行用\n
存為.csv就行了
生成xls的話稍微復雜一點兒,下面是一個生成xls的類,你可以按照你的需要修改調用一下。
======================================
用PHP生成xls,csv格式文件的類
2008年09月23日 星期二 上午 09:56
fileOperation.php
****************************************************
class fileOperation {//基類
var $fileName='test';
var $extendName='csv';
var $mPath='./report/';
var $mFp;
function fileOperation() {
}
function openFile($mode='w'){
if(empty($this->fileName)){
$this->setTimeFileName();
}
if (empty($this->extendName)){
$this->setExtendName();
}
$fp=fopen($this->mPath.'/'.$this->fileName.'.'.$this->extendName,$mode);
if($fp){
$this->mFp=$fp;
}else{
return 0;
}
}
function closeFile(){
return fclose($this->mFp);
}
function setTimeFileName($type='Ymd'){
if(!empty($type)){
$this->fileName=$type;
}else{
$this->fileName=time();
}
}
function setExtendName($extend='txt'){
if(!empty($extend)){
$this->extendName=$extend;
}else{
$this->extendName='.csv';
}
}
function setPath($path='./'){
$this->mPath=$path;
}
}
xlsHelper.php
****************************************************
require_once 'fileOperation.php';
class xlsHelper extends fileOperation{//具體實現子類
var $mSpace = '';
var $mHead;
var $mBody='';
function addHeader($head=array()){
$this->mHead='<table width="500" border="1" align="center" cellpadding="5"><tr>';
if (is_array($head)){
foreach($head as $hd){
$this->mHead.='<th bgcolor="#A5A0DE">'.$hd.'</th>';
}
}
$this->mHead.='</tr>';
}
function addBodyData($body=array()){
if(is_array($body)){
for($i=0;$i<count($body);$i++){
$childBody=$body[$i];
$this->mBody.='<tr>';
$this->mSpace = '<td align="center">';
for($j=0;$j<count($childBody);$j++){
$this->mBody.=$this->mSpace.$childBody[$j].'</td>';
}
$this->mBody.="</tr>";
}
}
$this->mBody.='</table>';
}
function _construct(){
}
function writeCSVDate(){
return fwrite($this->mFp,$this->mHead.mb_convert_encoding($this->mBody,'sjis','sjis'));
}
function setSpace($type=','){
$this->mSpace=$type;
}
}
test.php
****************************************************
$xls=new xlsHelper();
$xls->fileName='xxx';//設置生成文件的文件名
$xls->extendName='xls';//文件擴展名
$xls->mPath='./';//文件保存路徑
$headerarr=array('姓名','年齡','郵箱');//頭部欄位名
$xls->addHeader($headerarr);
$datasarr=array(//注意:此處的二維數組一定要是數字索引
array('yht',20,'[email protected]'),
array('ktv009',23,'[email protected]'),
);
$xls->addBodyData($datasarr);
$xls->openFile('w');
if($xls->writeCSVDate()) echo "<script language='javascript'>生成文件成功</script>";
else echo ""<script language='javascript'>無法生成文件</script>";
⑧ 將PHP生成CSV文件2
發給你的程序里,這個已經做好了。
⑨ 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;
?>
⑩ php 如何從數據里選擇所需要信息然後生成csv文件自動保存在指定的路徑(不提示保存,自動)
命令行模式下,或者web模式下保存的路徑在伺服器中,可以達到你的要求(有該路徑的許可權即可)
如果是在web模式下,不提示直接保存到訪客的電腦中的某個位置,是不可以的。
web模式保存到客戶端,只能通過下載,由用戶指定,或保存到默認的下載目錄。
以下是代碼示例:
$dsn='mysql:dbname=testdb;host=127.0.0.1';
$user='dbuser';
$password='dbpass';
//連接資料庫pdo
try{
$dbh=newPDO($dsn,$user,$password,array(PDO::MYSQL_ATTR_INIT_COMMAND=>"SETNAMES'UTF8'"));
}catch(PDOException$e){
echo'Connectionfailed:'.$e->getMessage();exit;
}
//讀取數據,具體sql你根據情況修改
$stat=$dbh->prepare('SELECT*FROM`table`WHERE`id`>0LIMIT100;');
$stat->execute();
$result=$stat->fetchAll(PDO::FETCH_ASSOC);
//創建csv文件並打開文件指針
$filepath='file.csv';
$fp=fopen($filepath,'w');
//寫入數據
foreach($resultas$i=>$row){
//寫入標題行
if($i==0){
fputcsv($fp,array_keys($row));
}
fputcsv($fp,$row);
}
//關閉文件指針
fclose($fp);
//把文件輸出到下載
$file=fopen($filepath,"r");//打開文件
$size=filesize($filepath);
Header("Content-type:application/octet-stream");
Header("Accept-Ranges:bytes");
Header("Accept-Length:".$size);
Header("Content-Disposition:attachment;filename=download.csv");
echofread($file,$size);
fclose($file);
相關知識點:
PHP: fputcsv
PHP:PDO
資料庫查詢的時候只返回列名,防止列出現重復,csv里會有重復的數據