美文网首页我爱编程
PHPexcel导出图片+文字

PHPexcel导出图片+文字

作者: LauEl | 来源:发表于2018-03-27 08:08 被阅读28次
链接:https://pan.baidu.com/s/1crwJuRH9hEJfZYya4j-hyw 密码:wq06

导入包下载....中间出了点bug,无法导出 发现这个包只能5.5+

     //导出所有
    public function export()
    {
        $tzw = D('jishu');
        $list = $tzw->select();
        ini_set('memory_limit', '1000M');
        date_default_timezone_set('Asia/Shanghai');
        require_once 'Public/PHPExcel/PHPExcel.php';
        $cacheMethod = \PHPExcel_CachedObjectStorageFactory:: cache_to_phpTemp;
        $cacheSettings = array(' memoryCacheSize ' => '8MB');
        \PHPExcel_Settings::setCacheStorageMethod($cacheMethod, $cacheSettings);
        $objPHPExcel = new \PHPExcel();
        $objActSheet = $objPHPExcel->getActiveSheet();
        // 设置垂直居中
        $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('D')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
        $objPHPExcel->getActiveSheet()->getStyle('E')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
        $objPHPExcel->getActiveSheet()->getStyle('F')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);

        $objPHPExcel->getProperties()
            ->setCreator('mall')
            ->setLastModifiedBy('mall')
            ->setTitle('Office 2007 XLSX Document')
            ->setSubject('Office 2007 XLSX Document')
            ->setDescription('Document for Office 2007 XLSX, generated using PHP classes.')
            ->setKeywords('office 2007 openxml php')
            ->setCategory('Result file');
        $objPHPExcel->setActiveSheetIndex(0)
            ->setCellValue('A1', '名称')
            ->setCellValue('B1', '型号')
            ->setCellValue('C1', '图片')
            ->setCellValue('D1', '参数')
            ->setCellValue('E1', '单价')
            ->setCellValue('F1', '技术参数');
        foreach ($list as $k => $v) {
            $k += 2;
            $objActSheet->setCellValue('A' . $k, $v['mingcheng']);
            // 图片生成
            $objDrawing[$k] = new \PHPExcel_Worksheet_Drawing();
            $objDrawing[$k]->setPath('Public/upload/' . $v['tupian']);
            // 设置宽度高度
            $objDrawing[$k]->setHeight(150);//照片高度
            $objDrawing[$k]->setWidth(150); //照片宽度
            /*设置图片要插入的单元格*/
            $objDrawing[$k]->setCoordinates('C' . $k);
            // 图片偏移距离
            $objDrawing[$k]->setOffsetX(15);
            $objDrawing[$k]->setOffsetY(15);
            $objDrawing[$k]->setWorksheet($objPHPExcel->getActiveSheet());
            if ($v['jiance']) {
                // 图片生成
                $objDrawing1[$k] = new \PHPExcel_Worksheet_Drawing();
                $objDrawing1[$k]->setPath('Public/upload/' . $v['jiance']);
                // 设置宽度高度
                $objDrawing1[$k]->setHeight(200);//照片高度
                $objDrawing1[$k]->setWidth(150); //照片宽度
                /*设置图片要插入的单元格*/
                $objDrawing1[$k]->setCoordinates('F' . $k);
                // 图片偏移距离
                $objDrawing1[$k]->setOffsetX(15);
                $objDrawing1[$k]->setOffsetY(15);
                $objDrawing1[$k]->setWorksheet($objPHPExcel->getActiveSheet());
            }
            // 表格内容
            $objActSheet->setCellValue('E' . $k, $v['danjia']);
            $objActSheet->setCellValue('B' . $k, $v['xinghao']);
            // 表格高度
            $objActSheet->getRowDimension($k)->setRowHeight(200);
            $objActSheet->setCellValue('D' . $k, str_replace("|", "\n", $v["canshu"]));
//设置自动换行
            $objActSheet->getStyle('D' . $k)->getAlignment()->setWrapText(true);

        }
        //设置宽度
        $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(30);
        $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(25);
        $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(25);
        $objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(50);
        $objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(15);
        $objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth(35);
        $objPHPExcel->getActiveSheet()->setTitle('技术参数信息');
        $objPHPExcel->setActiveSheetIndex(0);
        $filename = '技术参数' . date('Ymd') . '.xls';
        header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
        header('Content-Disposition: attachment;filename="' . $filename . '"');
        header('Cache-Control: max-age=0');
        $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
        $objWriter->save('php://output');
    }
<?php
set_time_limit(0);
ini_set('memory_limit', '128M');
 
$fileName = date('YmdHis', time());
header('Content-Type: application/vnd.ms-execl');
header('Content-Disposition: attachment;filename="' . $fileName . '.csv"');
 
$begin = microtime(true);
 
//打开php标准输出流
//以写入追加的方式打开
$fp = fopen('php://output', 'a');
 
$db = new mysqli('127.0.0.1', 'root', '', 'test');
 
if($db->connect_error) {
    die('connect error');
}
 
//我们试着用fputcsv从数据库中导出1百万的数据
//我们每次取1万条数据,分100步来执行
//如果线上环境无法支持一次性读取1万条数据,可把$nums调小,$step相应增大。
$step = 100;
$nums = 10000;
 
//设置标题
$title = array('ID', '用户名', '用户年龄', '用户描述', '用户手机', '用户QQ', '用户邮箱', '用户地址');
foreach($title as $key => $item) {
    $title[$key] = iconv('UTF-8', 'GBK', $item);
}
//将标题写到标准输出中
fputcsv($fp, $title);
 
for($s = 1; $s <= $step; ++$s) {
    $start = ($s - 1) * $nums;
    $result = $db->query("SELECT * FROM tb_users ORDER BY id LIMIT {$start},{$nums}");
     
    if($result) {
        while($row = $result->fetch_assoc()) {
            foreach($row as $key => $item) {
                //这里必须转码,不然会乱码
                $row[$key] = iconv('UTF-8', 'GBK', $item);
            }
            fputcsv($fp, $row);
        }
        $result->free();
         
        //每1万条数据就刷新缓冲区
        ob_flush();
        flush();
    }
}
 
$end = microtime(true);
echo '用时:', $end - $begin;

相关文章

  • PHPexcel导出图片+文字

    导入包下载....中间出了点bug,无法导出 发现这个包只能5.5+

  • PHPExcel 导出图片

    后台导出Excel时需要连图片一起导出,这里记录下使用PHPExcel导出时图片的处理代码:

  • PHPExcel导出图片

    之前书写的一个导出图片的实例,每次翻之前的代码都直接写成日志,。通过数据库中的查询数组后输出

  • PHPEXCEL 导出数据加图片

    前言 图片对excel来说是一个对象,正常是导出不到单元格里去,所以大家都很困惑到底该怎么使用PHP语言来进行导出...

  • 导出带有样式色彩的Excel表

    http://www.jianshu.com/p/f6a7996b0410PHPExcel的导入导出--导出 在上...

  • PHPexcel溢出

    使用PHPExcel导出文件,会出现由于文件体积问题导致PHP内存溢出,需要对PHPExcel的参数优化。文件过大...

  • phpExcel表格导出

    首先下载phpExcel类,

  • PHPexcel导出常用

    下载 PHPExcel-1.8.zip 包http://note.youdao.com/noteshare?id=...

  • PHPexcel导出常用

    下载 PHPExcel-1.8.zip 包http://note.youdao.com/noteshare?id=...

  • PHPExcel 导入导出

    1.composer 下载 :composer require phpoffice/phpexcel << ++下...

网友评论

    本文标题:PHPexcel导出图片+文字

    本文链接:https://www.haomeiwen.com/subject/dzqjcftx.html