真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

利用PHP怎么對(duì)csv文件進(jìn)行下載-創(chuàng)新互聯(lián)

利用PHP怎么對(duì)csv文件進(jìn)行下載?針對(duì)這個(gè)問題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問題的小伙伴找到更簡(jiǎn)單易行的方法。

創(chuàng)新互聯(lián)建站憑借在網(wǎng)站建設(shè)、網(wǎng)站推廣領(lǐng)域領(lǐng)先的技術(shù)能力和多年的行業(yè)經(jīng)驗(yàn),為客戶提供超值的營(yíng)銷型網(wǎng)站建設(shè)服務(wù),我們始終認(rèn)為:好的營(yíng)銷型網(wǎng)站就是好的業(yè)務(wù)員。我們已成功為企業(yè)單位、個(gè)人等客戶提供了成都做網(wǎng)站、成都網(wǎng)站建設(shè)服務(wù),以良好的商業(yè)信譽(yù),完善的服務(wù)及深厚的技術(shù)力量處于同行領(lǐng)先地位。

首先大家先看個(gè)例子,生成csv文件并下載


//要生成csv文件的數(shù)組
$csvArr=array();
$csvArr[]=array('用戶編號(hào)1','上班日期1','簽到時(shí)間1','簽退時(shí)間1');
$csvArr[]=array('用戶編號(hào)2','上班日期2','簽到時(shí)間2','簽退時(shí)間2')
download_send_headers("data_export_" . date("Y-m-d") . ".csv");
$head=array('用戶編號(hào)','上班日期','簽到時(shí)間','簽退時(shí)間');
echo array2csv($csvArr,$head);
unset($csvArr);
die();
function array2csv(array &$array,$head)
{
  if (count($array) == 0) {
   return null;
  }
  ob_start();
  $df = fopen("php://output", 'w');
  if(!$head){
    $head=array_keys(reset($array));
  }
  fputcsv($df,$head);
  foreach ($array as $row) {
   fputcsv($df, $row);
  }
  fclose($df);
  return ob_get_clean();
}
function download_send_headers($filename) {
  // disable caching
  $now = gmdate("D, d M Y H:i:s");
  header("Expires: Tue, 03 Jul 2001 06:00:00 GMT");
  header("Cache-Control: max-age=0, no-cache, must-revalidate, proxy-revalidate");
  header("Last-Modified: {$now} GMT");
  // force download 
  header("Content-Type: application/force-download");
  header("Content-Type: application/octet-stream");
  header("Content-Type: application/download");
  // disposition / encoding on response body
  header("Content-Disposition: attachment;filename={$filename}");
  header("Content-Transfer-Encoding: binary");
}

php array生成csv文件

 $val2) {
     $val[$key] = iconv('utf-8', 'gbk', $val2);
// CSV的Excel支持GBK編碼,一定要轉(zhuǎn)換,否則亂碼
     }
      fputcsv($outputBuffer, $val);
    }
    fclose($outputBuffer);
  }
?>

解決 fgetcsv函數(shù)在php5.2.8 中的bug

環(huán)境linux

問題解析出來(lái)的數(shù)據(jù)不完整,有為空的字段

網(wǎng)上查了下說(shuō)是在php5.2.8 中存在bug

解決辦法是使用自定義函數(shù)

function __fgetcsv(& $handle, $length = null, $d = ',', $e = '"') {
   $d = preg_quote($d);
   $e = preg_quote($e);
   $_line = "";
   $eof=false;
   while ($eof != true) {
     $_line .= (empty ($length) ? fgets($handle) : fgets($handle, $length));
     $itemcnt = preg_match_all('/' . $e . '/', $_line, $dummy);
     if ($itemcnt % 2 == 0)
       $eof = true;
   }
   $_csv_line = preg_replace('/(?: |[ ])?$/', $d, trim($_line));
   $_csv_pattern = '/(' . $e . '[^' . $e . ']*(?:' . $e . $e . '[^' . $e . ']*)*' . $e . '|[^' . $d . ']*)' . $d . '/';
   preg_match_all($_csv_pattern, $_csv_line, $_csv_matches);
   $_csv_data = $_csv_matches[1];
   for ($_csv_i = 0; $_csv_i < count($_csv_data); $_csv_i++) {
     $_csv_data[$_csv_i] = preg_replace('/^' . $e . '(.*)' . $e . '$/s', '$1' , $_csv_data[$_csv_i]);
     $_csv_data[$_csv_i] = str_replace($e . $e, $e, $_csv_data[$_csv_i]);
   }
   return empty ($_line) ? false : $_csv_data;
}

excel無(wú)法正確讀取長(zhǎng)度超過32K的CSV域問題
php 導(dǎo)出csv文件用excel打開后,產(chǎn)品表述字段分兩行顯示。
查看了下這個(gè)字段發(fā)現(xiàn)這個(gè)字段超過32K的字符,excel會(huì)把字符串打斷成兩行,如果小于32K,顯示正常。
這是EXCEL的限制,目前還沒有找到解決辦法。
excel一個(gè)單元格最多是32767個(gè)字符。
解決PHP生成UTF-8編碼的CSV文件用Excel打開亂碼的問題
PHP生成UTF-8編碼的CSV文件用Excel打開中文顯示亂碼,是由于輸出的CSV文件中沒有BOM。


array('title'=>'test test test1'),
'1'=>array('title'=>'test test test2'),
'2'=>array('title'=>'test test test3')
)
print(chr(0xEF).chr(0xBB).chr(0xBF));
//設(shè)置utf-8 + bom ,處理漢字顯示的亂碼
echo array2csv($items_data);
function array2csv(array &$array)
{
  if (count($array) == 0) {
   return null;
  }
  ob_start();
  $df = fopen("php://output", 'w');
  fputcsv($df, array_keys(reset($array)));
  foreach ($array as $row) {
   fputcsv($df, $row);
  }
  fclose($df);
  return ob_get_clean();
}
?>

導(dǎo)出csv文件數(shù)字會(huì)自動(dòng)變科學(xué)計(jì)數(shù)法的解決方法
用程序?qū)С龅腸sv文件,當(dāng)字段中有比較長(zhǎng)的數(shù)字字段存在時(shí),在用excel軟甲查看csv文件時(shí)就會(huì)變成科學(xué)技術(shù)法的表現(xiàn)形式。
其實(shí)這個(gè)問題跟用什么語(yǔ)言導(dǎo)出csv文件沒有關(guān)系。Excel顯示數(shù)字時(shí),如果數(shù)字大于12位,它會(huì)自動(dòng)轉(zhuǎn)化為科學(xué)計(jì)數(shù)法;如果數(shù)字大于15位,它不僅用于科學(xué)技術(shù)費(fèi)表示,還會(huì)只保留高15位,其他位都變0。
解決這個(gè)問題
只要把數(shù)字字段后面加上顯示上看不見的字符即可,字符串結(jié)尾加上制表符"\t".
php 程序可以這樣判斷,注意一定是"\t",不是'\t'.

is_numeric($val)?$val."\t":$val;


關(guān)于利用PHP怎么對(duì)csv文件進(jìn)行下載問題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識(shí)。


網(wǎng)站標(biāo)題:利用PHP怎么對(duì)csv文件進(jìn)行下載-創(chuàng)新互聯(lián)
網(wǎng)頁(yè)路徑:http://weahome.cn/article/dpooss.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部