ปกติแล้ว เราก็กำหนด 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 formatif ($format->_num_format=='@') // || preg_match("/^0/", $token))return $this->writeString($row,$col,$token,$format);
สุดท้ายก็ขอขอบคุณ opensource ไว้เพราะว่าทำให้เราแก้ไขได้เอง และศึกษาเข้าไปในส่วนต่าง ๆ ได้อีก
ไม่มีความคิดเห็น:
แสดงความคิดเห็น