>  기사  >  백엔드 개발  >  PHP 수출신고(사례)

PHP 수출신고(사례)

黄舟
黄舟원래의
2017-02-06 09:59:091362검색

효과

PHP 수출신고(사례)

PHP 수출신고(사례)

요구사항

신고효과를 얻기 위해 저만의 요구사항을 만들었습니다.

주로 아이디어가 중요합니다. 아이디어가 명확해지면 다른 효과도 얻을 수 있습니다.

연중 매일 얼마나 많은 사람들이 늦게 도착하고 일찍 떠나는지 세어보세요.

아이디어

PHP 언어를 사용하여 구현합니다.

먼저 HTML을 사용하여 보고서 스타일을 구현하고,

그런 다음 PHP 헤더 기능을 사용하여 xls 다운로드를 생성합니다.

지식

  • 테이블의 열 병합 및 행 병합

  • PHP는 연중 매일 표시됩니다

  • PHP 헤더 기능

  • 스마트한 템플릿 기능

  • 스마트한 커스텀 기능

  • ...

PHP 코드

public function export()
{

    //获取2016年日期
    $time_start = strtotime('2016-01-01');
    $time_end   = strtotime('2016-12-31');

    $month_arr = [];
    $month_arr['month'][]   = '2016-01';
    $month_arr['numbers'][] = date('t',$time_start); //获取天数

    while (($time_start = strtotime(&#39;+1 month&#39;, $time_start)) <= $time_end) {
        $month_arr[&#39;month&#39;][]   = date(&#39;Y-m&#39;,$time_start); //取得递增月
        $month_arr[&#39;numbers&#39;][] = date(&#39;t&#39;,$time_start);     //获取天数
    }

    function check_week($time = [])
    {
        if (empty($time[&#39;day&#39;])) {
            return &#39;&#39;;
        }
        $w = intval(date(&#39;w&#39; , strtotime($time[&#39;day&#39;])));
        if( $w === 0 || $w === 6){
            return &#39;<td style="background-color: red;">&#39;
                   .date(&#39;d&#39;, strtotime($time[&#39;day&#39;]))
                   .&#39;</td>&#39;;
        }
        return &#39;<td>&#39;.date(&#39;d&#39;, strtotime($time[&#39;day&#39;])).&#39;</td>&#39;;
    }

    //向模板中注册一个函数
    $this->smarty->registerPlugin(&#39;function&#39;,&#39;check_week&#39;,&#39;check_week&#39;);

    //模拟数据如下:
    $list[0][&#39;name&#39;] = &#39;Tom&#39;;
    $list[1][&#39;name&#39;] = &#39;Joan&#39;;

    $list[0][&#39;sex&#39;] = &#39;男&#39;;
    $list[1][&#39;sex&#39;] = &#39;女&#39;;

    $list[0][&#39;age&#39;] = &#39;30&#39;;
    $list[1][&#39;age&#39;] = &#39;31&#39;;

    //设置迟到
    $list[0][&#39;late&#39;] = [
        &#39;2016-01-08&#39;,
        &#39;2016-01-09&#39;,
        &#39;2016-02-09&#39;,
        &#39;2016-03-09&#39;,
        &#39;2016-04-09&#39;,
        &#39;2016-05-09&#39;
    ];

    $list[1][&#39;late&#39;] = [
        &#39;2016-02-12&#39;,
        &#39;2016-03-15&#39;,
        &#39;2016-04-13&#39;,
        &#39;2016-05-19&#39;,
        &#39;2016-05-19&#39;
    ];

    //设置早退
    $list[0][&#39;leave&#39;] = [
        &#39;2016-03-09&#39;,
        &#39;2016-04-11&#39;,
        &#39;2016-05-15&#39;,
        &#39;2016-06-18&#39;,
        &#39;2016-07-21&#39;,
        &#39;2016-08-23&#39;,
        &#39;2016-09-22&#39;,
        &#39;2016-10-20&#39;,
        &#39;2016-11-17&#39;,
        &#39;2016-12-14&#39;,
    ];
    $list[1][&#39;leave&#39;] = [
        &#39;2016-05-09&#39;,
        &#39;2016-06-11&#39;,
        &#39;2016-07-13&#39;,
        &#39;2016-08-15&#39;,
        &#39;2016-09-17&#39;,
        &#39;2016-10-19&#39;,
        &#39;2016-11-20&#39;,
        &#39;2016-12-23&#39;,
        &#39;2016-03-18&#39;,
        &#39;2016-02-19&#39;,
        &#39;2016-01-23&#39;,
    ];

    $file_name   = "报表-".date("YmdHis",time());
    $file_suffix = "xls";
    header("Content-Type: application/vnd.ms-excel");
    header("Content-Disposition: attachment; filename=$file_name.$file_suffix");
    $this->_assign(&#39;list&#39;, $list);
    $this->_assign(&#39;month&#39;, $month_arr);
    $this->_display();
}

HTML 코드

<html xmlns:o="urn:schemas-microsoft-com:office:office"
      xmlns:x="urn:schemas-microsoft-com:office:excel"
      xmlns="http://www.w3.org/TR/REC-html40">

<head>
    <meta http-equiv=Content-Type content="text/html; charset=utf-8">
    <meta name=ProgId content=Excel.Sheet>
    <meta name=Generator content="Microsoft Excel 11">
</head>

<body>
<table border=1 cellpadding=0 cellspacing=0 width="100%">
    <tr>
        <td style="vertical-align:middle;" align="center" rowspan="2">
            <b>姓名</b>
        </td>
        <td style="vertical-align:middle;" align="center" rowspan="2">
            <b>性别</b>
        </td>
        <td style="vertical-align:middle;" align="center" rowspan="2">
            <b>年龄</b>
        </td>
        {if $month}
            {foreach $month.month as $k=>$m}
                <td style="text-align: center;" colspan="{$month.numbers.$k}">
                    <b>{$m}</b>
                </td>
            {/foreach}
        {/if}
    </tr>
    <tr>
        {if $month}
        {foreach $month.month as $k=>$m}
            {section name=count loop=$month.numbers.$k+1 start=1}
                {check_week day=$m|cat:"-"|cat:$smarty.section.count.index}
            {/section}
        {/foreach}
        {/if}
    </tr>

    {if $list}
    {foreach $list as $s}
    <tr>
        <td>{$s.name|default:&#39;--&#39;}</td>
        <td>{$s.sex|default:&#39;--&#39;}</td>
        <td>{$s.age|default:&#39;--&#39;}</td>
        {if $month}
        {foreach $month.month as $k=>$m}
            {section name=count loop=$month.numbers.$k+1 start=1}
                {if $smarty.section.count.index <10 }
                     {$str = ""}
                     {$smarty.section.count.index = $str|cat:"0"|cat:$smarty.section.count.index}
                {/if}
                <td style="
                    {if $s[&#39;late&#39;]}
                        {if ($m|cat:"-"|cat:$smarty.section.count.index)|in_array:$s[&#39;late&#39;]}
                            background-color: #5a0099;
                        {/if}
                    {/if}

                    {if $s[&#39;leave&#39;]}
                        {if ($m|cat:"-"|cat:$smarty.section.count.index)|in_array:$s[&#39;leave&#39;]}
                            background-color: yellow;
                        {/if}
                    {/if}
                ">

                {if $s[&#39;late&#39;]}
                    {if ($m|cat:"-"|cat:$smarty.section.count.index)|in_array:$s[&#39;late&#39;]}
                        1
                    {/if}
                {/if}

                {if $s[&#39;leave&#39;]}
                    {if ($m|cat:"-"|cat:$smarty.section.count.index)|in_array:$s[&#39;leave&#39;]}
                        1
                    {/if}
                {/if}

                </td>

            {/section}
        {/foreach}
        {/if}
    </tr>
    {/foreach}
    <tr>
        <td style="background-color: red"></td>
        <td>*周末</td>
    </tr>
    <tr>
        <td style="background-color: white"></td>
        <td>*正常</td>
    </tr>
    <tr>
        <td style="background-color: #5a0099"></td>
        <td>*迟到</td>
    </tr>
    <tr>
        <td style="background-color: yellow"></td>
        <td>*早退</td>
    </tr>
    {/if}
</table>
</body>
</html>

위는 PHP 수출 보고서(사례) 내용, 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.