当前位置:Gxlcms > PHP教程 > php导出Excel里HTML内容文件类方法

php导出Excel里HTML内容文件类方法

时间:2021-07-01 10:21:17 帮助过:13人阅读

本文主要和大家分享php导出Excel里HTML内容文件类方法,主要以代码的形式和大家分享,希望能帮助到大家。

<?php
/**
 * 导出Excel(内容为HTML)文件类
 * @author yzq
 */
class Excel_html{

    private $_common_style    = '';             //通用样式
    private $_head            = '';             //表头内容
    private $_body            = '';             //表格内容
    private $_head_bgcolor    = '#f3f3f3';      //表头默认背景颜色
    private $_body_bgcolor    = '';             //表格默认背景颜色
    private $_default_width   = 100;            //默认宽度
    Private $_default_align   = 'center';       //默认对齐方式
    private $_default_charset = 'utf-8';        //默认导出编码
    private $_tables          = [];             //一个文件里有多个table时使用
    private $_table_brs       = [];             //table间是否换行

    /**
     * 设置表头背景颜色
     */
    public function set_head_bgcolor($bgcolor = '#f3f3f3'){
        $this->_head_bgcolor = $bgcolor;
    }

    /**
     * 设置表格背景颜色
     */
    public function set_body_bgcolor($bgcolor = ''){
        $this->_body_bgcolor = $bgcolor;
    }

    /**
     * 设置
输出字符编码 */ public function set_charset($charset = 'utf-8'){ $this->_default_charset = $charset; } /** * 设置默认对齐方式 */ public function set_align($align = 'center'){ $this->_default_align = $align; } /** * 设置默认宽度 * @param int $width */ public function set_default_width($width = 100){ $this->_default_width = $width; } /** * 设置通用样式 * @param string $style */ public function set_common_style($style = ''){ $this->_common_style = $style; } /** * 添加一个table * @param int $add_br 是否添加换行 */ public function add_talbe($add_br = 0){ $this->_tables[] = array( 'head' => $this->_head, 'body' => $this->_body, ); $this->_table_brs[] = $add_br ? 1 : 0; $this->_head = ''; $this->_body = ''; } /** * 添加表头 * @param array $head_arr = array( * // array(array(字段名1, 宽度, 其他设置), 字段名2) 宽度 其他设置(如跨列,跨行等) 可选 * array( * array('序号', 100, ['colspan' => 2, 'rowspan' => 2]), * '订单号', * '同行客户' * ) * ) * */ public function add_head($head_arr = array()){ $head_html = '<tr>'; if (is_array($head_arr) && !empty($head_arr)){ foreach ($head_arr as $head){ if (!is_array($head)){ $head_html .= "<th width='" . $this->_default_width . "' bgcolor='" . $this->_head_bgcolor . "'>" . $this->get_value($head) . "</th>\n"; }else { $width = !empty($head[1]) ? $head[1] : $this->_default_width; $other = isset($head[2]) ? $head[2] : []; $head_html .= "<th width='" . $width . "' bgcolor='" . $this->_head_bgcolor . "'"; if(!empty($other) && is_array($other)){ foreach($other as $k => $v){ $head_html .= " {$k}='{$v}' "; } } $head_html .= " >" . $this->get_value($head[0]) . "</th>\n"; } } } $head_html .= "</tr>\n"; $this->_head .= $head_html; } /** * 添加表格内容 * @param array $body_arr = array( * //array(array(字段值, 对齐方式, 样式, 其他设置)) //对齐方式、样式、其他设置(如跨列,跨行等)可选 * array( * array(1, 'left', 'style="..."', ['colspan' => 2, 'rowspan' => 2]), * array('2', 'right'), * 3 * ) * ) * * @param $deal_long_num 是否处理长度较长的数字字符串 防止转换为科学计数法 * */ public function add_body($body_arr = array(), $deal_long_num = false){ $body_html = '<tr>'; if (is_array($body_arr) && !empty($body_arr)){ foreach ($body_arr as $body){ if (!is_array($body)){ $style = $deal_long_num ? 'style="mso-number-format:\'\@\';"' : ''; $body_html .= "<td bgcolor='" . $this->_body_bgcolor . "' align='" . $this->_default_align . "' {$style}>" . $this->get_value($body) . "</td>\n"; }else { $align = isset($body[1]) ? $body[1] : $this->_default_align; $style = isset($body[2]) ? $body[2] : ''; $other = isset($body[3]) ? $body[3] : []; if (!empty($style)){ $style = $deal_long_num ? (rtrim($style, ';"') . ";mso-number-format:'\@';" . '"') : $style; }else{ $style = $deal_long_num ? 'style="mso-number-format:\'\@\';"' : ''; } $body_html .= "<td bgcolor='" . $this->_body_bgcolor . "' align='" . $align ."' " . $style . ""; if(!empty($other) && is_array($other)){ foreach($other as $k => $v){ $body_html .= " {$k}='{$v}' "; } } $body_html .= ">" . $this->get_value($body[0]) . "</td>\n"; } } } $body_html .= "</tr>\n"; $this->_body .= $body_html; } /** * 下载excel文件 */ public function downLoad($filename = ''){ $this->add_talbe(); $chare_set = $this->_default_charset; $down_content = '<meta http-equiv="Content-Type" content="text/html; charset=' . $chare_set . '" />' . "\n"; $down_content .= $this->_common_style; foreach ($this->_tables as $t_key => $table){ if (empty($table['head']) && empty($table['body'])){ continue; } $down_content .= '<table border="1">' . "\n"; $down_content .= $table['head'] . "\n"; $down_content .= $table['body'] . "\n"; $down_content .= '</table>'; if ($this->_table_brs[$t_key]){ $down_content .= "<br/>"; } $down_content .= "\n"; } if(!$filename) { $filename = date('YmdHis',time()).'.xls'; } $ci = &get_instance(); $ci->load->helper('download'); force_download($filename, $down_content); } private function get_value($value){ if (strtolower($this->_default_charset) != 'utf-8'){ return iconv('utf-8', $this->_default_charset, $value); }else{ return $value; } } }

使用举例:

$excel = new Excel_html();
	$head = [
	    ['序号', 50], ['姓名', 100], ['移动电话', 120], ['部门', 120]
	];
$excel->add_head($head);
$rs = array(
    array(
        'realname' => 'a',
        'mobile' => '12345678901',
        'department_name' => '测试',
    ),
    array(
        'realname' => 'b',
        'mobile' => '12345678912',
        'department_name' => '技术',
    ),
);
foreach($rs as $i => $item){
	$excel->add_body([
		$i + 1,
		$item['realname'],
		$item['mobile'],
		$item['department_name'],
	]);
}
$excel->downLoad();
exit();

相关推荐:

PHP导出EXCEL快速开发指南

php使用原生的方法导出excel实例分享

php导入及导出excel文件

以上就是php导出Excel里HTML内容文件类方法的详细内容,更多请关注Gxl网其它相关文章!

人气教程排行