php生成excel带图片格式,php导出excel单元格带图片显示方法

php导出excel单元格带图片显示方法如下:<?php

session_start();

set_time_limit(0);

header("content-type:text/html; charset=utf-8");

error_reporting(E_ALL ^ E_NOTICE);    //除了 E_NOTICE,报告其他所有错误,

这是在 php.ini 里的默认设置

@set_time_limit(1000);          //设置脚本最大执行时间为1000秒并忽略函数错误,

运用了@错误控制运算符

@date_default_timezone_set("PRC");  //设置时区

date_default_timezone_set('Asia/Shanghai');

function test_input($data) {

$data=trim($data);

$data=stripslashes($data);

$data=htmlspecialchars($data);

return $data;

}

/*引入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);

//获得当前sheet对象

$objActSheet = $excel->getActiveSheet();

$excel->getActiveSheet()->setTitle('处理表'); //给当前活动sheet设置名称

//定义单元格列名

$letter = array('A','B','C','D','E','F','G','H','I','J','K','L','M','N');

/*设置表头数据*/

$tableheader = array('姓名', '性别', '年龄', '班级', '头像');

//给当前活动sheet填充数据,数据填充是按顺序一行一行填充的,

假如想给A1留空,可以直接setCellValue(‘A1’,’’);

// $excel->getActiveSheet()->setCellValue('A1', 'ID')

//     ->setCellValue('B1', '姓名')

//     ->setCellValue('C1', '手机号')

//     ->setCellValue('D1', '业务需求')

//     ->setCellValue('E1', '处理人姓名')

//     ->setCellValue('F1', '创建时间')

//     ->setCellValue('G1', '是否处理')

// ;

/*填充表格表头*/

for($i = 0;$i 

$excel->getActiveSheet()->setCellValue("$letter[$i]1","$tableheader[$i]");

}

/*设置表格数据*/

$data = array(

array('小王', '男', '20', 'CS12', 'PVC/HML55686.jpg'),

array('小李', '女', '21', 'CS12', 'PVC/HML55686.jpg'),

array('小马', '男', '22', 'CS12', 'PVC/HML55686.jpg'),

array('小赵', '女', '23', 'CS12', 'PVC/HML55686.jpg'),

array('小张', '男', '24', 'CS12', 'PVC/HML55686.jpg')

);

/*填充表格内容*/

for ($i = 0;$i 

$j = $i + 2;

/*设置表格宽度*/

$objActSheet->getColumnDimension("$letter[$i]")->setWidth(20);

/*设置表格高度*/

$excel->getActiveSheet()->getRowDimension($j)->setRowHeight(100);

/*向每行单元格插入数据*/

for ($row = 0;$row 

if ($row == (count($data[$i]) -1 )) {

/*实例化插入图片类*/

$objDrawing = new PHPExcel_Worksheet_Drawing();

/*设置图片路径 切记:只能是本地图片*/

$objDrawing->setPath($data[$i][$row]);

/*默认是按原图像缩放,设置成false为不缩放*/

$objDrawing->setResizeProportional(false);

/*设置图片高度*/

$objDrawing->setWidth(140);

$objDrawing->setHeight(130);

/*设置图片要插入的单元格*/

$objDrawing->setCoordinates("$letter[$row]$j");

/*设置图片所在单元格的格式*/

$objDrawing->setOffsetX(0);

$objDrawing->setOffsetY(0);

$objDrawing->setWorksheet($excel->getActiveSheet());

continue;

}

$excel->getActiveSheet()->setCellValue("$letter[$row]$j",$data[$i][$row]);

}

}

/*实例化excel输入类并完成输出excel文件*/

$write = new PHPExcel_Writer_Excel5($excel);//按照指定格式生成Excel

文件,‘PHPExcel_Writer_Excel2007’表示生成2007版本的xlsx

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="2019-8.xls"');

header("Content-Transfer-Encoding:binary");

$write->save('php://output');

?>

注意:php读取excel表,这里采用了PHPExcel插件,可以去https://github.com/PHPOffice/PHPExcel下载插件即可配合上面代码使用。

【打印本页】

【关闭窗口】

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在Java中,要导出有合并单元格Excel文件,可以使用Apache POI库。Apache POI是一个用于操作各种Microsoft Office格式文件的Java库。以下是一个简单的示例代码来导出有合并单元格Excel文件: ``` import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.*; import java.io.FileOutputStream; import java.io.IOException; public class ExcelExportExample { public static void main(String[] args) { String[] headers = {"姓名", "学科", "分数"}; String[][] data = {{"小明", "数学", "90"}, {"小明", "英语", "80"}, {"小明", "语文", "95"}}; try (Workbook workbook = new XSSFWorkbook()) { Sheet sheet = workbook.createSheet("成绩表"); Row headerRow = sheet.createRow(0); for (int i = 0; i < headers.length; i++) { Cell cell = headerRow.createCell(i); cell.setCellValue(headers[i]); } for (int i = 0; i < data.length; i++) { Row dataRow = sheet.createRow(i + 1); for (int j = 0; j < data[i].length; j++) { Cell cell = dataRow.createCell(j); cell.setCellValue(data[i][j]); } } // 合并单元格 CellRangeAddress region = new CellRangeAddress(1, 1, 0, 2); sheet.addMergedRegion(region); try (FileOutputStream outputStream = new FileOutputStream("成绩表.xlsx")) { workbook.write(outputStream); } System.out.println("Excel文件导出成功!"); } catch (IOException e) { e.printStackTrace(); } } } ``` 以上代码创建了一个包含姓名、学科和分数的表头和对应的数据行的Excel表格。然后使用`CellRangeAddress`类来指定需要合并的单元格,这里示例代码将第一行的第一列到第三列进行合并。最后将Workbook写入到文件输出流中,即可将有合并单元格Excel文件导出成功。 ### 回答2: 在Java中导出有合并单元格Excel文件可以通过使用Apache POI库来实现。Apache POI是一个开源的Java库,用于处理Microsoft Office格式文件,包括Excel。 首先,确保已经在Java项目中引入了Apache POI库的相关依赖。 接下来,我们需要创建一个Workbook对象(代表一个Excel文件),并设置合并单元格的样式。可以使用CellStyle对象来定义合并单元格的样式,例如设置背景颜色、边框等。 然后,创建一个Sheet对象(代表一个Excel工作表),并在其中设置合并单元格的区域。可以使用Sheet对象的addMergedRegion方法来实现,指定需要合并的单元格区域的起始行、起始列、结束行、结束列。 最后,通过创建Row和Cell对象,并设置其值,将数据写入合并单元格的位置。 下面是一个简单的示例代码: ```java import org.apache.poi.ss.usermodel.*; public class ExcelExporter { public static void main(String[] args) { Workbook workbook = new XSSFWorkbook(); Sheet sheet = workbook.createSheet("Sheet1"); CellStyle style = workbook.createCellStyle(); style.setFillForegroundColor(IndexedColors.YELLOW.getIndex()); style.setFillPattern(FillPatternType.SOLID_FOREGROUND); style.setBorderBottom(BorderStyle.THIN); style.setBorderTop(BorderStyle.THIN); style.setBorderLeft(BorderStyle.THIN); style.setBorderRight(BorderStyle.THIN); sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, 2)); // 合并第一行的前三列 Row row = sheet.createRow(0); Cell cell = row.createCell(0); cell.setCellValue("合并单元格"); cell.setCellStyle(style); // 写入文件或进行其他操作 } } ``` 以上代码创建了一个包含合并单元格Excel文件,合并了第一行的前三列,并将"合并单元格"写入合并单元格的位置。可以根据实际需求进行修改和扩展。 希望对你有所帮助! ### 回答3: 在Java中导出有合并单元格Excel可以使用Apache POI库来实现。下面是一个简单的示例代码: ```java import org.apache.poi.ss.usermodel.*; import org.apache.poi.ss.util.CellRangeAddress; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import java.io.FileOutputStream; import java.io.IOException; public class ExcelExportDemo { public static void main(String[] args) { // 创建工作簿 Workbook workbook = new XSSFWorkbook(); // 创建工作表 Sheet sheet = workbook.createSheet("Sheet1"); // 创建合并单元格区域 CellRangeAddress mergeRegion = new CellRangeAddress(0, 0, 0, 3); // 合并单元格 sheet.addMergedRegion(mergeRegion); // 创建行 Row row = sheet.createRow(0); // 创建单元格 Cell cell = row.createCell(0); // 设置单元格内容 cell.setCellValue("合并单元格示例"); // 导出Excel文件 try { FileOutputStream outputStream = new FileOutputStream("output.xlsx"); workbook.write(outputStream); outputStream.flush(); outputStream.close(); System.out.println("Excel文件导出成功!"); } catch (IOException e) { e.printStackTrace(); } } } ``` 以上代码创建了一个工作簿和工作表,然后设置合并单元格的区域,创建行和单元格,并设置单元格的值为"合并单元格示例"。最后将工作簿导出Excel文件。在Excel中打开导出的文件,可以看到第一行的前四列单元格被合并为一个单元格,并且单元格的内容为"合并单元格示例"。 注意:在运行代码之前,确保已经导入了Apache POI库的相关依赖。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值