excel合并单元格
Excel合并单元格
标签(空格分隔): php
phpexcel
# excel导出
public static function downloadExcel($title, $list, $fileName = 'xxx')
{
import("Org.Util.PHPExcel");
import('Org.Util.PHPExcel.IOFactory');
import('Org.Util.PHPExcel.Style.Alignment');
import("Org.Util.PHPExcel.Writer.Excel2007");
$PHPExcel = new \PHPExcel;
$PHPSheet = $PHPExcel->getActiveSheet();
# 居中设置
$PHPExcel->getDefaultStyle()->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$PHPExcel->getDefaultStyle()->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
$start = 2;
# 统计重复的次数
$arrayCountValues = array_count_values(array_column($list, 'number'));
foreach ($list as $k => $v) {
# code...
foreach ($title as $key => $value) {
if ($k == 0) {
$PHPSheet->setCellValue($key.'1', end($value));
}
$i = $k + 2;
$PHPSheet->setCellValue($key.$i, $v[reset($value)]);
# 合并单元格
$PHPSheet->mergeCells('A'.$start.':A'.($start+$arrayCountValues[$v['number']]-1));
$PHPSheet->mergeCells('B'.$start.':B'.($start+$arrayCountValues[$v['number']]-1));
$PHPSheet->mergeCells('C'.$start.':C'.($start+$arrayCountValues[$v['number']]-1));
$PHPSheet->mergeCells('D'.$start.':D'.($start+$arrayCountValues[$v['number']]-1));
$PHPSheet->mergeCells('E'.$start.':E'.($start+$arrayCountValues[$v['number']]-1));
$PHPSheet->mergeCells('F'.$start.':F'.($start+$arrayCountValues[$v['number']]-1));
$PHPSheet->mergeCells('G'.$start.':G'.($start+$arrayCountValues[$v['number']]-1));
$PHPSheet->mergeCells('H'.$start.':H'.($start+$arrayCountValues[$v['number']]-1));
$PHPSheet->mergeCells('I'.$start.':I'.($start+$arrayCountValues[$v['number']]-1));
}
$start++;
}
$fileName = iconv("UTF-8", "GBK", $fileName.'.xlsx');
$PHPWriter = \PHPExcel_IOFactory::createWriter($PHPExcel,"Excel2007");
header("Pragma: public");
header("Expires: 0");
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Cache-Control: max-age=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='.$fileName);
header("Content-Transfer-Encoding:binary");
$PHPWriter->save("php://output");exit;
}
# csv导出
public static function downloadCsv($data = [], $header = [], $fileName= 'xxx') {
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="'.$fileName.'.csv"');
header('Cache-Control: max-age=0');
$fp = fopen('php://output', 'a');
foreach ($header as $key => $value) {
$header[$key] = iconv('utf-8', 'gbk', $value);
}
fputcsv($fp, $header);
$num = 0;
$limit = 100000;
$count = count($data);
for ($i = 0; $i < $count; $i++) {
$num++;
if ($limit == $num) {
ob_flush();
flush();
$num = 0;
}
$row = $data[$i];
foreach ($row as $key => $value) {
$row[$key] = iconv('utf-8', 'gbk', $value);
}
fputcsv($fp, $row);
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理