完美解决邮件中excel乱码问题<mac 附件乱码>

来源:互联网 发布:java输入整数异常 编辑:程序博客网 时间:2024/06/02 03:11

之前在前期的开发过程中 也发送过excel 后来自己使用mac以后 发现有乱码 所以有必要记录下来

    /**     * 格式化表格     */    public function formatTable($sign_data){        $table = 'ID'."\t".'姓名打卡'."\t".'时间'."\n";        foreach($sign_data as $key => $val){            $table .= $val['id']."\t".$val['name']."\t".$val['sign_time']."\n";        }                        return $table;    }

PHP中程序使用\t制表符生成的excel 以前也是这么使用的 但是发现有乱码 如下图:
这里写图片描述

第一时间 当时心里找了很多办法 比如说iconv 和 mb_convert_encoding 进行编码转换 然后在win上没有问题在mac上依然乱码

$content = iconv("GBK", "UTF-8", $content); $content = mb_convert_encoding($content, "UTF-8","GBK"); 

最后使用phpexcel插件 代码如下:

/** * 使用phpexcel生成excel表格 * @param unknown $data */public function generateExcel($data){    $objPHPExcel = new PHPExcel();    //保存excel—2007格式    $objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);    //设置当前的sheet    $objPHPExcel->setActiveSheetIndex(0);    //设置sheet的name    $objPHPExcel->getActiveSheet()->setTitle('广州区打开记录');    //设置单元格的值    //垂直居中    $objPHPExcel->getActiveSheet()->getStyle('A')->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);    $objPHPExcel->getActiveSheet()->getStyle('B')->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);    $objPHPExcel->getActiveSheet()->getStyle('C')->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);    $objPHPExcel->getActiveSheet()->getStyle('A')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);    $objPHPExcel->getActiveSheet()->getStyle('B')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);    $objPHPExcel->getActiveSheet()->getStyle('C')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);    $objPHPExcel->setActiveSheetIndex(0)->setCellValue('A1', 'ID')->setCellValue('B1', '姓名')->setCellValue('C1', '签到时间');    $number = 2;    $objPHPExcel->getActiveSheet()->getRowDimension('1')->setRowHeight(15);    $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(10);    $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(10);    $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(30);    foreach ($data as $key => $val){        $objPHPExcel->setActiveSheetIndex(0)->setCellValue('A'.$number, $val['id'])->setCellValue('B'.$number,$val['name'])->setCellValue('C'.$number, $val['sign_time']);        $number++;    }    $objWriter->save(self::SAVE_FILE_DIR);}

还是phpexcel插件解决的问题比较完美 乱码就解决了 最后谢谢大家…

0 0
原创粉丝点击