phpexcel导出中文需显式设置simsun等中文字体:全局用getdefaultstyle()->getfont()->setname('simsun'),区域或单元格用getstyle()单独设置;必须在getactivesheet()前完成,默认字体仅对未单独设样式的单元格生效。

PHPExcel 导出文件默认使用 Calibri 字体(Excel 2007+),中文环境下常显示为方块或乱码,需显式设置中文字体(如 SimSun 宋体)才能正常显示中文。
全局默认字体设置
在创建 PHPExcel 实例后、写入数据前,调用 getDefaultStyle() 设置整表默认字体:
$objPHPExcel->getDefaultStyle()->getFont()->setName('SimSun');$objPHPExcel->getDefaultStyle()->getFont()->setSize(10);
该设置会作用于所有未单独指定样式的单元格,包括标题和数据行。
单个工作表或单元格字体覆盖
若只需调整某列、某区域字体,可用 getStyle() 精确控制:
- 整列设置(如 A 列):
$objPHPExcel->getActiveSheet()->getStyle('A')->getFont()->setName('Microsoft YaHei'); - 指定单元格(如 A1):
$objPHPExcel->getActiveSheet()->getStyle('A1')->getFont()->setName('KaiTi')->setBold(true)->setSize(12); - 合并区域(如 A1:C1):
$objPHPExcel->getActiveSheet()->getStyle('A1:C1')->getFont()->setName('SimSun')->setSize(14);
导出时确保字体生效的关键点
以下操作缺一不可,否则字体设置可能被忽略:
- 必须在
getActiveSheet()调用前完成默认样式设置; - 避免在
setActiveSheetIndex(0)之后再改getDefaultStyle(); - 若使用
moonlandsoft/yii2-phpexcel扩展,需修改其Excel.php中实例化后的样式段,插入上述两行; - 导出为
Excel2007(.xlsx)格式时,SimSun、Microsoft YaHei 等常见中文字体均被支持;Excel5(.xls)对中文字体兼容性较弱,建议优先用 xlsx。
字体名称须与系统已安装字体完全一致,Windows 下推荐用 SimSun 或 Microsoft YaHei,Linux 服务器需确认已部署对应字体文件,否则会回退为无衬线默认字体。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











