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

之前在前期的开发过程中 也发送过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插件解决的问题比较完美 乱码就解决了 最后谢谢大家…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

stark张宇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值