用PHPExcel导出的个人总结

再使用PHPExcel过程当中遇到过几个问题,总结一下,以备查询.
有时候导出会有打不开的问题,总结了下,可以尝试这样解决:

1.报warning,在第一行加了这行代码:
error_reporting(0);
这行代码的作用就是把warning,error等等的信息不显示出来。
最后执行,导出来的excel文件就可以顺利打开了。
2.有时候打不开,是后缀名的xlsx和xls的不同.试试把下载下来的文件后缀名为xlsx改为xls就能打开,看看具体报什么错!!

有时候打开是乱码总结如下:
1.有人说是Bom头的问题,不过我暂时还没有遇到.但是也是其中之一的影响因素.
2.phpexcel导出来的是乱码,是因为导出的时候字符集的问题,没有设置好,看看导出时的代码以及整个文档的编码!!最好导出的时候是utf-8的格式.其他的格式没有深入研究!

导出来的Excel是空白的:
1.空白的话 只能是数据没有放正确!!!逐步打印看看数据的正确性!
2.我的代码里面是按照下标索引的方式去填入数据表,所以如果最后的数组格式不一致,一样会导致导出的表是空白!
特别是在TP框架下面最重要的一点,在使用PHPExcel的时候,所有的实例化前面要加\,否则会报错,找不到类啊等等.


导出的时候提示Class 'XMLWriter' not found,解决方法是:

$objWriter = PHPExcel_IOFactory::createWriter($objExcel, 'Excel2007');
改为
$objWriter = PHPExcel_IOFactory::createWriter($objExcel, 'Excel5')


下面是我的代码,mark一下.

if(!empty($_POST['out']))
            {
                error_reporting(E_ALL);
                ini_set('display_errors', TRUE);
                ini_set('display_startup_errors', TRUE);
                date_default_timezone_set('Europe/London');

                if (PHP_SAPI == 'cli')
                    die('This example should only be run from a Web Browser');

                /** Include PHPExcel */
                require_once dirname(__FILE__) . '/PHPExcel.php';//不同的地方,请写入不同的路径

                // Create new PHPExcel object
                $objPHPExcel = new PHPExcel();//初始化主类.

                // Set document properties 设置属性
                $objPHPExcel->getProperties()->setCreator("Maarten Balliauw")
                                             ->setLastModifiedBy("Maarten Balliauw")
                                             ->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");

                // Miscellaneous glyphs, UTF-8
                    //将要获取目标表数据,这个地方我用的是TP框架,所以这样写,不同的框架,有不同拿到数据的方法,请根据自己情况自定义
                $list = $User->where('sell=1')->field('giftpic,id,giftname,des,credit,number,sell,addtime')->order('id desc')->limit($Page->firstRow.','.$Page->listRows)->select();
				
                foreach($list as $a=>$b){
                   $lamp[] = array_values($b);//把关联数组的下表,换成索引,方便后面的调用
                }
                
                    // 获取目标表的所有字段
                    $fields = $User->getDbFields();
                    foreach($fields as $f=>$d){
                        $ff[][] = $d;
                    }
			//自己写的excel列名,如果超过26个,超过52个,78个的不同情况,给不同的列名.可以自己再加.
                        $s = 'abcdefghijklmnopqrstuvwxyz'; 
                        $aa = str_split($s,1); 
                            $b=array();
                                for($i=0;$i<count($ff);$i++){
                                    if($i<26){
                                        $b[$aa[$i]]=$i;
                                    }else if($i<52){
                                        $m='A';
                                        $b[$m.$aa[$i-26]]=$i;
                                    }else if($i<78){
                                        $m='B';
                                        $b[$m.$aa[$i-52]]=$i;
                                    }
                                }
                                
				//这个地方,我是自定义的表头,就是导出之后的Excel的第一行,根据自己需要自定义.
                                $objPHPExcel->setActiveSheetIndex(0)->setCellValue('a1','图片');
                                $objPHPExcel->setActiveSheetIndex(0)->setCellValue('b1','ID');
                                $objPHPExcel->setActiveSheetIndex(0)->setCellValue('c1','名称');
                                $objPHPExcel->setActiveSheetIndex(0)->setCellValue('d1','余额');
                                $objPHPExcel->setActiveSheetIndex(0)->setCellValue('e1','积分');
                                $objPHPExcel->setActiveSheetIndex(0)->setCellValue('f1','库存数');
                                $objPHPExcel->setActiveSheetIndex(0)->setCellValue('g1','兑换数');
                                $objPHPExcel->setActiveSheetIndex(0)->setCellValue('h1','添加时间');
                            foreach($lamp as $i=>$v)
                            {
                                    foreach($b as $kk => $vv)
                                    {
                                        mb_convert_encoding($v[$vv], "UTF-8");
                                        $objPHPExcel->setActiveSheetIndex(0)
                                            ->setCellValue($kk.($i+2),$v[$vv]);//把数据写入进去Excel
                                    }
                            }

                // Rename worksheet
                $objPHPExcel->getActiveSheet()->setTitle('vip');//自定义工作表的名称,可自定义.

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

                ob_end_clean();//清除缓冲区的内容,以防导出的内容乱码,不能打开等问题,加上最好.
                // Redirect output to a client’s web browser (Excel2007)
                header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
                header('Content-Disposition: attachment;filename="01simple.xlsx"');
                 header('Content-Type: application/vnd.ms-excel;charset=gb2312');//自定义的字符集
                header('Cache-Control: max-age=0');
                // If you're serving to IE 9, then the following may be needed
                header('Cache-Control: max-age=1');

                // If you're serving to IE over SSL, then the following may be needed
                header ('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past
                header ('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT'); // always modified
                header ('Cache-Control: cache, must-revalidate'); // HTTP/1.1
                header ('Pragma: public'); // HTTP/1.0

                $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');//导出的方法实例化
                $objWriter->save('php://output');//导出
                exit;
            }


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用PHPExcel导出MySQL数据到Excel,首先需要安装并引入PHPExcel。 步骤如下: 1. 创建一个新的PHP文件,并包含PHPExcel的文件: ```php require_once 'PHPExcel/PHPExcel.php'; ``` 2. 连接到MySQL数据: ```php $servername = "localhost"; $username = "root"; $password = "password"; $dbname = "database"; $conn = new mysqli($servername, $username, $password, $dbname); if ($conn->connect_error) { die("连接失败: " . $conn->connect_error); } ``` 3. 执行查询语句获取数据: ```php $sql = "SELECT * FROM tablename"; $result = $conn->query($sql); ``` 4. 新建一个PHPExcel对象并设置一些属性: ```php $objPHPExcel = new PHPExcel(); $objPHPExcel->getProperties() ->setCreator("Your Name") ->setLastModifiedBy("Your Name") ->setTitle("MySQL导出Excel") ->setSubject("MySQL导出Excel") ->setDescription("MySQL数据导出Excel"); ``` 5. 将数据填充到Excel中: ```php $row = 1; while($row_data = $result->fetch_assoc()) { $col = 0; foreach($row_data as $value) { $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow($col, $row, $value); $col++; } $row++; } ``` 6. 设置Excel的输出: ```php $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); header('Content-Type: application/vnd.ms-excel'); header('Content-Disposition: attachment;filename="mysql_export.xls"'); header('Cache-Control: max-age=0'); $objWriter->save('php://output'); ``` 7. 关闭数据连接: ```php $conn->close(); ``` 以上就是用PHPExcel导出MySQL数据到Excel的简单步骤。根据需要,您可以添加更多的样式和设置来自定义导出Excel文件。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值