PHPExcel 的活頁簿標題 ( SheetTitle ) 處理

之前曾經使用 PHPExcel 踩到地雷,處理完之後一直忘記載這邊留個紀錄(拖稿?)。

Excel 的活頁簿標題有字元 & 長度限制,但 library ( PHPExcel ) 沒有特別判斷 & 處理,所以…

    // Excel 的活頁簿 title 不允許 * : / \ ? [ ]
    $currTitle = str_replace(
        array('*', ':', '/', '\\', '?', '[', ']'),
        "",
        $currTitle
    );

    // 字數上限 31,保守抓 30
    $maxByte = 90;
    $chars = mb_strlen($currTitle, 'UTF-8');
    while ( $chars > 30 ) {
        $currTitle = mb_strcut($currTitle, 0, $maxByte, 'UTF-8');
        $chars = mb_strlen($currTitle, 'UTF-8');
        $maxByte--;
    }