成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

PHP導(dǎo)出報(bào)表(案例)

jifei / 2400人閱讀

摘要:效果需求為了實(shí)現(xiàn)報(bào)表效果,自己杜撰的需求。主要是思路,思路通了實(shí)現(xiàn)其他效果也。統(tǒng)計(jì)每個(gè)人在一年中每一天遲到早退的情況。首先將報(bào)表樣式用實(shí)現(xiàn),然后利用函數(shù)生成下載。

效果

需求

為了實(shí)現(xiàn)報(bào)表效果,自己杜撰的需求。

主要是思路,思路通了實(shí)現(xiàn)其他效果也OK。

統(tǒng)計(jì)每個(gè)人在一年中每一天遲到早退的情況。

思路

PHP 語言進(jìn)行實(shí)現(xiàn)。

首先將報(bào)表樣式用 HTML 實(shí)現(xiàn),

然后利用PHP header 函數(shù)生成 xls 下載。

知識點(diǎn)

表格中的列合并與行合并

PHP 獲取一年中的每一天進(jìn)行展示

PHP header 函數(shù)

Smarty 模板函數(shù)

Smarty 自定義函數(shù)

...

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); //獲取天數(shù)

    while (($time_start = strtotime("+1 month", $time_start)) <= $time_end) {
        $month_arr["month"][]   = date("Y-m",$time_start); //取得遞增月
        $month_arr["numbers"][] = date(t,$time_start);     //獲取天數(shù)
    }

    function check_week($time = [])
    {
        if (empty($time["day"])) {
            return "";
        }
        $w = intval(date("w" , strtotime($time["day"])));
        if( $w === 0 || $w === 6){
            return "".date("d", strtotime($time["day"]))."";
        }
        return "".date("d", strtotime($time["day"]))."";
    }

    //向模板中注冊一個(gè)函數(shù)
    $this->smarty->registerPlugin("function","check_week","check_week");

    //模擬數(shù)據(jù)如下:
    $list[0]["name"] = "Tom";
    $list[1]["name"] = "Joan";

    $list[0]["sex"] = "男";
    $list[1]["sex"] = "女";

    $list[0]["age"] = "30";
    $list[1]["age"] = "31";

    //設(shè)置遲到
    $list[0]["late"] = [
        "2016-01-08",
        "2016-01-09",
        "2016-02-09",
        "2016-03-09",
        "2016-04-09",
        "2016-05-09"
    ];

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

    //設(shè)置早退
    $list[0]["leave"] = [
        "2016-03-09",
        "2016-04-11",
        "2016-05-15",
        "2016-06-18",
        "2016-07-21",
        "2016-08-23",
        "2016-09-22",
        "2016-10-20",
        "2016-11-17",
        "2016-12-14",
    ];
    $list[1]["leave"] = [
        "2016-05-09",
        "2016-06-11",
        "2016-07-13",
        "2016-08-15",
        "2016-09-17",
        "2016-10-19",
        "2016-11-20",
        "2016-12-23",
        "2016-03-18",
        "2016-02-19",
        "2016-01-23",
    ];

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

HTML 代碼




    
    
    




        {if $month}
            {foreach $month.month as $k=>$m}
                
            {/foreach}
        {/if}
    
        {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}
    

    {if $list}
    {foreach $list as $s}
    
        {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}
                

            {/section}
        {/foreach}
        {/if}
    
    {/foreach}
    
    {/if}
姓名 性別 年齡{$m}
{$s.name|default:"--"} {$s.sex|default:"--"} {$s.age|default:"--"} {if $s["late"]} {if ($m|cat:"-"|cat:$smarty.section.count.index)|in_array:$s["late"]} 1 {/if} {/if} {if $s["leave"]} {if ($m|cat:"-"|cat:$smarty.section.count.index)|in_array:$s["leave"]} 1 {/if} {/if}
*周末
*正常
*遲到
*早退

拓展閱讀

PHP導(dǎo)出帶樣式的Excel

PHP header 的幾種用法

Smarty 模板函數(shù)


Thanks ~

歡迎關(guān)注公眾號,一起學(xué)習(xí)討論。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/22284.html

相關(guān)文章

  • 前端小案例

    摘要:謹(jǐn)以此文我在北京一家公司打工兩個(gè)月,昨夜露宿街頭我是一名程序員,在北京打工兩個(gè)月,如今身上只剩吃碗面條的錢。昨夜在北京寒冷的公園和同事與流浪漢一起露宿一夜,因?yàn)槲覀儽焕习逋锨妨斯べY。我在兩個(gè)多月前,前往北京。 你可能不知道的 14 個(gè) JavaScript 調(diào)試技巧 了解你的工具可以在完成任務(wù)的過程中發(fā)揮重大作用。盡管傳言 JavaScript 難以調(diào)試,但是如果你掌握了一些調(diào)試技巧,...

    codeGoogle 評論0 收藏0
  • 純前端開發(fā)案例:用 SpreadJS 搭建信息系統(tǒng)軟件開發(fā)平臺

    摘要:葡萄城的是一個(gè)基于技術(shù)的純控件,控件性能流暢,有類似的在線表格編輯器,適合非專業(yè)程序員設(shè)計(jì)報(bào)表模板,很符合平臺部分無編碼開發(fā)的理念。葡萄城控件產(chǎn)品對于項(xiàng)目的價(jià)值控件主要用于本項(xiàng)目中的報(bào)表設(shè)計(jì),展示,打印等功能。 showImg(https://segmentfault.com/img/bVbalYk?w=1000&h=400); 華閩通達(dá) - R 平臺應(yīng)用所使用產(chǎn)品:SpreadJS ...

    Heier 評論0 收藏0
  • 基于haddop的HDFS和Excel開源庫POI導(dǎo)出大數(shù)據(jù)報(bào)表(一)

    摘要:說明這里用到的項(xiàng)目都是基于的項(xiàng)目。但同時(shí),它和其他的分布式文件系統(tǒng)的區(qū)別也是很明顯的。能提供高吞吐量的數(shù)據(jù)訪問,非常適合大規(guī)模數(shù)據(jù)集上的應(yīng)用。放寬了一部分約束,來實(shí)現(xiàn)流式讀取文件系統(tǒng)數(shù)據(jù)的目的。是項(xiàng)目的一部分。 關(guān)鍵詞 Java、PHP、hdfs、mqrocket、excel、poi、報(bào)表 需求背景 在業(yè)務(wù)需求方面,每個(gè)企業(yè)或多或少都會有報(bào)表導(dǎo)出的作業(yè),量少則可是使用輸出流或者字符串的...

    Nekron 評論0 收藏0
  • 基于haddop的HDFS和Excel開源庫POI導(dǎo)出大數(shù)據(jù)報(bào)表(一)

    摘要:說明這里用到的項(xiàng)目都是基于的項(xiàng)目。但同時(shí),它和其他的分布式文件系統(tǒng)的區(qū)別也是很明顯的。能提供高吞吐量的數(shù)據(jù)訪問,非常適合大規(guī)模數(shù)據(jù)集上的應(yīng)用。放寬了一部分約束,來實(shí)現(xiàn)流式讀取文件系統(tǒng)數(shù)據(jù)的目的。是項(xiàng)目的一部分。 關(guān)鍵詞 Java、PHP、hdfs、mqrocket、excel、poi、報(bào)表 需求背景 在業(yè)務(wù)需求方面,每個(gè)企業(yè)或多或少都會有報(bào)表導(dǎo)出的作業(yè),量少則可是使用輸出流或者字符串的...

    luffyZh 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<