PHPExcel导出Excel基本操作,实现设置字体、合并单元格、加粗等功能

原创
所属分类: 后端开发 2020-04-23 670
来源:baidu.com

PHPExcel一些相关操作,只罗列了部分功能,后续有新增再补充。代码可直接复制使用,需要注意是引入PHPExcel类库时因为是thinkphp框架,所以使用了import导入,如果其他框架,需要做部分调整。


1.引用PHPExcel类库,支持xls、xlsx格式导入

// 注意:以下是使用thinkphp框架引入的PHPExcel

// 导入PHPExcel类库,因为PHPExcel没有用命名空间,只能import导入
import("Org.Util.PHPExcel");

// 上传的Excel文件
// 要导入的xls文件,位于根目录下的Public文件夹
$filename=$_FILES["excel"]["tmp_name"];

// 创建PHPExcel对象,注意,不能少了\
$PHPExcel = new \PHPExcel();
$extension = strtolower(pathinfo($_FILES["excel"]['name'], PATHINFO_EXTENSION));
if ($extension =='xlsx') {    
    //如果excel文件后缀名为.xlsx,导入这下类
    import("Org.Util.PHPExcel.Reader.Excel2007");    
    $PHPReader = new \PHPExcel_Reader_Excel2007();    
    $PHPExcel=$PHPReader->load($filename);
} else if ($extension =='xls') {    
    //如果excel文件后缀名为.xls,导入这个类
    import("Org.Util.PHPExcel.Reader.Excel5");    
    $PHPReader=new \PHPExcel_Reader_Excel5();    //载入文件
    $PHPExcel=$PHPReader->load($filename);
}


2.单元格内换行

// 设置D3单元格内容,添加\n标识换行,如果要换行需要使用双引号,否则\n无效
$PHPExcel->getActiveSheet()->setCellValue('D3', "必填\nyyyymmdd");

// 设置单元格D3 换行
$PHPExcel->getActiveSheet()->getStyle('D3')->getAlignment()->setWrapText(True);


3.设置单元格值(避免显示科学计数法)

$PHPExcel->getActiveSheet()->setCellValue('A1', '必填');

// 设置单元格类型为文本类型,避免数值太大显示科学计数法
$PHPExcel->getActiveSheet()->setCellValueExplicit('B1',  '123123123123', \PHPExcel_Cell_DataType::TYPE_STRING);


4.设置单元格字体样式(加粗、字号、字体、颜色)

// 设置字体为Arial
$PHPExcel->getActiveSheet()->getStyle('A1')->getFont()->setName('Arial');

// 设置A1到D1单元格,加粗
$PHPExcel->getActiveSheet()->getStyle('A1:D1')->getFont()->setBold(true);

// 设置字号
$PHPExcel->getActiveSheet()->getStyle('A1')->getFont()->setSize(16);

// 设置字体为红色
$phpColor = new PHPExcel_Style_Color();
$phpColor->setRGB('FF0000');
$PHPExcel->getActiveSheet()->getStyle('A1')->getFont()->setColor($phpColor);


5.设置对齐方式

// 水平居中
$PHPExcel->getDefaultStyle()->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);

// 垂直居中
$PHPExcel->getDefaultStyle()->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);

// 左对齐:PHPExcel_Style_Alignment::HORIZONTAL_LEFT
// 右对齐:PHPExcel_Style_Alignment::HORIZONTAL_RIGHT


6.合并单元格

// 合并A1到D1单元格
$PHPExcel->getActiveSheet()->mergeCells('A1:D1');


7.设置文档信息

$PHPExcel->getProperties()->setCreator('test')->setLastModifiedBy('test')->setTitle('test Title')->setSubject('TEST')->setDescription('')->setKeywords('keyword')->setCategory('');


8.设置某列宽度

// 设置A列
$PHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(10);


9.设置某行高度

// 设置第一行
$PHPExcel->getActiveSheet()->getRowDimension('1')->setRowHeight(20);


10.excel输出

$objWriter = new \PHPExcel_Writer_Excel5($PHPExcel);
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');
$fileName='test.xls';
$encoded_filename = urlencode($fileName);
$ua = $_SERVER['HTTP_USER_AGENT'];

if (preg_match('/MSIE/', $ua)) {
	header('Content-Disposition: attachment; filename="' . $encoded_filename . '.xls"');
}
else if (preg_match('/Firefox/', $ua)) {
	header('Content-Disposition: attachment; filename*="utf8\'\'' . $fileName . '.xls"');
}
else {
	header('Content-Disposition: attachment; filename="' . $fileName . '.xls"');
}

header('Content-Transfer-Encoding:binary');
$objWriter->save('php://output');


因为项目开发过程中整理,以上代码如有问题欢迎大家指出,我再进行修改~~


原创声明:本文为博主原创文章,转载请附上原文出处链接和声明。

相关推荐

更多内容>

PHP7+微信公众号主动通知事件mcrypt_module_open函数无法使用

后端开发

PHP 数字转大写(中文)格式,规则可以自行调整

后端开发

php使用header方法下载文件

后端开发

Notice: A session had already been started - ignoring session_start()网站出现这个错误

后端开发
点这里分享到
朋友圈