PHP导出excel带图片

3 篇文章 0 订阅
<?php
/*设置表头数据*/
$tableheader = array('ID', '头像','姓名', '性别', '年龄', '班级');
/*设置表格数据*/
$data = array(
    array('1', 'imgs/yang.png','小王', '男', '20', 'CS12'),
    array('2', 'imgs/yang.png','小李', '女', '21', 'CS12'),
    array('3', 'imgs/yang.png','小周', '男', '22', 'CS12'),
    array('4', 'imgs/yang.png','小赵', '女', '23', 'CS12')
);
$excel_name='测试导出';
phpexcel_img($excel_name,$tableheader,$data,2);
function phpexcel_img($excel_name,$tableheader,$data,$img_num){
    /*引入phpexcel核心类文件*/
    include './Classes/PHPExcel.php';
    /*实例化excel类*/
    $excel = new PHPExcel();
    /*实例化excel图片处理类*/
    $objDrawing = new PHPExcel_Worksheet_Drawing();
    /*设置文本对齐方式*/
    $excel->getDefaultStyle()->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
    $excel->getDefaultStyle()->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
    $objActSheet = $excel->getActiveSheet();
    $letter = array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z' );
    /*填充表格表头*/
    for($i = 0;$i < count($tableheader);$i++) {
        $excel->getActiveSheet()->setCellValue("$letter[$i]1","$tableheader[$i]");
    }
    /*填充表格内容*/
    for ($i = 0;$i < count($data);$i++) {
        $j = $i + 2;
        /*设置表格宽度*/
        $objActSheet->getColumnDimension("$letter[$i]")->setWidth(20);
        /*设置表格高度*/
        $excel->getActiveSheet()->getRowDimension($j)->setRowHeight(100);
        /*向每行单元格插入数据*/
        for ($row = 0;$row < count($data[$i]);$row++) {
            if ($row == ($img_num-1)) {
                /*实例化插入图片类*/
                $objDrawing = new PHPExcel_Worksheet_Drawing();
                /*设置图片路径 切记:只能是本地图片*/
                $objDrawing->setPath($data[$i][$row]);
                /*设置图片高度*/
                $objDrawing->setHeight(100);
                /*设置图片要插入的单元格*/
                $objDrawing->setCoordinates("$letter[$row]$j");
                /*设置图片所在单元格的格式*/
                $objDrawing->setOffsetX(80);
                $objDrawing->setRotation(20);
                $objDrawing->getShadow()->setVisible(true);
                $objDrawing->getShadow()->setDirection(50);
                $objDrawing->setWorksheet($excel->getActiveSheet());
                continue;
            }
            $excel->getActiveSheet()->setCellValue("$letter[$row]$j",$data[$i][$row]);
        }
    }
    /*实例化excel输入类并完成输出excel文件*/
    $write = new PHPExcel_Writer_Excel5($excel);
    header("Pragma: public");
    header("Expires: 0");
    header("Cache-Control:must-revalidate, post-check=0, pre-check=0");
    header("Content-Type:application/force-download");
    header("Content-Type:application/vnd.ms-execl");
    header("Content-Type:application/octet-stream");
    header("Content-Type:application/download");
    header('Content-Disposition:attachment;filename="'.$excel_name.'.xls"');
    header("Content-Transfer-Encoding:binary");
    $write->save('php://output');
}

PHPExcel工具包在gitee上搜索下载

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PhpSpreadsheet可以将Excel表格中的图片导出,只需要在导出Excel时对图片进行处理即可。 首先需要将图片插入到Excel表格中,可以使用`PhpSpreadsheet\Worksheet\Drawing`类来实现。例如: ```php use PhpOffice\PhpSpreadsheet\Worksheet\Drawing; // 创建一个 Drawing 对象 $drawing = new Drawing(); $drawing->setName('Logo'); $drawing->setDescription('Logo'); $drawing->setPath('path/to/image.jpg'); $drawing->setHeight(50); $drawing->setCoordinates('A1'); // 将 Drawing 对象添加到工作表中 $worksheet->getRowDimension(1)->setRowHeight(80); $worksheet->getColumnDimension('A')->setWidth(30); $worksheet->setCellValue('A1', '这是一个图片的单元格'); $worksheet->setDrawing($drawing); ``` 上面的代码中,我们创建了一个Drawing对象,并设置了图片的路径、高度、位置等属性。然后将Drawing对象添加到工作表中,再将单元格的值设置为图片的描述。 接下来,可以使用`PhpSpreadsheet\IOFactory`类将工作表导出Excel文件。例如: ```php use PhpOffice\PhpSpreadsheet\IOFactory; // 创建一个工作簿对象 $spreadsheet = new Spreadsheet(); $worksheet = $spreadsheet->getActiveSheet(); // 插入图片到工作表中 // 导出Excel文件 $writer = IOFactory::createWriter($spreadsheet, 'Xlsx'); $writer->save('path/to/exported.xlsx'); ``` 这样就可以将图片Excel表格导出了。需要注意的是,导出Excel文件中可能会出现图片失真或者位置偏移的情况,需要根据实际情况进行调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值