国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

PHP導出報表(案例)

jifei / 2393人閱讀

摘要:效果需求為了實現報表效果,自己杜撰的需求。主要是思路,思路通了實現其他效果也。統計每個人在一年中每一天遲到早退的情況。首先將報表樣式用實現,然后利用函數生成下載。

效果

需求

為了實現報表效果,自己杜撰的需求。

主要是思路,思路通了實現其他效果也OK。

統計每個人在一年中每一天遲到早退的情況。

思路

PHP 語言進行實現。

首先將報表樣式用 HTML 實現,

然后利用PHP header 函數生成 xls 下載。

知識點

表格中的列合并與行合并

PHP 獲取一年中的每一天進行展示

PHP header 函數

Smarty 模板函數

Smarty 自定義函數

...

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("+1 month", $time_start)) <= $time_end) {
        $month_arr["month"][]   = date("Y-m",$time_start); //取得遞增月
        $month_arr["numbers"][] = date(t,$time_start);     //獲取天數
    }

    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"]))."";
    }

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

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

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

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

    //設置遲到
    $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"
    ];

    //設置早退
    $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   = "報表-".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導出帶樣式的Excel

PHP header 的幾種用法

Smarty 模板函數


Thanks ~

歡迎關注公眾號,一起學習討論。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/22284.html

相關文章

  • 前端小案例

    摘要:謹以此文我在北京一家公司打工兩個月,昨夜露宿街頭我是一名程序員,在北京打工兩個月,如今身上只剩吃碗面條的錢。昨夜在北京寒冷的公園和同事與流浪漢一起露宿一夜,因為我們被老板拖欠了工資。我在兩個多月前,前往北京。 你可能不知道的 14 個 JavaScript 調試技巧 了解你的工具可以在完成任務的過程中發揮重大作用。盡管傳言 JavaScript 難以調試,但是如果你掌握了一些調試技巧,...

    codeGoogle 評論0 收藏0
  • 純前端開發案例:用 SpreadJS 搭建信息系統軟件開發平臺

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

    Heier 評論0 收藏0
  • 基于haddop的HDFS和Excel開源庫POI導出大數據報表(一)

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

    Nekron 評論0 收藏0
  • 基于haddop的HDFS和Excel開源庫POI導出大數據報表(一)

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

    luffyZh 評論0 收藏0

發表評論

0條評論

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