导航:首页 > 编程语言 > phpexcel合并单元格

phpexcel合并单元格

发布时间:2024-07-12 15:25:36

‘壹’ thinkphp5.0 如何导入phpexcel插件,能详细些点吗

下载phpexcel,将整个文件夹放到vendor文件夹里面,如下图


vendor("PHPExcel.PHPExcel");
$objPHPExcel=newPHPExcel();
$file_name=date('YmdHis').'.xls';
header("Content-Disposition:attachment;filename=".$file_name);
$objActSheet=$objPHPExcel->getActiveSheet()->setTitle('成绩单');


$objActSheet->SetCellValue('A1','ID');
$objActSheet->SetCellValue('B1','名称');
$objActSheet->SetCellValue('C1','分数');

$list="";//数据列表

if($list){
foreach($listas$k=>$v){
$i=$k+2;
$objActSheet->SetCellValue('A'.$i,''.$v['id']);
$objActSheet->SetCellValue('B'.$i,''.$v['name']);
$objActSheet->SetCellValue('C'.$i,''.$v['score']);
}
$objWriter=newPHPExcel_Writer_Excel5($objPHPExcel);
$objWriter->save('php://output');//输出到浏览器
exit;
}

‘贰’ thinkphp 导出excel 怎么合并单元格

PHPexcel导出_带合并单元格/边框背景/_有效果图_thinkphp
##供稿单位导出
public function gonggao_excel(){
$color='0xCC000000';
//查询所有供稿单位
$order='paixu asc,id desc';
$where=array('token'=>$this->token,'status'=>'1');
$data=M('gonggao')->where($where)->order($order)->select();
//增加供稿单位的文章数量
foreach ($data as $key => $value) {
$data[$key]['shuliang']=M('img')->where(array('gonggaoid'=>$value['id']))->count();
$data[$key]['title']=M('img')->where(array('gonggaoid'=>$value['id']))->getfield('title',true);
}
// //查询出所有行数
// $all_count=0;
// foreach ($data as $key => $value) {
// if(!empty($value['title'])){
// $all_count=$all_count+count($value['title']);
// }else{
// $all_count++;
// }
//重组数组
foreach ($data as $key => $value) {
if(!empty($value['title'])){
foreach ($value['title'] as $k => $v) {
$newData[]=$v;
}

}else{
$newData[]='';
}
}

//mp($newData);
//mp($data);
//die;

// 引用phpexcel类
import('Lib/ORG/PHPExcel');
// 创建对象
$objPHPExcel = new PHPExcel();
// 显示错误信息
error_reporting(E_ALL);
// Set properties
$objPHPExcel->getProperties()->setCreator("赵英杰")
->setLastModifiedBy("赵英杰")
->setTitle("Office 2007 XLSX Test Document")
->setSubject("Office 2007 XLSX Test Document")
->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.")
->setKeywords("office 2007 openxml php")
->setCategory("Test result file");
// 设置宽度
$objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(10);
$objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(40);
$objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(15);
$objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(60);
// 设置行高度
$objPHPExcel->getActiveSheet()->getDefaultRowDimension()->setRowHeight(20); //设置默认行高
$objPHPExcel->getActiveSheet()->getRowDimension('1')->setRowHeight(30); //第一行行高
$objPHPExcel->getActiveSheet()->getRowDimension('2')->setRowHeight(20); //第二行行高
// 字体和样式
$objPHPExcel->getActiveSheet()->getDefaultStyle()->getFont()->setSize(12); //字体大小
$objPHPExcel->getActiveSheet()->getStyle('A2:D2')->getFont()->setBold(false); //第二行是否加粗
$objPHPExcel->getActiveSheet()->getStyle('A1')->getFont()->setBold(true); //第一行是否加粗
$objPHPExcel->getActiveSheet()->getStyle('A1')->getFont()->setSize(16); //第一行字体大小
// 设置垂直居中
$objPHPExcel->getActiveSheet()->getStyle('A1')->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('A2:D2')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);

//边框样式
$styleArray = array(
'borders' => array(
'allborders' => array(
//'style' => PHPExcel_Style_Border::BORDER_THICK,//边框是粗的
'style' => PHPExcel_Style_Border::BORDER_THIN,//细边框
'color' => array('argb' => $color),
),
),
);
$objPHPExcel->getActiveSheet()->getStyle('A2:D2')->applyFromArray($styleArray);
//边框
//$objPHPExcel->getActiveSheet()->getStyle('A2:D2')->getBorders()->getAllBorders()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
// 设置水平居中
$objPHPExcel->getActiveSheet()->getStyle('A1')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('A')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('B')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('C')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('D')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);

// 合并
$objPHPExcel->getActiveSheet()->mergeCells('A1:D1');

// 表头
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue('A1', '供稿单位文章统计')
->setCellValue('A2', '编号')
->setCellValue('B2', '供稿单位')
->setCellValue('C2', '文章数量')
->setCellValue('D2', '文章名称');
// 内容
// for ($i = 0, $len = count($data); $i < $len; $i++) {
// $objPHPExcel->getActiveSheet(0)->setCellValue('A' . ($i + 3), $i);
// $objPHPExcel->getActiveSheet(0)->setCellValue('B' . ($i + 3), $data[$i]['gonggao']);
// $objPHPExcel->getActiveSheet(0)->setCellValue('C' . ($i + 3), $data[$i]['shuliang']);
// $objPHPExcel->getActiveSheet(0)->setCellValue('D' . ($i + 3), $data[$i]['status']);
// $objPHPExcel->getActiveSheet()->getStyle('A' . ($i + 3) . ':D' . ($i + 3))->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
// $objPHPExcel->getActiveSheet()->getStyle('A' . ($i + 3) . ':D' . ($i + 3))->getBorders()->getAllBorders()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
// $objPHPExcel->getActiveSheet()->getRowDimension($i + 3)->setRowHeight(16);
// }

//重构内容-文章名称录入
for ($i = 0, $len = count($newData); $i < $len; $i++) {
$objPHPExcel->getActiveSheet(0)->setCellValue('D' . ($i + 3), $newData[$i]);
$objPHPExcel->getActiveSheet()->getStyle('A' . ($i + 3) . ':D' . ($i + 3))->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
//左对齐
$objPHPExcel->getActiveSheet()->getStyle('D')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_LEFT);
//边框设置
//$objPHPExcel->getActiveSheet()->getStyle('A' . ($i + 3) . ':D' . ($i + 3))->getBorders()->getAllBorders()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
// $objPHPExcel->getActiveSheet()->getRowDimension($i + 3)->setRowHeight(16); //重构行高
$objPHPExcel->getActiveSheet()->getStyle('A' . ($i + 3) . ':D' . ($i + 3))->applyFromArray($styleArray);
}

// //查询出所有行数
// $all_count=0;
// foreach ($data as $key => $value) {
// if(!empty($value['title'])){
// $all_count=$all_count+count($value['title']);
// }else{
// $all_count++;
// }

//合并对应单元格并录入编号/供稿单位/数量。
$ii=3;//从第三行开始的
for ($i = 0, $len = count($data); $i < $len; $i++) {
if(count($data[$i]['title'])>0){
//合并 注意-1,因为当前单位有内容且是第一篇
$objPHPExcel->getActiveSheet()->mergeCells('A' . ($ii) . ':A' . ($ii-1+count($data[$i]['title']) ));
$objPHPExcel->getActiveSheet()->mergeCells('B' . ($ii) . ':B' . ($ii-1+count($data[$i]['title']) ));
$objPHPExcel->getActiveSheet()->mergeCells('C' . ($ii) . ':C' . ($ii-1+count($data[$i]['title']) ));

//录入记录
$objPHPExcel->getActiveSheet(0)->setCellValue('A' . ($ii), $i+1);
$objPHPExcel->getActiveSheet(0)->setCellValue('B' . ($ii), $data[$i]['gonggao']);
$objPHPExcel->getActiveSheet(0)->setCellValue('C' . ($ii), count($data[$i]['title']));

//居中
$objPHPExcel->getActiveSheet()->getStyle('A' . ($ii))->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('B' . ($ii))->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('C' . ($ii))->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);

$ii=$ii-1+count($data[$i]['title']);
$ii++;
}else{
//录入记录
$objPHPExcel->getActiveSheet(0)->setCellValue('A' . ($ii), $i+1);
$objPHPExcel->getActiveSheet(0)->setCellValue('B' . ($ii), $data[$i]['gonggao']);
$objPHPExcel->getActiveSheet(0)->setCellValue('C' . ($ii), count($data[$i]['title']));

//居中
$objPHPExcel->getActiveSheet()->getStyle('A' . ($ii))->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('B' . ($ii))->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('C' . ($ii))->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$ii++;
}
}

// Rename sheet
$objPHPExcel->getActiveSheet()->setTitle('供稿单位文章统计');

// Set active sheet index to the first sheet, so Excel opens this as the first sheet
$objPHPExcel->setActiveSheetIndex(0);

// 输出
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="' . '供稿单位' . '.xls"');
header('Cache-Control: max-age=0');

$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save('php://output');
exit;
}

‘叁’ php导出带图片的excel

比较大条的一个类库,官方最新版已经蹦到7.多M大了。找了个民间精简版1.多M的。

下面是这个PHP excel类库
的一些使用方法要点备忘。来自互联网。
官方网站:http://phpexcel.codeplex.com/
//设置PHPExcel类库的include path
set_include_path('.'. PATH_SEPARATOR .
'include path' . PATH_SEPARATOR .
get_include_path());

/**
* 如果使用 Excel5 ,输出的内容应该是GBK编码。
*/
require_once 'PHPExcel.php';

//团绝扮 uncomment
////require_once 'PHPExcel/Writer/Excel5.php'; // 用于其他低版本xls
// or
////require_once 'PHPExcel/Writer/Excel2007.php'; // 用于 excel-2007 格式

// 创建一个处理对象实例
$objExcel = new PHPExcel();

// 创建文件格式写入对象实例, uncomment
////$objWriter = new PHPExcel_Writer_Excel5($objExcel); // 用于其他版本格式
// or
////$objWriter = new PHPExcel_Writer_Excel2007($objExcel); //塌灶 用于 2007 格式
//$objWriter->setOffice2003Compatibility(true);

//*************************************
//设置文档基本属性
$objProps = $objExcel->getProperties();
$objProps->setCreator(“Zeal Li”宏码);
$objProps->setLastModifiedBy(“Zeal Li”);
$objProps->setTitle(“Office XLS Test Document”);
$objProps->setSubject(“Office XLS Test Document, Demo”);
$objProps->setDescription(“Test document, generated by PHPExcel.”);
$objProps->setKeywords(“office excel PHPExcel”);
$objProps->setCategory(“Test”);

//*************************************
//设置当前的sheet索引,用于后续的内容操作。
//一般只有在使用多个sheet的时候才需要显示调用。
//缺省情况下,PHPExcel会自动创建第一个sheet被设置SheetIndex=0
$objExcel->setActiveSheetIndex(0);

$objActSheet = $objExcel->getActiveSheet();

//设置当前活动sheet的名称
$objActSheet->setTitle(‘测试Sheet’);

//*************************************
//设置单元格内容
//
//由PHPExcel根据传入内容自动判断单元格内容类型
$objActSheet->setCellValue(‘A1′, ‘字符串内容’); // 字符串内容
$objActSheet->setCellValue(‘A2′, 26); // 数值
$objActSheet->setCellValue(‘A3′, true); // 布尔值
$objActSheet->setCellValue(‘A4′, ‘=SUM(A2:A2)’); // 公式

//显式指定内容类型
$objActSheet->setCellValueExplicit(‘A5′, ’847475847857487584′,
PHPExcel_Cell_DataType::TYPE_STRING);

//合并单元格
$objActSheet->mergeCells(‘B1:C22′);

//分离单元格
$objActSheet->unmergeCells(‘B1:C22′);

//*************************************
//设置单元格样式
//

//设置宽度
$objActSheet->getColumnDimension(‘B’)->setAutoSize(true);
$objActSheet->getColumnDimension(‘A’)->setWidth(30);

$objStyleA5 = $objActSheet->getStyle(‘A5′);

//设置单元格内容的数字格式。
//
//如果使用了 PHPExcel_Writer_Excel5 来生成内容的话,
//这里需要注意,在 PHPExcel_Style_NumberFormat 类的 const 变量定义的
//各种自定义格式化方式中,其它类型都可以正常使用,但当setFormatCode
//为 FORMAT_NUMBER 的时候,实际出来的效果被没有把格式设置为”0″。需要
//修改 PHPExcel_Writer_Excel5_Format 类源代码中的 getXf($style) 方法,
//在 if ($this->_BIFF_version == 0×0500) { (第363行附近)前面增加一
//行代码:
//if($ifmt === ’0′) $ifmt = 1;
//
//设置格式为PHPExcel_Style_NumberFormat::FORMAT_NUMBER,避免某些大数字
//被使用科学记数方式显示,配合下面的 setAutoSize 方法可以让每一行的内容
//都按原始内容全部显示出来。
$objStyleA5
->getNumberFormat()
->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_NUMBER);

//设置字体
$objFontA5 = $objStyleA5->getFont();
$objFontA5->setName(‘Courier New’);
$objFontA5->setSize(10);
$objFontA5->setBold(true);
$objFontA5->setUnderline(PHPExcel_Style_Font::UNDERLINE_SINGLE);
$objFontA5->getColor()->setARGB(‘FF999999′);

//设置对齐方式
$objAlignA5 = $objStyleA5->getAlignment();
$objAlignA5->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
$objAlignA5->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);

//设置边框
$objBorderA5 = $objStyleA5->getBorders();
$objBorderA5->getTop()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
$objBorderA5->getTop()->getColor()->setARGB(‘FFFF0000′); // color
$objBorderA5->getBottom()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
$objBorderA5->getLeft()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
$objBorderA5->getRight()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);

//设置填充颜色
$objFillA5 = $objStyleA5->getFill();
$objFillA5->setFillType(PHPExcel_Style_Fill::FILL_SOLID);
$objFillA5->getStartColor()->setARGB(‘FFEEEEEE’);

//从指定的单元格复制样式信息.
$objActSheet->plicateStyle($objStyleA5, ‘B1:C22′);

//*************************************
//添加图片
$objDrawing = new PHPExcel_Worksheet_Drawing();
$objDrawing->setName(‘ZealImg’);
$objDrawing->setDescription(‘Image inserted by Zeal’);
$objDrawing->setPath(‘./zeali.net.logo.gif’);
$objDrawing->setHeight(36);
$objDrawing->setCoordinates(‘C23′);
$objDrawing->setOffsetX(10);
$objDrawing->setRotation(15);
$objDrawing->getShadow()->setVisible(true);
$objDrawing->getShadow()->setDirection(36);
$objDrawing->setWorksheet($objActSheet);

//添加一个新的worksheet
$objExcel->createSheet();
$objExcel->getSheet(1)->setTitle(‘测试2′);

//保护单元格
$objExcel->getSheet(1)->getProtection()->setSheet(true);
$objExcel->getSheet(1)->protectCells(‘A1:C22′, ‘PHPExcel’);

//*************************************
//输出内容
//
$outputFileName = “output.xls”;
//到文件
////$objWriter->save($outputFileName);
//or
//到浏览器
////header(“Content-Type: application/force-download”);
////header(“Content-Type: application/octet-stream”);
////header(“Content-Type: application/download”);
////header(‘Content-Disposition:inline;filename=”‘.$outputFileName.’”‘);
////header(“Content-Transfer-Encoding: binary”);
////header(“Expires: Mon, 26 Jul 1997 05:00:00 GMT”);
////header(“Last-Modified: ” . gmdate(“D, d M Y H:i:s”) . ” GMT”);
////header(“Cache-Control: must-revalidate, post-check=0, pre-check=0″);
////header(“Pragma: no-cache”);
////$objWriter->save(‘php://output’);

这个php的excel类库
是目前见到功能最好的。

以上引用自:http://sjolzy.cn/PHP-generated-excel-useful-powerful-php-excel-library.html

你用这个,浏览器就会提示下载了(chrome默认是保存在 我的文档/Downloads里,不会提示下载,不知算不算?^_^)

阅读全文

与phpexcel合并单元格相关的资料

热点内容
安卓路由表怎么看 浏览:74
10个小孩分糖果python 浏览:823
安卓app小红点怎么取消 浏览:286
马哥linux面授 浏览:768
2345程序员 浏览:371
怎么开启网速显示安卓 浏览:204
索尼950app怎么样 浏览:391
计算机毕设论文源码 浏览:148
小米手机怎么下载易媒体App 浏览:191
还原系统设计可以怎样清理文件夹 浏览:670
北京时间校准服务器云服务器 浏览:844
pythonexcel数据计算 浏览:49
内医附院党建APP怎么下载 浏览:356
荣耀v20刷加密门禁卡 浏览:329
app缓冲视频怎么保存在手机 浏览:433
广度优先算法c语言 浏览:680
提高程序员竞争力 浏览:108
nfc可以开加密门卡吗 浏览:675
如何知道网页使用的服务器是什么 浏览:224
单片机接反电源会烧吗 浏览:287