首页 后端开发 php教程 php导出Excel里HTML内容文件类方法

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

Mar 15, 2018 pm 02:29 PM
excel html php

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

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

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

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

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

    /**
     * 设置输出字符编码
     */
    public function set_charset($charset = &#39;utf-8&#39;){
        $this->_default_charset = $charset;
    }

    /**
     * 设置默认对齐方式
     */
    public function set_align($align = &#39;center&#39;){
        $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 = &#39;&#39;){
        $this->_common_style = $style;
    }

    /**
     * 添加一个table
     * @param int $add_br  是否添加换行
     */
    public function add_talbe($add_br = 0){
        $this->_tables[] = array(
            &#39;head&#39; => $this->_head,
            &#39;body&#39; => $this->_body,
        );

        $this->_table_brs[] = $add_br ? 1 : 0;
        $this->_head = &#39;&#39;;
        $this->_body = &#39;&#39;;
    }


    /**
     * 添加表头
     * @param array $head_arr = array(
     *     // array(array(字段名1, 宽度, 其他设置), 字段名2)  宽度 其他设置(如跨列,跨行等) 可选
     *     array(
     *         array(&#39;序号&#39;, 100, [&#39;colspan&#39; => 2, &#39;rowspan&#39; => 2]),
     *         &#39;订单号&#39;,
     *         &#39;同行客户&#39;
     *     )
     * )
     *
     */
    public function add_head($head_arr = array()){
        $head_html = &#39;<tr>&#39;;
        if (is_array($head_arr) && !empty($head_arr)){
            foreach ($head_arr as $head){
                if (!is_array($head)){
                    $head_html .= "<th width=&#39;" . $this->_default_width . "&#39; bgcolor=&#39;" . $this->_head_bgcolor . "&#39;>" . $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=&#39;" . $width . "&#39; bgcolor=&#39;" . $this->_head_bgcolor . "&#39;";
                    if(!empty($other) && is_array($other)){
                        foreach($other as $k => $v){
                            $head_html .= " {$k}=&#39;{$v}&#39; ";
                        }
                    }
                    $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, &#39;left&#39;, &#39;style="..."&#39;, [&#39;colspan&#39; => 2, &#39;rowspan&#39; => 2]),
     *         array(&#39;2&#39;, &#39;right&#39;),
     *         3
     *     )
     * )
     *
     * @param $deal_long_num  是否处理长度较长的数字字符串   防止转换为科学计数法
     *
     */
    public function add_body($body_arr = array(), $deal_long_num = false){
        $body_html = &#39;<tr>&#39;;
        if (is_array($body_arr) && !empty($body_arr)){
            foreach ($body_arr as $body){
                if (!is_array($body)){
                    $style = $deal_long_num ? &#39;style="mso-number-format:\&#39;\@\&#39;;"&#39; : &#39;&#39;;
                    $body_html .= "<td bgcolor=&#39;" . $this->_body_bgcolor . "&#39; align=&#39;" . $this->_default_align . "&#39; {$style}>" . $this->get_value($body) . "</td>\n";
                }else {
                    $align = isset($body[1]) ? $body[1] : $this->_default_align;
                    $style = isset($body[2]) ? $body[2] : &#39;&#39;;
                    $other = isset($body[3]) ? $body[3] : [];

                    if (!empty($style)){
                        $style = $deal_long_num ? (rtrim($style, &#39;;"&#39;) . ";mso-number-format:&#39;\@&#39;;" . &#39;"&#39;) : $style;
                    }else{
                        $style = $deal_long_num ? &#39;style="mso-number-format:\&#39;\@\&#39;;"&#39; : &#39;&#39;;
                    }

                    $body_html .= "<td bgcolor=&#39;" . $this->_body_bgcolor . "&#39; align=&#39;" . $align ."&#39; " . $style . "";
                    if(!empty($other) && is_array($other)){
                        foreach($other as $k => $v){
                            $body_html .= " {$k}=&#39;{$v}&#39; ";
                        }
                    }
                    $body_html .= ">" . $this->get_value($body[0])  . "</td>\n";
                }
            }
        }

        $body_html   .= "</tr>\n";
        $this->_body .= $body_html;
    }

    /**
     * 下载excel文件
     */
    public function downLoad($filename = &#39;&#39;){
        $this->add_talbe();
        $chare_set     = $this->_default_charset;
        $down_content  = &#39;<meta http-equiv="Content-Type" content="text/html; charset=&#39; . $chare_set . &#39;" />&#39; . "\n";
        $down_content .= $this->_common_style;

        foreach ($this->_tables as $t_key => $table){
            if (empty($table[&#39;head&#39;]) && empty($table[&#39;body&#39;])){
                continue;
            }

            $down_content .= &#39;<table border="1">&#39; . "\n";
            $down_content .= $table[&#39;head&#39;] . "\n";
            $down_content .= $table[&#39;body&#39;] . "\n";
            $down_content .= &#39;</table>&#39;;

            if ($this->_table_brs[$t_key]){
                $down_content .= "<br/>";
            }

            $down_content .= "\n";
        }

        if(!$filename) {
            $filename = date(&#39;YmdHis&#39;,time()).&#39;.xls&#39;;
        }
        $ci = &get_instance();
        $ci->load->helper(&#39;download&#39;);

        force_download($filename, $down_content);
    }

    private function get_value($value){
        if (strtolower($this->_default_charset) != &#39;utf-8&#39;){
            return iconv(&#39;utf-8&#39;, $this->_default_charset, $value);
        }else{
            return $value;
        }
    }
}
登录后复制

使用举例:

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

相关推荐:

PHP导出EXCEL快速开发指南

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

php导入及导出excel文件

以上是php导出Excel里HTML内容文件类方法的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

<🎜>:泡泡胶模拟器无穷大 - 如何获取和使用皇家钥匙
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系统,解释
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆树的耳语 - 如何解锁抓钩
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
<🎜>掩盖:探险33-如何获得完美的色度催化剂
2 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1677
14
CakePHP 教程
1430
52
Laravel 教程
1333
25
PHP教程
1278
29
C# 教程
1257
24
继续使用PHP:耐力的原因 继续使用PHP:耐力的原因 Apr 19, 2025 am 12:23 AM

PHP仍然流行的原因是其易用性、灵活性和强大的生态系统。1)易用性和简单语法使其成为初学者的首选。2)与web开发紧密结合,处理HTTP请求和数据库交互出色。3)庞大的生态系统提供了丰富的工具和库。4)活跃的社区和开源性质使其适应新需求和技术趋势。

HTML与CSS和JavaScript:比较Web技术 HTML与CSS和JavaScript:比较Web技术 Apr 23, 2025 am 12:05 AM

HTML、CSS和JavaScript是构建现代网页的核心技术:1.HTML定义网页结构,2.CSS负责网页外观,3.JavaScript提供网页动态和交互性,它们共同作用,打造出用户体验良好的网站。

使用与HTML的React:渲染组件和数据 使用与HTML的React:渲染组件和数据 Apr 19, 2025 am 12:19 AM

在React中使用HTML渲染组件和数据可以通过以下步骤实现:使用JSX语法:React使用JSX语法将HTML结构嵌入JavaScript代码中,编译后操作DOM。组件与HTML结合:React组件通过props传递数据,动态生成HTML内容,如。数据流管理:React的数据流是单向的,从父组件传递到子组件,确保数据流动可控,如App组件传递name到Greeting。基本用法示例:使用map函数渲染列表,需添加key属性,如渲染水果列表。高级用法示例:使用useState钩子管理状态,实现动

如果session_start()被多次调用会发生什么? 如果session_start()被多次调用会发生什么? Apr 25, 2025 am 12:06 AM

多次调用session_start()会导致警告信息和可能的数据覆盖。1)PHP会发出警告,提示session已启动。2)可能导致session数据意外覆盖。3)使用session_status()检查session状态,避免重复调用。

IIS和PHP的兼容性:深度潜水 IIS和PHP的兼容性:深度潜水 Apr 22, 2025 am 12:01 AM

IIS和PHP可以兼容,通过FastCGI实现。1.IIS通过配置文件将.php文件请求转发给FastCGI模块。2.FastCGI模块启动PHP进程处理请求,提高性能和稳定性。3.实际应用中需注意配置细节、错误调试和性能优化。

session_start()函数的意义是什么? session_start()函数的意义是什么? May 03, 2025 am 12:18 AM

session_start()iscucialinphpformanagingusersessions.1)ItInitiateSanewsessionifnoneexists,2)resumesanexistingsessions,and3)setsasesessionCookieforContinuityActinuityAccontinuityAcconActInityAcconActInityAcconAccRequests,EnablingApplicationsApplicationsLikeUseAppericationLikeUseAthenticationalticationaltication and PersersonalizedContentent。

作曲家:通过AI的帮助开发PHP 作曲家:通过AI的帮助开发PHP Apr 29, 2025 am 12:27 AM

AI可以帮助优化Composer的使用,具体方法包括:1.依赖管理优化:AI分析依赖关系,建议最佳版本组合,减少冲突。2.自动化代码生成:AI生成符合最佳实践的composer.json文件。3.代码质量提升:AI检测潜在问题,提供优化建议,提高代码质量。这些方法通过机器学习和自然语言处理技术实现,帮助开发者提高效率和代码质量。

使用Laravel:使用PHP简化Web开发 使用Laravel:使用PHP简化Web开发 Apr 19, 2025 am 12:18 AM

Laravel优化Web开发流程的方法包括:1.使用路由系统管理URL结构;2.利用Blade模板引擎简化视图开发;3.通过队列处理耗时任务;4.使用EloquentORM简化数据库操作;5.遵循最佳实践提高代码质量和可维护性。

See all articles