php导出照片,Laravel使用 Laravel Excel文件导出图片功能

Laracel 中可以使用Laravel Excel进行Excel或者PDF的导出,使用composer进行安装此差价,Laravel-Excel将PHPExcel进行封装。

其官方文档:http://www.maatwebsite.nl/laravel-excel/docs

其中并未解释出如何导出图片excel

其实是可以使用PHPExcel的方式进行图片的导出的,这里给出一个实例。

首先需要引入使用的Excel,和导入图片所使用的PHPExcel_Worksheet_Drawing

use Maatwebsite\Excel\Facades\Excel;

use PHPExcel_Worksheet_Drawing;

//其中$array为数据(已经有相应的格式),$temp_img(已经确定了以列名为key,所有的图片地址值为value的形式)

Excel::create($subTaskId, function ($excel) use ($array, $temp_img) {

$excel->sheet('玩家数据', function ($sheet) use ($array, $temp_img) {

//写入所有的数据

$sheet->fromArray(

$array

);

//这里直接在最后输出图片

$num = sizeof($array[0]);

//这个主要是为了确定列数

$title_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', 'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'AG', 'AH'];

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

//写入列名

$sheet->cell($title_array[$num] . '1', function ($cell) use ($k) {

$cell->setValue($k);

});

$i = 2;

//循环输出图片

foreach ($v as $k1 => $v1) {

foreach ($v1 as $k2=>$v2){

$objDrawing = new PHPExcel_Worksheet_Drawing;

$objDrawing->setPath(public_path($v2));

$objDrawing->setCoordinates($title_array[$num] . $i);

$objDrawing->setHeight(50);

$objDrawing->setOffsetX(100);

$objDrawing->setRotation(100);

$objDrawing->setWorksheet($sheet);

}

$i = $i + 1;

}

$num = $num + 1;

}

});

})->download('xls');

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
非常抱歉,我之前的回答还是有误。对于包含图片的单元格,您需要提取图片并在前端页面上显示。 以下是修改后的代码,可以实现在前端导入 Excel 表格并将数据和图片展示在页面上: ```html <input type="file" id="inputFile" /> <div id="output"></div> ``` ```javascript document.getElementById('inputFile').addEventListener('change', handleFile, false); function handleFile(e) { var files = e.target.files; var fileReader = new FileReader(); fileReader.onload = function(e) { var data = new Uint8Array(e.target.result); var workbook = XLSX.read(data, { type: 'array' }); // 获取第一个工作表 var worksheet = workbook.Sheets[workbook.SheetNames[0]]; // 将表格数据转换为 JSON 格式 var jsonData = XLSX.utils.sheet_to_json(worksheet, { raw: true }); // 处理数据,包括图片 displayData(jsonData, workbook); }; fileReader.readAsArrayBuffer(files[0]); } function displayData(data, workbook) { var output = document.getElementById('output'); output.innerHTML = ''; data.forEach(function(rowData) { var rowDiv = document.createElement('div'); for (var key in rowData) { var cellDiv = document.createElement('div'); cellDiv.textContent = key + ': ' + rowData[key]; if (isImage(cellDiv.textContent)) { var imgSrc = extractImage(cellDiv.textContent, workbook); var img = document.createElement('img'); img.src = imgSrc; cellDiv.textContent = ''; cellDiv.appendChild(img); } rowDiv.appendChild(cellDiv); } output.appendChild(rowDiv); }); } function isImage(cellValue) { return cellValue.startsWith('=DISPIMG'); } function extractImage(cellValue, workbook) { var imgId = cellValue.split('"')[1]; var worksheet = workbook.Sheets[workbook.SheetNames[0]]; var drawings = worksheet['!drawings']; if (drawings && drawings.length > 0) { var drawing = drawings.find(function(d) { return d.name === imgId; }); if (drawing) { return drawing.image.src; } } return ''; } ``` 在上述代码中,`displayData` 函数会遍历表格数据,并检查每个单元格是否包含图片。如果是图片单元格,则会提取图片并在前端页面上显示。 请注意,此示例假定 Excel 表格中的图片使用 `=DISPIMG("ID_XXX",1)` 的公式进行引用。您需要根据实际情况进行相应的修改。 希望这次能满足您的需求,如有任何问题,请随时提问!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值