完美解决phpexcel导出到xls文件出现乱码的问题_php技巧

解决方法如下所示:

<?php
include 'global.php';
$ids = $_GET['ids'];

$sql = "select * from crm_cost_end where id in ( {$ids} )";
$result = $db->findAll($sql);
//echo $result[1]['sn'];

//创建一个excel对象
$objPHPExcel = new PHPExcel();
// Set properties 

$objPHPExcel->getProperties()->setCreator("ctos")
    ->setLastModifiedBy("ctos")
    ->setTitle("Office 2007 XLSX Test Document")
    ->setSubject("Office 2007 XLSX Test Document")
    ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.")
    ->setKeywords("office 2007 openxml php")
    ->setCategory("Test result file");

//set width
$objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(8);
$objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(10);
$objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(25);
$objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(12);
$objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(50);
$objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth(10);
$objPHPExcel->getActiveSheet()->getColumnDimension('G')->setWidth(12);
$objPHPExcel->getActiveSheet()->getColumnDimension('H')->setWidth(12);
$objPHPExcel->getActiveSheet()->getColumnDimension('I')->setWidth(12);
$objPHPExcel->getActiveSheet()->getColumnDimension('J')->setWidth(30);

//设置行高度
$objPHPExcel->getActiveSheet()->getRowDimension('1')->setRowHeight(22);

$objPHPExcel->getActiveSheet()->getRowDimension('2')->setRowHeight(20);

//set font size bold
$objPHPExcel->getActiveSheet()->getDefaultStyle()->getFont()->setSize(10);
$objPHPExcel->getActiveSheet()->getStyle('A2:J2')->getFont()->setBold(true);

$objPHPExcel->getActiveSheet()->getStyle('A2:J2')->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('A2:J2')->getBorders()->getAllBorders()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);

//设置水平居中
$objPHPExcel->getActiveSheet()->getStyle('A1')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_LEFT);
$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('D')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('F')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('G')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('H')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('I')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);

//
$objPHPExcel->getActiveSheet()->mergeCells('A1:J1');

// set table header content
$objPHPExcel->setActiveSheetIndex(0)
    ->setCellValue('A1', '订单数据汇总 时间:' . date('Y-m-d H:i:s'))
    ->setCellValue('A2', '订单ID')
    ->setCellValue('B2', '下单人')
    ->setCellValue('C2', '客户名称')
    ->setCellValue('D2', '下单时间')
    ->setCellValue('E2', '需求机型')
    ->setCellValue('F2', '需求数量')
    ->setCellValue('G2', '需求交期')
    ->setCellValue('H2', '确认BOM料号')
    ->setCellValue('I2', 'PMC确认交期')
    ->setCellValue('J2', 'PMC交货备注');

// Miscellaneous glyphs, UTF-8 

for ($i = 0; $i < count($result) - 1; $i++) {
  $objPHPExcel->getActiveSheet(0)->setCellValue('A' . ($i + 3), $result[$i]['id']);
  $objPHPExcel->getActiveSheet(0)->setCellValue('B' . ($i + 3), $result[$i]['realname']);
  $objPHPExcel->getActiveSheet(0)->setCellValue('C' . ($i + 3), $result[$i]['customer_name']);
  $objPHPExcel->getActiveSheet(0)->setCellValue('D' . ($i + 3), $OrdersData[$i]['create_time']);
  $objPHPExcel->getActiveSheet(0)->setCellValue('E' . ($i + 3), $result[$i]['require_product']);
  $objPHPExcel->getActiveSheet(0)->setCellValue('F' . ($i + 3), $result[$i]['require_count']);
  $objPHPExcel->getActiveSheet(0)->setCellValue('G' . ($i + 3), $result[$i]['require_time']);
  $objPHPExcel->getActiveSheet(0)->setCellValue('H' . ($i + 3), $result[$i]['product_bom_encoding']);
  $objPHPExcel->getActiveSheet(0)->setCellValue('I' . ($i + 3), $result[$i]['delivery_time']);
  $objPHPExcel->getActiveSheet(0)->setCellValue('J' . ($i + 3), $result[$i]['delivery_memo']);
  $objPHPExcel->getActiveSheet()->getStyle('A' . ($i + 3) . ':J' . ($i + 3))->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
  $objPHPExcel->getActiveSheet()->getStyle('A' . ($i + 3) . ':J' . ($i + 3))->getBorders()->getAllBorders()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
  $objPHPExcel->getActiveSheet()->getRowDimension($i + 3)->setRowHeight(16);
}

// Rename sheet
$objPHPExcel->getActiveSheet()->setTitle('订单汇总表');

// Set active sheet index to the first sheet, so Excel opens this as the first sheet
$objPHPExcel->setActiveSheetIndex(0);

// Redirect output to a client's web browser (Excel5)
<span style="color:#ff0000;">ob_end_clean();//清除缓冲区,避免乱码</span>
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="订单汇总表(' . date('Ymd-His') . ').xls"');
header('Cache-Control: max-age=0');

$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save('php://output');
?>

在header() 前面加上ob_end_clean() 函数,清除缓冲区, 这样就不会乱码了!

以上就是小编为大家带来的完美解决phpexcel导出到xls文件出现乱码的问题全部内容了,希望大家多多支持~

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索mysql 导出xls 乱码、xls打开是乱码、xls文件打开乱码、xls乱码、xls乱码修复工具,以便于您获取更多的相关知识。

时间: 2024-10-22 21:44:04

完美解决phpexcel导出到xls文件出现乱码的问题_php技巧的相关文章

利用php下载xls文件(自己动手写的)_php技巧

昨天看ECSHOP源码的时候,碰到了一点自己没有学过的只是--如何利用php实现下载xls文件.根据它的源码,我动手实现了一下,成功实现了这个效果. 源码: 复制代码 代码如下: <?php /* *@Description:下载xls表 * * */ function downloadXls($filename=''){ $filename = !empty($filename) ? $filename : die('nothing'); //header 的作用是 新建一个被下载的test.

完美解决dedecms中的[html][/html]和[code][/code]问题_php技巧

终于解决了完美解决dedecms中的[html][/html]和[code][/code]问题,因为我的php不太熟练,所以正则搞了好几天,才能好,这次主要修改了discuz5.5和dedecms3.1的运行功能和code功能,好开心啊,开始新站的数据转移工作和新站模版制作了,到时候一个全新的了,如果有问题,大家可以交流下,现在blueidea和51js和dedecms的论坛问这个问题他们没有回答,但不影响效果,也让我自己学到了东西.

php中使用PHPExcel操作excel(xls)文件

  PHPExcel是php的一个插件,它可以实现读取excel文件也就是xls文件了,下面我们就来看一个PHPExcel操作excel(xls)文件例子,希望能帮助到各位. 读取中文的xls.csv文件会有问题,网上找了下资料,发现PHPExcel类库好用 1.读取xls文件内容  代码如下   <?php     //向xls文件写入内容     error_reporting(E_ALL);     ini_set('display_errors', TRUE);         incl

php中使用PHPExcel读写excel(xls)文件的方法_php技巧

本文实例讲述了PHP中使用PHPExcel读写excel(xls)文件的方法,非常实用.分享给大家供大家参考之用.具体方法如下: 很多PHP类库在读取中文的xls.csv文件时会有问题,网上找了下资料,发现PHPExcel类库好用,官网地址为:http://phpexcel.codeplex.com/.现将PHPExcel读写Excel的方法分别叙述如下: 1.读取xls文件内容 <?php //向xls文件写入内容 error_reporting(E_ALL); ini_set('displa

完美解决phpdoc导出文档中@package的warning及Error的错误_php技巧

今天在编写PHPDoc的导出文档的时候发现一个很郁闷的错误,虽然这个warning不是什么重要错误,但是看着总是很不爽的.于是就去网上找了很多相关的资料,可是郁闷的是不知道是我用的PHPDoc版本太新(1.4的版本),还是说很多人都没遇到这个问题,反正就是没有相关的这个资料找到,只是找到了一些从PHPDocumentor官方网倒出来的关于@package的使用注意事项,然后就只能一条一条检查,看了一个版本又一个版本,总算是被我解决了. 而且发现该方案可以解决@package之类相关的错误提示:

php使用ftp远程上传文件类(完美解决主从文件同步问题的方法)_php技巧

php使用ftp实现文件上传代码片段: <?php /** * ftp上传文件类 */ class Ftp { /** * 测试服务器 * * @var array */ private $testServer = array( 'host' => 'ip', 'port' => 21, 'user' => 'userName', 'pwd' => 'password' ); /** * 打开并登录服务器 * * @param string $flag 服务器标识test *

解决PhpMyAdmin中导入2M以上大文件限制的方法分享_php技巧

要处理这个问题,经过一番研究发现,有2种方法: 方法一: 找到php.ini搜索这3个地方 upload_max_filesize , memory_limit 和 post_max_size将他们后面的值修改成大于你需要导入的数据库大小就好了.然后重启的PHP环境. 方法二:以phpMyAdmin-3.1.0-all-languages为例,我的安装目录E:\wwwroot\phpMyAdmin\ 1.在 phpmyadmin目录里新建一个目录 upload. 2.打开phpmyadmin,找

PHP读取大文件的多种方法介绍_php技巧

读取大文件一直是一个头痛的问题,我们像使用php开发读取小文件可以直接使用各种函数实现,但一到大文章就会发现常用的方法是无法正常使用或时间太长太卡了,下面我们就一起来看看关于php读取大文件问题解决办法,希望例子能帮助到各位. 在PHP中,对于文件的读取时,最快捷的方式莫过于使用一些诸如file.file_get_contents之类的函数,简简单单的几行代码就能 很漂亮的完成我们所需要的功能.但当所操作的文件是一个比较大的文件时,这些函数可能就显的力不从心, 下面将从一个需求入手来说明对于读取

linux服务器下完美解决无法删除虚拟主机文件或文件夹_Linux

FTP工具软件会提示Permission Denied(没有权限),或者 550删除目录操作失败.今天小残在操作FTP的时候就出现了这种问题. 出现的原因一般都是这些目录或文件是PHP程序以管理员用户写入的,而一般虚拟主机的用户名下的用户又没有管理员用户组的权限,因此无法删除. 大家在使用Linux的虚拟主机时候有没有出现过通过FTP无法删除网站路径中的一些文件夹和文件 我们可以把下面这个PHP代码放到对应的虚拟主机的空间上运行,按提示输入文件夹或文件名即可.(注意这里最好使用相对路径.) <?