<menu id="uuzns"><dd id="uuzns"></dd></menu>
  1. <big id="uuzns"></big>
    <mark id="uuzns"></mark>
      <meter id="uuzns"></meter>
    1. <td id="uuzns"><menuitem id="uuzns"><mark id="uuzns"></mark></menuitem></td>
      1. 辉煌电商SEO内测

        百度关键词优化三天上首页!同行都是朋友, ?#38431;?#19968;起互利共赢。谢绝一切非正规行业服务,?#34892;?#20197;下同行、团队、?#25945;?#21644;代理的支持:

        百度站长?#25945;āIP开发小组、SEO焦大老友、SEO每天一贴ZAC大哥、卢松松大哥、海瑶SEO兄弟、附子SEO兄弟、探索者SEO、帮站SEO好友、互点宝、超快排?#25945;?

        百亿互刷宝、下拉天下、SEO自学网、SEO研究?#34892;摹?#23567;明SEO、王德春SEO、马海祥博客、踏雪无痕?#19968;?#24037;作室、SEO云优化好友、云客网、杭州思亿欧、网赚吧、北京SEO韩非老弟

        需要了解以上同仁的相关信息,我们已经给你做好了搜索框,看右上角绿色那个,输入搜索即刻直达

        网站统计: 共有读稿:14437部 / 今日更新:篇 / 评论:19条 / 会员:75 名 / 阅读:1086085
        您好,请 【登陆】/【注册】
        软件内容页横幅广告
        您现在的位置:SEO?#25945;?/a> > PHP网站建设 >

        PHP下载生成的csv文件及问题总结

        2018.04.20

        浏览:

        【导语】如果您觉得本篇内容还不错,请点击文章下面的赞,然后分享给朋友哦!...

        PHP下载生成的csv文件及问题总结-破洛洛教学网...请看详情...

        seo

        seo

        最近做了一个项目需要把订单的信息显示出来,并且能够把相关信息放到一个.csv 文件中,下载到浏览器。虽然说csv是一?#30452;?#36739;简单的excel表格?#38382;劍?#29983;成只要按指定格式然后生成.csv文件就可以,但是在使用中?#19981;?#36935;到很多问题,下面给大家分享下PHP下载csv文件及问题总结

        首先大家先看个例子,生成csv文件并下载

        //要生成csv文件的数组
        $csvArr=array();
        $csvArr[]=array('用户编号1','上班日期1','签到时间1','签退时间1');
        $csvArr[]=array('用户编号2','上班日期2','签到时间2','签退时间2')
        download_send_headers("data_export_" . date("Y-m-d") . ".csv");
        $head=array('用户编号','上班日期','签到时间','签退时间');
        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文件

        <?php
        $data = array(
            array( 'row_1_col_1', 'row_1_col_2', 'row_1_col_3' ),
            array( 'row_2_col_1', 'row_2_col_2', 'row_2_col_3' ),
            array( 'row_3_col_1', 'row_3_col_2', 'row_3_col_3' ),
          );
        $filename = "example";
          header("Content-type: text/csv");
          header("Content-Disposition: attachment; filename={$filename}.csv");
          header("Pragma: no-cache");
          header("Expires: 0");
        outputCSV($data);
        function outputCSV($data) {
            $outputBuffer = fopen("php://output", 'w');
            foreach($data as $val) {
            foreach ($val as $key => $val2) {
             $val[$key] = iconv('utf-8', 'gbk', $val2);
        // CSV的Excel支持GBK编码,?#27426;?#35201;转换,否则乱码
             }
              fputcsv($outputBuffer, $val);
            }
            fclose($outputBuffer);
          }
        ?>
        

        解决 fgetcsv函数在php5.2.8 中的bug

        fgetcsv函数
        环境linux

        问题解析出来的数据不完整,有为空的字段

        网上查了下说是在php5.2.8 中存在bug

        解决办法是使用自定义函数

        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无法正确读取长度超过32K的CSV域问题
        php 导出csv文件用excel打开后,产品表述字段分两行显示。
        查看了下这个字段发现这个字段超过32K的字符,excel会把字符串打断成两行,如果小于32K,显示正常。
        这是EXCEL的限制,目前还没有?#19994;?#35299;决办法。
        excel一个单元格最多是32767个字符。
        解决PHP生成UTF-8编码的CSV文件用Excel打开乱码的问题
        PHP生成UTF-8编码的CSV文件用Excel打开中文显示乱码,是由于输出的CSV文件中没有BOM。

        <?php
        $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");
        $items_data=array(
        '0'=>array('title'=>'test test test1'),
        '1'=>array('title'=>'test test test2'),
        '2'=>array('title'=>'test test test3')
        )
        print(chr(0xEF).chr(0xBB).chr(0xBF));
        //设置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();
        }
        ?>
        

        导出csv文件数字会自动变科学计数法的解决方法
        用程序导出的csv文件,当字段中有比较长的数字字段存在时,在用excel软甲查看csv文件时就会变成科学技术法的表?#20013;问健?br /> 其实这个问题跟用什么语言导出csv文件没有关系。Excel显示数字时,如果数字大于12位,它会自动转化为科学计数法;如果数字大于15位,它不仅用于科学技术费表示,还会只保留高15位,其他位都变0。
        解决这个问题
        只要把数字字段后面加上显示上看不见的字符即可,字符串结尾加上制表符"\t".
        php 程序可以这样判断,注意?#27426;?#26159;"\t",不是'\t'.

        代码 代码如下:
        is_numeric($val)?$val."\t":$val;

        以上代码内容就是本文实现PHP下载生成的csv文件及问题总结,希望大家?#19981;丁?/p>

         

        3
        赞一个
        关键词:
        ☆?#19981;?#36825;篇文章吗?分享给你的好友吧!点击这里复制网址☆
        共有359人阅读,期待你的评论!评论
        请先登陆后才能发表评论哦!没账号?赶紧注册一个吧!
        最新评论
        热门标签
        回到顶部
        时时彩官方开奖

          <menu id="uuzns"><dd id="uuzns"></dd></menu>
        1. <big id="uuzns"></big>
          <mark id="uuzns"></mark>
            <meter id="uuzns"></meter>
          1. <td id="uuzns"><menuitem id="uuzns"><mark id="uuzns"></mark></menuitem></td>
              1. <menu id="uuzns"><dd id="uuzns"></dd></menu>
              2. <big id="uuzns"></big>
                <mark id="uuzns"></mark>
                  <meter id="uuzns"></meter>
                1. <td id="uuzns"><menuitem id="uuzns"><mark id="uuzns"></mark></menuitem></td>
                  1. 陕西快乐十分单式开奖结果 上海时时彩走势图贴吧 10个简单的扑克牌魔术 广东时时彩11选五 okooo澳客网官方下载 什么是七星彩规律 五子棋技巧 陕西十一选五开奖l结果 哪个平台有台湾五分彩 足彩半全场预测 广西11选5走势图 新疆福彩喜乐彩开奖 贵州十一选五任三遗漏数据查询 福彩中心 七乐彩随机选号码