วันอาทิตย์ที่ 21 ตุลาคม พ.ศ. 2555

PHP Spreadsheet_Excel_Writer with text format

ในการสร้าง Excel ด้วย PHP นั้น ผมก็ใช้  Spreadsheet_Excel_Writer  เพื่อช่วยสร้าง Excel  
ปกติแล้ว เราก็กำหนด Format ของ ตัวเลข วันที่ ค่าเงิน จาก function setNumFormat() แต่พอต้องการแสดงหมายเลขโทรศัพท์ โดยเฉพาะที่ขึ้นต้นด้วย "0" ก็จะมีปัญหาที่เวลาแสดงใน excel แล้ว เลข "0" จะหายไปทำให้แสดงค่าผิดพลาด 

ค้นหาไปก็หลาย ๆ ที่แล้วก็บอกว่าให้ช้ setNumFormat('@') ตามนี้ (http://pear.php.net/manual/en/package.fileformats.spreadsheet-excel-writer.spreadsheet-excel-writer-format.setnumformat.php) แต่พอนำไปใช้งานก็ยังเป็นปัญหาอยู่

สุดท้ายก็ต้องไปแก้ที่ต้นทางเลยคือที่ Worksheet.php ตามนี้ (http://pear.php.net/bugs/bug.php?id=3514) หรือไม่ก็ไปใช้ writeString() แทน write() ที่ทำการตรวจสอบค่าทีหลัง 

แต่ผมใช้การกำหนด setNumFormat('@') เป็นอย่างนี้แล้วก็ไปเพิ่ม

function write($row, $col, $token, $format = null)
    {
        // leading zero or string format
        if ($format->_num_format=='@') // || preg_match("/^0/", $token))
               return $this->writeString($row,$col,$token,$format);


 สุดท้ายก็ขอขอบคุณ opensource ไว้เพราะว่าทำให้เราแก้ไขได้เอง และศึกษาเข้าไปในส่วนต่าง ๆ ได้อีก

ไม่มีความคิดเห็น:

แสดงความคิดเห็น