วิธีใช้งาน File helper ของ CodeInigter by joeskb
Oct0
หลายอาทิตย์มานี้ ได้เริ่มทำงานเปลี่ยน exception ให้รองรับกับ file language ที่เป็น CSV
ซึ่งโจทย์ที่ต้องทำก็คือค้นหาไฟล์ทั้งเพื่อเปลี่ยน exception เลยนำมาเผยแพร่ต่อเผื่อเป็นแนวสำหรับใช้งานด้านอื่นนะครับ
วิธีเริ่มใช้งานก็เหมือน helper ปกติครับ ใช้
$this->CI->load->helper('file');
สำหรับโปรเจคนี้ก็จะมีแก้ไม่กี่่ที่ ส่วนมากเป็น model เพราะให้ controller เป็นส่วน try catch รอรับ error
ก็จัดการ list รายชื่อ file ที่ต้องแก้ไข ด้วยคำสั่ง
$a_model = get_filenames('./model');
แล้วก็ไล่จัดการกับแต่ละไฟล์
foreach($a_model as $model){
foreach(explode(";",read_file("./model/{$model}")) as $each){
if(strpos($each,'exception')!==false){
if(strpos($each,'get_language')!==false){
continue;
}
echo $each;
}
}
}
เพื่อให้php แสดงข้อมูลบรรทัดที่มี exception ออกมา หรือถ้าได้รับการแก้ไขแล้วด้วย function ที่ใช้งานภาษาก็ให้ข้ามไปอันถัดไปได้
(English) วิธีเลือก Active Sheet ใน PHPExcel by joeskb
Sep0
ช่วงนี้ก็ยังคงวนเวียนอยู่กับ PHPExcel เพื่อนำข้อมูลจาก Excel เข้าสู่ Database
เดือนนี้จะแนะนำวิธีการเลือก active sheet สำหรับนำข้อมูลมาใช้งานครับ
การใช้งานมีอยู่สองแบบครับ แบบ Index กับแบบ Name
ประกาศตัวแปลให้ดูก่อนจะได้ไม่งงเวลาเรียกใช้นะครับ
$this->xlsx = $objReader->load($file_path);
วิธีเรียกแบบ Name ก่อนนะครับ ใช้งานง่ายๆ
$this->xlsx->setActiveSheetIndexByName('xxxxx');
เป็นการตั้งค่า active sheet ให้เป็น sheet ชื่อ xxxxx
วิธีตั้งค่าเป็น Index โดย
$this->xlsx->setActiveSheetIndex(1);
ซึ่งแบบใช้ชื่อน่าจะใช้งานได้สะดวกกว่า แต่ในบางทีเราก็ต้องวน loop ไปหลาย sheet ก็สามารถใช้งาน index แทน
อันนี้แล้วแต่จะประยุกต์ใช้กันนะครับ
สำหรับคนที่ไม่เคยใช้ บรรทัดต่อไปก็จะเป็นประมาณนี้ครับ
$this->xlsx->getActiveSheet()
วิธีอ้างอิงข้อมูลด้วยชื่อคอลัมม์ by joeskb
Aug0
เมื่อทำงานผ่าน PHPExcel มาสักระยะ ทุกท่านก็คงจะพบปัญหาเช่นเดียวกับผม คือ ข้อมูลที่เราเคยอ้างถึงมันถูกเลื่อนออกจากจุดเดิมไป ทำให้ข้อมูลขาดหายไปโดยไม่รู้ตัว ตัวผมเองก็หาวิธีจัดการกับปัญหานี้เช่นกัน
พยายามรืัอ libraries หา function สำเร็จรูปแต่ก็ไม่พบ ถ้าใครพบก็ฝากแจ้งด้วยนะครับ
จึงหาวิธีจัดการเรื่องนี้ด้วยตนเอง วิธีก็คือ
- สร้างแถวสำหรับระบุคอลัมน์ โดยชื่อห้ามซ้ำกันเด็ดขาด
- ประกาศตัวแปร $header มารับข้อมูลจาก function สมมติว่าอยู่แถวที่ 1
$header=array_flip($data[1]);
- เวลาใช้งานก็แทนคอลัมน์จาก สมมติว่า A =name เดิม$data[2]['A'] เป็น $data[2][$header['name']]
หลังจากนี้ ไม่ว่า name จะย้านไปอยู่คอลัมน์ไหน ก็ไม่มีปัญหาอีกต่อไป
วิธีดึงข้อมูลจาก excel มาใช้งานใน php โดย PHPExcel by joeskb
Jul0
เนื่องจากไม่ได้อยู่หน้าเครื่องทำงานจริง จึงขอข้ามขั้นตอนการติดตัังไปไว้เดือนหน้านะครับ(กั๊กว่างั้น)
วิธิใช้นี้เป็นการทำงานผ่าน Code igniter นะครับ เริ่มต้นด้วยการประกาศค่าของ Reader กันเลย
ชุดแรกให้ประกาศไว้ใน function __construct() ครับ
$inputFileType = PHPExcel_IOFactory::identify($file_path);
$objReader = PHPExcel_IOFactory::createReader($inputFileType);
$objReader->setReadDataOnly(TRUE);
$this->xlsx = $objReader->load($file_path);
- บรรทัดแรกเป็นการหาประเภท file ครับ ถ้าไม่รู้ ไม่อยากรู่้ หรือขี้เกียจก็ประกาศไว้อย่างงี้ให้โปรแกรมมันไปหาเอาเองหล่ะกัน
- บรรทัดต่อมาเป็นการกำหนดให้สร้าง reader ตาม file type ที่ได้มาจาก identify
- บรรทัดที่สามใส่ไว้ถ้าต้องการแค่ดึงข้อมูลออกมาจาก excel ครับ ลดการทำงานของ function ประหยัดทรัพยากร
- แล้วก็ทำการสั่งโหลด file ใส่ตัวแปลเอาไว้ครับ อย่าลืมประกาศ ตัวแปลเพื่อจะได้ใช้งานทีเดียวครับ
ชุดต่อมาเป็นการใช้งานภายใน function
$this->xlsx->setActiveSheetIndex(0);
$data = $this->xlsx->getActiveSheet()->toArray(null, true, true, true);
- บรรทัดแรกใช้ตั้งค่า active sheet ครับ เริ่มนับจาก 0
- บรรทัดที่สองก็ทำการดึงค่า active sheet มาใส่ไว้ใน ตัวแปล array เพื่อใช้งานใน php กันต่อไปครับ
วิธีอ้างถึงข้อมูลคือ $data[แถว][คอลัมน์] เช่น $data[0]['A']
วิธีกำหนดลักษณะข้อความใน UILabel by joeskb
Jun0
สำหรับ NGUI – UILabel ในข้อความที่ลักษณะเหมือนบทสนทนาต่างๆ หากมีการกำหนดค่าให้แสดงลูกเล่นก็จะทำให้ดูน่าอ่านขึ้น
ซึ่งข้อความเหล่านี้สามารถกำหนดมาจากต้นฉบับเพื่อนำมาแสดงภายใน UILabel ชิ้นเดียวได้เลย โดยอาศัย tag ที่คล้ายๆ BB code ดังต่อไปนี้
- [b] – bold สำหรับกำหนดจุดเริ่มต้นของตัวหนา [/b] สำหรับกำหนดจุดสิ้นสุดของตัวหนา
- [i] – italic สำหรับกำหนดจุดเริ่มต้นของตัวเอียง [/i] สำหรับกำหนดจุดสิ้นสุดของตัวเอียง
- [u] – underline สำหรับกำหนดจุดเริ่มต้นของการขีดเส้นใต้ [/u] สำหรับกำหนดจุดสิ้นสุดของการขีดเส้นใต้
- [s] – strike through สำหรับกำหนดจุดเริ่มต้นของการขีดค่า [/s] สำหรับกำหนดจุดสิ้นสุดของการขีดค่า
- [รหัสสี] เช่น [99ff00] สำหรับกำหนดจุดเริ่มต้นของสี [-] สำหรับกำหนดจุดสิ้นสุดของสีข้างต้น [c] สำหรับบังคับใช้สีหลัก [/c]