 |
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 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|