PHP电商软件部分网页打开乱码,解决电商ecshop程序加入PHPExcel导入变成乱码

易站通带你来熟悉电商ecshop程序,让你更快的把自已的电商网站建立起来。

经过83次实践,发现代码的中间空了几行:就是ecshop生成代码结束 ?> 与新代码<?php 开始之间有空隙。汗,因为这个小问题了最模板近一个小时。后来在网上找到相似的解决方案,现一并贴出来。

在PHP代码的最前面加入:ob_start();在excel要生成的前面加上:ob_end_clean();这样就可以解决乱码的问题了。 <?php

define(IN_ECS, true);

require(dirname(__FILE__) . /includes/init.php);

require_once(ROOT_PATH . includes/lib_order.php);

/* 权限判断 */

admin_priv(_order_stats);

$sql = select goods_id, goods_sn, goods_name, market_price, shop_price, promote_price, is_on_sale from goods where is_delete=0 order by goods_id desc;

$data_list = $db->getAll($sql);

/*------------------------------------------------------ */

//-- 下载EXCEL报表

/*------------------------------------------------------ */

/* 文件名 */

$filename = 商品表.date("Y-m-d",time());

header("Content-type: application/vnd.ms-excel; charset=utf-8");

header("Content-Disposition: attachment; filename=$filename.xls");

/* 文件标题 */

//echo ecs_iconv(EC_CHARSET, GB2312, $filename ) . "tn";

/* 头部信息 */

echo ecs_iconv(EC_CHARSET, GB2312, 商品ID) ."t";

echo ecs_iconv(EC_CHARSET, GB2312, 商品名称) ."t";

echo ecs_iconv(EC_CHARSET, GB2312, 货号) ."t";

echo ecs_iconv(EC_CHARSET, GB2312, 市场价) ."t";

echo ecs_iconv(EC_CHARSET, GB2312, 本店价) ."t";

echo ecs_iconv(EC_CHARSET, GB2312, 促销价) ."t";

echo ecs_iconv(EC_CHARSET, GB2312, 上/下架) ."t";

echo "n";

foreach ($data_list AS $data)

{

echo ecs_iconv(EC_CHARSET, GB2312, $data[goods_id]) . "t";

echo ecs_iconv(EC_CHARSET, GB2312, $data[goods_name]) . "t";

echo ecs_iconv(EC_CHARSET, GB2312, strval($data[goods_sn])) . "t";

echo ecs_iconv(EC_CHARSET, GB2312, $data[market_price]) . "t";

echo ecs_iconv(EC_CHARSET, GB2312, $data[shop_price]) . "t";

echo ecs_iconv(EC_CHARSET, GB2312, (intval($data[promote_price]) == 0 ? : $data[promote_price])) . "t";

echo ecs_iconv(EC_CHARSET, GB2312, ($data[is_on_sale] == 1 ? 上架 : )) . "t";

echo "n";

}

//以上这段代码生成Excel正常,不会出现问题,但在打开时会提示不兼容的问题。对于那些领导或者外行人士用,会感觉这个文档有问题,于是最模板找到PHPExcel来正常生成excel。

?>

header(Content-type:text/html;charset=utf-8);

require_once ROOT_PATH . /Classes/PHPExcel.php;

require_once ROOT_PATH . /Classes/PHPExcel/Writer/Excel2007.php;

require_once ROOT_PATH . /Classes/PHPExcel/Writer/Excel5.php;

include_once ROOT_PATH . /Classes/PHPExcel/IOFactory.php;

$objExcel = new PHPExcel();

//设置属性 (这段代码无关紧要,其中的内容可以替换为你需要的)

//$objExcel->getProperties()->setCreator("andy");

//$objExcel->getProperties()->setLastModifiedBy("andy");

//$objExcel->getProperties()->setTitle("Office 2003 XLS Test Document");

//$objExcel->getProperties()->setSubject("Office 2003 XLS Test Document");

//$objExcel->getProperties()->setDescription("Test document for Office 2003 XLS, generated using PHP classes.");

//$objExcel->getProperties()->setKeywords("office 2003 openxml php");

//$objExcel->getProperties()->setCategory("Test result file");

//$objExcel->setActiveSheetIndex(0);

$i=0;

//表头

$k1="商品ID";

$k2="商品名称";

$k3="货号";

$k4="市场价";

$k5="本店价";

$k6="促销价";

$k7="上/下架";

$objExcel->getActiveSheet()->setCellValue(a1, "$k1")->getStyle(a1)->getFont()->getColor()->setARGB(PHPExcel_Style_Color::COLOR_RED);

$objExcel->getActiveSheet()->setCellValue(b1, "$k2")->getStyle(b1)->getFont()->getColor()->setARGB(PHPExcel_Style_Color::COLOR_RED);

$objExcel->getActiveSheet()->setCellValue(c1, "$k3")->getStyle(c1)->getFont()->getColor()->setARGB(PHPExcel_Style_Color::COLOR_RED);

$objExcel->getActiveSheet()->setCellValue(d1, "$k4")->getStyle(d1)->getFont()->getColor()->setARGB(PHPExcel_Style_Color::COLOR_RED);

$objExcel->getActiveSheet()->setCellValue(e1, "$k5")->getStyle(e1)->getFont()->getColor()->setARGB(PHPExcel_Style_Color::COLOR_RED);

$objExcel->getActiveSheet()->setCellValue(f1, "$k6")->getStyle(f1)->getFont()->getColor()->setARGB(PHPExcel_Style_Color::COLOR_RED);

$objExcel->getActiveSheet()->setCellValue(g1, "$k7")->getStyle(g1)->getFont()->getColor()->setARGB(PHPExcel_Style_Color::COLOR_RED);

foreach($data_list as $k=>$v) {

$u1=$i+2;

/*----------写入内容-------------*/

$objExcel->getActiveSheet()->setCellValue(a.$u1, $v["goods_id"]);

$objExcel->getActiveSheet()->setCellValue(b.$u1, $v["goods_name"]);

$objExcel->getActiveSheet()->setCellValue(c.$u1, "".strval($v[goods_sn]));

$objExcel->getActiveSheet()->setCellValue(d.$u1, $v["market_price"]);

$objExcel->getActiveSheet()->setCellValue(e.$u1, $v["shop_price"]);

$objExcel->getActiveSheet()->setCellValue(f.$u1, (intval($v[promote_price]) == 0 ? : $v[promote_price]));

$objExcel->getActiveSheet()->setCellValue(g.$u1, ($v[is_on_sale] == 1 ? 上架 : ));

$i++;

}

// 高置列的宽度

$objExcel->getActiveSheet()->getColumnDimension(A)->setWidth(10);

$objExcel->getActiveSheet()->getColumnDimension(B)->setWidth(80);

$objExcel->getActiveSheet()->getColumnDimension(C)->setWidth(20);

$objExcel->getActiveSheet()->getColumnDimension(D)->setWidth(10);

$objExcel->getActiveSheet()->getColumnDimension(E)->setWidth(10);

$objExcel->getActiveSheet()->getColumnDimension(F)->setWidth(10);

$objExcel->getActiveSheet()->getColumnDimension(G)->setWidth(10);

$objExcel->getActiveSheet()->getHeaderFooter()->setOddHeader(LBPersonal cash registerRPrinted on D);

$objExcel->getActiveSheet()->getHeaderFooter()->setOddFooter(LB . $objExcel->getProperties()->getTitle() . RPage P of N);

// 设置页方向和规模

$objExcel->getActiveSheet()->getPageSetup()->setOrientation(PHPExcel_Worksheet_PageSetup::ORIENTATION_PORTRAIT);

$objExcel->getActiveSheet()->getPageSetup()->setPaperSize(PHPExcel_Worksheet_PageSetup::PAPERSIZE_A4);

$objExcel->setActiveSheetIndex(0);

ob_end_clean();

$ex = ;

if($ex == 2007) { //导出excel2007文档

header(Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet);

header(Content-Disposition: attachment;filename=".$filename..xlsx");

header(Cache-Control: max-age=0);

$objWriter = PHPExcel_IOFactory::createWriter($objExcel, Excel2007);

$objWriter->save(php://output);

exit;

} else { //导出excel2003文档

header(Content-Type: application/vnd.ms-excel);

header(Content-Disposition: attachment;filename=".$filename..xls");

header(Cache-Control: max-age=0);

$objWriter = PHPExcel_IOFactory::createWriter($objExcel, Excel5);

$objWriter->save(php://output);

exit;

}

?>

注释掉ecshop的生成代码后,PHPExcel生成的excel却变成了乱码,重新把PHPExcel单独拿出来又正常。建网站怎么做网站

本文由易站通网络收集整理,如有版权问题请和我们联系我们会在第一时间内做出处理

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值