phpex-phpexccel read file excel แล้วจะกำหนด format ที่อ่านมาเช่น number ให้เป็น text ได้อย่างไร
error แจ้งมายังไงครับ
ถ้าอ่านได้ php ไม่สนใจว่าจะเป็น ตัวเลขหรือ ตัว อักษร หรอกครับ
Date :
2018-02-02 22:37:12
By :
Chaidhanan
คือมันพยายามจะแปลงเป็น ตัวเลขมากกว่านะครับ
ข้อมูลที่ได้มาจากการอ่านน่าจะเป็น text อยู่แล้ว
จะเอาลง field ที่เป็น ตัวเลขหรือเปล่าครับ
ถ้าใช ก็ต้องแปลงค่าก่อน จะเอาลงไปตรงๆ เลยไม่ได้
ทดสอบ ค่าที่อ่านได้จาก file excel โดยใช้คำสั่ง
var_dump($ro_excel); exit;
มาดูหน่อยครับว่า ค่าที่ได้ เป็นอะไร
$ro_excel คือค่าที่อ่านจาก csv ก่อน เอาลง database
Date :
2018-02-02 23:37:32
By :
Chaidhanan
แปลง . ให้เป็น / ก่อน write
Code (PHP)
$ro_excel[3]=preg_replace('/\./g', '/',$ro_excel[3]);
Date :
2018-02-04 17:51:23
By :
Chaidhanan
คือเขาอ่านออกมาเป็น text อยู่แล้วครับ แต่ตอนwrite ลง excel มันไม่เข้าใจอะครับ
คือ format วันที่ ที่ผมเคยใช้อยู่ก็มี / - สองอันอะครับ ที่เป็น จุด ผมไม่เคยใช้ เลยไม่แน่ใจว่าใช้ได้ไหม
แต่ดูที่บอกมา มันเออเร่อร์ที่เป็น จุด ก็น่าจะผิด format การนำเข้า ล่ะครับก็ไม่ต้องคิดมาก แก้ไขไปตามที่มันบอก
จริงๆ อยากดูโค๊ดตอน write มากกว่าว่าเขียนยังไง เอาบันทัดที่ error อะครับ
อ้อ ลืมไป เดี่ยวเอา บันทัดที่เป็นแต่ ตัวแปรสำเร็จมา เอา detail ของตัวแปรที่เป็น array มาด้วยนะครับ
Date :
2018-02-04 21:49:37
By :
Chaidhanan
ตอบความคิดเห็นที่ : 8 เขียนโดย : deawx เมื่อวันที่ 2018-02-05 07:37:56
รายละเอียดของการตอบ ::
... ไม่รู้ว่าจะไปกำหนด type มันตรงไหนค่ะ ลองทำตามนั้นแล้วก็ยังไม่ได้ หรือว่าทำไม่ถูกก็ไม่แน่ใจค่ะ......
ตอบความคิดเห็นที่ : 7 เขียนโดย : Chaidhanan เมื่อวันที่ 2018-02-04 21:49:37
รายละเอียดของการตอบ ::
...
Code (PHP)
/** PHPExcel */
require_once 'PHPExcel-18/Classes/PHPExcel.php';
/** PHPExcel_IOFactory - Reader */
include 'PHPExcel/Classes/PHPExcel/IOFactory.php';
echo '<meta http-equiv="Content-type" content="text/html;charset=tis-620" />';
$inputFileName = "import/".$name_file;
$inputFileType = PHPExcel_IOFactory::identify($inputFileName);
$objReader = PHPExcel_IOFactory::createReader($inputFileType);
$objReader->setReadDataOnly(true);
$objPHPExcel = $objReader->load($inputFileName);
// for No header
$objWorksheet = $objPHPExcel->setActiveSheetIndex(0);
$highestRow = $objWorksheet->getHighestRow();
$highestColumn = $objWorksheet->getHighestColumn();
$r = -1;
$namedDataArray = array();
for ($row = 2; $row <= $highestRow; ++$row) {
$dataRow = $objWorksheet->rangeToArray('A'.$row.':'.$highestColumn.$row,null, true, true, true);
if ((isset($dataRow[$row]['A'])) && ($dataRow[$row]['A'] > '')) {
++$r;
$namedDataArray[$r] = $dataRow[$row];
}
}
// for specify header Material Plant Batch Char_1 - 20
/*
$objWorksheet = $objPHPExcel->setActiveSheetIndex(0);
$highestRow = $objWorksheet->getHighestRow();
$highestColumn = $objWorksheet->getHighestColumnh();
$headingsArray = $objWorksheet->rangeToArray('A1:'.$highestColumn.'1',null, true, true, true);
$headingsArray = $headingsArray[1];
$r = -1;
$namedDataArray = array();
for ($row = 2; $row <= $highestRow; ++$row) {
$dataRow = $objWorksheet->rangeToArray('A'.$row.':'.$highestColumn.$row,null, true, true, true);
if ((isset($dataRow[$row]['A'])) && ($dataRow[$row]['A'] > '')) {
++$r;
foreach($headingsArray as $columnKey => $columnHeading) {
$namedDataArray[$r][$columnHeading] = $dataRow[$row][$columnKey];
}
}
}*/
$row_data = -1;
foreach ($namedDataArray as $result) {
$row_data ++;
$inputdata[] = array(
"head_1"=>iconv('UTF-8', 'TIS-620',$result["A"]),
"head_2"=>iconv('UTF-8', 'TIS-620',$result["B"]),
"head_3"=>iconv('UTF-8', 'TIS-620',$result["C"]),
"Char_1"=>iconv('UTF-8', 'TIS-620',$result["D"]),
"Char_2"=>iconv('UTF-8', 'TIS-620',$result["E"]),
"Char_3"=>iconv('UTF-8', 'TIS-620',$result["F"]),
"Char_4"=>iconv('UTF-8', 'TIS-620',$result["G"]),
"Char_5"=>iconv('UTF-8', 'TIS-620',$result["H"]),
"Char_6"=>iconv('UTF-8', 'TIS-620',$result["I"]),
"Char_7"=>iconv('UTF-8', 'TIS-620',$result["J"]),
"Char_8"=>iconv('UTF-8', 'TIS-620',$result["K"]),
"Char_9"=>iconv('UTF-8', 'TIS-620',$result["L"]),
"Char_10"=>iconv('UTF-8', 'TIS-620',$result["M"]),
"Char_11"=>iconv('UTF-8', 'TIS-620',$result["N"]),
"Char_12"=>iconv('UTF-8', 'TIS-620',$result["O"]),
"Char_13"=>iconv('UTF-8', 'TIS-620',$result["P"]),
"Char_14"=>iconv('UTF-8', 'TIS-620',$result["Q"]),
"Char_15"=>iconv('UTF-8', 'TIS-620',$result["R"]),
"Char_16"=>iconv('UTF-8', 'TIS-620',$result["S"]),
"Char_17"=>iconv('UTF-8', 'TIS-620',$result["T"]),
"Char_18"=>iconv('UTF-8', 'TIS-620',$result["U"]),
"Char_19"=>iconv('UTF-8', 'TIS-620',$result["V"]),
"Char_20"=>iconv('UTF-8', 'TIS-620',$result["W"]),
);
}
// remove file upload
$file_del = "import/".$name_file;
@unlink($file_del);
/*if (@unlink($file_del))
{
echo ("deleted $file");
}
else
{
echo ("error");
}*/
}
Data ที่ใช้ Name Add Date Thai 9 G 3 Buddish PASS 15.02.2017 14.08.2018 14.02.2017 ประมาณนี้ค่ะ
เนื่องจากไม่ได้กำหนด input ตายตัวว่าช่องไหนเป็นวันที่ หรือ text ก็เลยไม่อยากที่จะต้อง check ทุกฟิวด์อ่ะค่ะ เลยอยากจะฟิก format มากกว่าค่ะ
.......
Date :
2018-02-05 13:34:03
By :
JuNiorWP
เขียนเป็น function convert
Code (PHP)
<?php
function cv_x( $src){
if( preg_match('/[ก-ฮ]/',$src){ // check ภาษาไทย
$src=iconv('UTF-8', 'TIS-620',$src);
}else if( preg_match('/^\d{2}\.\d{2}\.\d{4}$/', $src){ // check date
$src = preg_replace('/\./g','/', $src);
}
return $src;
}
$inputdata[] = array(
"head_1"=>cv_x($result["A"]),
"head_2"=>cv_x($result["B"]),
ประวัติการแก้ไข 2018-02-05 15:40:25
Date :
2018-02-05 15:33:26
By :
Chaidhanan
Load balance : Server 04