php从数据库导出csv格式的Excel表格是,字段本身就有逗号怎么办?说在字段上加双引号,但加在哪??

如下代码,加在$cv,$data[$key]上都不行??怎么办求大神解救 //导出xls 开始 if (!empty($title)){ foreach ($title as $k => $v) { $title[$k]=iconv("UTF-8", "GB2312",$v); } $title= implode("\t", $title); echo "$title\n"; } if (!empty($data)){ foreach($data as $key=>$val){ foreach ($val as $ck => $cv) { $data[$key][$ck]=iconv("UTF-8","GB2312",$cv); } $data[$key]=implode("\t",$data[$key]); } echo implode("\n",$data); }

$data[$key]=implode("\t",$data[$key]);
你的程序用这个语句把一行数组转换为TAB分割的字符串,这样EXCEL是可以打开的,只是不完全符合CSV的规则(逗号分开),要改为逗号分开,而且每个字段要用引号,该语句修改为下面这样既可:
$data[$key]='"' . implode('","',$data[$key]) . '"';
温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-11-02
需要自己去手动重置才能正常显示,自己也不太清楚原因,琢磨后通过以下两种方式解决。
$objPHPExcel->getActiveSheet(0)->getStyle('B')->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_TEXT);
1
第一种方法:不知道是不是因为数据本身是字符串的原因,设置格式改为自定义数字类型后可以了。
$objPHPExcel->getActiveSheet(0)->getStyle('B')->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_NUMBER);
1
第二种方法:在插入数据时设置格式。
$objPHPExcel->setActiveSheetIndex ( 0 )->setCellValueExplicit('B'.($i + 1),$orders['order_list'][$i-1]['order_sn'],PHPExcel_Cell_DataType::TYPE_STRING);
1
以下是具体代码:
require_once ‘includes/Classes/PHPExcel.php’;
require_once ‘includes/Classes/PHPExcel/Writer/Excel5.php’;
require_once ‘includes/Classes/PHPExcel/Writer/Excel2007.php’;
require_once ‘includes/Classes/PHPExcel/IOFactory.php’;