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_Style_Alignment::HORIZONTAL_LEFT // 右对齐:PHPExcel_Style_Alignment::HORIZONTAL_RIGHT // 两端对齐:PHPExcel_Style_Alignment::HORIZONTAL_JUSTIFY // 垂直居中 $PHPExcel->getDefaultStyle()->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER); // 顶端对齐:PHPExcel_Style_Alignment::VERTICAL_TOP // 底端对齐:PHPExcel_Style_Alignment::VERTICAL_BOTTOM
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');
因为项目开发过程中整理,以上代码如有问题欢迎大家指出,我再进行修改~~