สอบถามว่า ต้องแก้ไข Code อย่างไร จึงจะนำข้อมูลใน Excel ที่อ่านค่าด้วย PHPExcel มาใส่ข้อมูลแบบ autofill ได้ครับ
ถาม-ตอบ แนะนำไอเดียว โค้ดตัวอย่าง แนวทาง วิธีแก้ปัญหา สอบถามว่า ต้องแก้ไข Code อย่างไร จึงจะนำข้อมูลใน Excel ที่อ่านค่าด้วย PHPExcel มาใส่ข้อมูลแบบ autofill ได้ครับ
สอบถามว่า ต้องแก้ไข Code อย่างไร จึงจะนำข้อมูลใน Excel ที่อ่านค่าด้วย PHPExcel มาใส่ข้อมูลแบบ autofill ได้ครับ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 | <span style= "font-size:14px;" ><span style= "font-family:arial,helvetica,sans-serif;" >สอบถามว่า ต้องแก้ไข Code อย่างไร จึงจะนำข้อมูลใน Excel ที่อ่านค่าด้วย PHPExcel มาใส่ข้อมูลแบบ autofill ที่ input tag ตัวแปร input id= "fname" และ input id= "lname" (ซึ่งอ้างอิงชื่อตัวแปรจากตารางแถวที่ 1) ได้ครับ <span style= "color: rgb(0, 0, 0);" >ชุดไฟล์ + Code ทั้งหมดครับ</span></span></span><span style= "color: rgb(0, 0, 0); font-family: Arial, Helvetica, sans-serif; font-size: 14px;" > 1. excelimport.php</span> <!DOCTYPE html> <html> <head> <style> h2 {display: inline;} </style> <script> var _validFileExtensions = [ ".xls" , ".xlsx" , ".csv" ]; function ValidateSingleInput(oInput) { if (oInput.type == "file" ) { var sFileName = oInput.value; if (sFileName.length > 0) { var blnValid = false; for ( var j = 0; j < _validFileExtensions.length; j++) { var sCurExtension = _validFileExtensions[j]; if (sFileName. substr (sFileName.length - sCurExtension.length, sCurExtension.length).toLowerCase() == sCurExtension.toLowerCase()) { blnValid = true; break ; } } if (!blnValid) { alert( "Sorry, " + sFileName + " is invalid, allowed extensions are: " + _validFileExtensions.join(", ")); oInput.value = "" ; return false; } } } return true; } </script> </head> <body> <?php if (isset( $_FILES [ 'excel' ]) && $_FILES [ 'excel' ][ 'error' ]==0) { require_once "PHPExcel/Classes/PHPExcel.php" ; $tmpfname = $_FILES [ 'excel' ][ 'tmp_name' ]; $excelReader = PHPExcel_IOFactory::createReaderForFile( $tmpfname ); $excelObj = $excelReader ->load( $tmpfname ); $worksheet = $excelObj ->getSheet(0); $lastRow = $worksheet ->getHighestRow(); echo "<table class=" table table-sm ">" ; for ( $row = 1; $row <= $lastRow ; $row ++) { echo "<tr><td scope=" row ">" ; echo $worksheet ->getCell( 'A' . $row )->getValue(); echo "</td><td>" ; echo $worksheet ->getCell( 'B' . $row )->getValue(); echo "</td><td>" ; echo $worksheet ->getCell( 'C' . $row )->getValue(); echo "</td><td>" ; echo $worksheet ->getCell( 'D' . $row )->getValue(); echo "</td><tr>" ; } echo "</table>" ; } ?> <form action = "" method = "POST" enctype = "multipart/form-data" > <h2 for = "myfile1" >Select files : </h2> <input type = "file" name = "excel" onchange= "ValidateSingleInput(this)" /> <input type = "submit" /><br><br> </form> <h2 for = "fname" >First name : </h2><input type= "text" id= "fname" name= "fname" value= "" ><br><br> <h2 for = "lname" >Last name : </h2><input type= "text" id= "lname" name= "lname" value= "" ><br><br> <input type= "submit" name= "submit2" > </body> </html> |
3. PHPExcel ซึ่งโหลดจากเว็บ https://github.com/PHPOffice/PHPExcel/ซึ่งมีโครงสร้างของไฟล์ทั้งหมด ดังนี้ครับ

Screenshot ครับ


คำแนะนำ และการใช้งาน
สมาชิก กรุณา ล็อกอินเข้าระบบ เพื่อตั้งคำถามใหม่ หรือ ตอบคำถาม สมาชิกใหม่ สมัครสมาชิกได้ที่ สมัครสมาชิก
- ถาม-ตอบ กรุณา ล็อกอินเข้าระบบ
ความคิดเห็นที่
1
ใช้การอัพโหลดผ่าน ajax อาจจะสร้างไฟล์ php สำหรับจัดการข้อมูลเฉพาะ
เช่น read_excel.php แล้วคืนค่ากลับมาเป็นข้อมูล json นำข้อมูลที่ได้จากการอัพโหลด
ไปใช้ในฟอร์มตามต้องการ ดูโค้ดตัวอย่าง และบทความแนวทางประกอบด้านล่าง
ไฟล์ ฟอร์มข้อมูล
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | <!DOCTYPE html> <html lang= "en" > <head> <meta charset= "UTF-8" > <title>Document</title> </head> <body> <br /> <form action= "" method= "post" enctype= "multipart/form-data" name= "myform1" id= "myform1" > <input type= "text" name= "mytext1" id= "mytext1" ><br> <input type= "file" name= "excelFile" id= "excelFile" /> <input type= "submit" name= "btnSubmit" id= "btnSubmit" value= "Submit" /> </form> <br> <script type= "text/javascript" > $( function (){ // เมื่อฟอร์มการเรียกใช้ evnet submit ข้อมูล $( "#excelFile" ).on( "change" , function (e){ e.preventDefault(); // ปิดการใช้งาน submit ปกติ เพื่อใช้งานผ่าน ajax // เตรียมข้อมูล form สำหรับส่งด้วย FormData Object var formData = new FormData($( "#myform1" )[0]); // ส่งค่าแบบ POST ไปยังไฟล์ read_excel.php รูปแบบ ajax แบบเต็ม $.ajax({ url: 'read_excel.php' , type: 'POST' , data: formData, /*async: false,*/ cache: false, contentType: false, processData: false }).done( function (data){ console.log(data); // ทดสอบแสดงค่า ดูผ่านหน้า console /* การใช้งาน console log เพื่อ debug javascript ใน chrome firefox และ ie https://www.ninenik.com/content.php?arti_id=692 via @ninenik */ $( "#mytext1" ).val(data.A2 + " " + data.B2); }); }); }); </script> </body> </html> |
ไฟล์ read_excel.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | <?php header( "Content-type:application/json; charset=UTF-8" ); header( "Cache-Control: no-store, no-cache, must-revalidate" ); header( "Cache-Control: post-check=0, pre-check=0" , false); /** Error reporting */ error_reporting (E_ALL); ini_set ( 'display_errors' , TRUE); ini_set ( 'display_startup_errors' , TRUE); date_default_timezone_set( 'Asia/Bangkok' ); require_once ( "PHPExcel/Classes/PHPExcel.php" ); ?> <?php if (isset( $_FILES [ 'excelFile' ][ 'name' ]) && $_FILES [ 'excelFile' ][ 'name' ]!= "" ){ $tmpFile = $_FILES [ 'excelFile' ][ 'tmp_name' ]; $fileName = $_FILES [ 'excelFile' ][ 'name' ]; // เก็บชื่อไฟล์ $_fileup = $_FILES [ 'excelFile' ]; $info = pathinfo ( $fileName ); $allow_file = array ( "csv" , "xls" , "xlsx" ); /* print_r($info); // ข้อมูลไฟล์ print_r($_fileup);*/ if ( $fileName != "" && in_array( $info [ 'extension' ], $allow_file )){ // อ่านไฟล์จาก path temp ชั่วคราวที่เราอัพโหลด $objPHPExcel = PHPExcel_IOFactory::load( $tmpFile ); // ดึงข้อมูลของแต่ละเซลในตารางมาไว้ใช้งานในรูปแบบตัวแปร array $cell_collection = $objPHPExcel ->getActiveSheet()->getCellCollection(); // วนลูปแสดงข้อมูล $v =1; $json_data = array (); foreach ( $cell_collection as $cell ) { // ค่าสำหรับดูว่าเป็นคอลัมน์ไหน เช่น A B C .... $column = $objPHPExcel ->getActiveSheet()->getCell( $cell )->getColumn(); // คำสำหรับดูว่าเป็นแถวที่เท่าไหร่ เช่น 1 2 3 ..... $row = $objPHPExcel ->getActiveSheet()->getCell( $cell )->getRow(); // ค่าของข้อมูลในเซลล์นั้นๆ เช่น A1 B1 C1 .... $data_value = $objPHPExcel ->getActiveSheet()->getCell( $cell )->getValue(); // เท่านี้เราก็สามารถแสดงข้อมูลจากการอ่านไฟล์ได้แล้ว และสามารถนำข้อมูลเหล่านี้ // ทำการบันทักลงฐานข้อมูล หรือแสดงได้เลย $json_data [ "$column$row" ] = $data_value ; // echo $v." ---- ".$data_value."<br>"; $v ++; } // แปลง array เป็นรูปแบบ json string if (isset( $json_data )){ $json = json_encode( $json_data ); if (isset( $_GET [ 'callback' ]) && $_GET [ 'callback' ]!= "" ){ echo $_GET [ 'callback' ]. "(" . $json . ");" ; } else { echo $json ; } } } } ?> |
ลำดับการทำงาน เมื่อทำการเลือกไฟล์ excel จะทำการ submit ข้อมูลไปยัง
ไฟ์ read_excel.php แบบ ajax เพื่้อนำไฟล์ไปอ่านค่า แล้วส่งกลับมาในรูปแบบ json data
จากไฟล์ตัวอย่าง จะได้ค่าเป็น
{A1: "fname", B1: "lname", A2: "Hello", B2: "World"}
นำค่า json data ไปแสดงใน elelment ในฟอร์มที่จะใช้งาน จากนั้น สามารถส่งข้อมูลไฟล์ได้ปกติ
ก่อนเลือกไฟล์
![]()
เมื่อเลือกไฟล์ ajax ทำงาน
![]()
ก่อนเลือกไฟล์
เมื่อเลือกไฟล์ ajax ทำงาน
บทความแนะนำที่เกี่ยวข้อง | |
---|---|
สร้างไฟล์ json จากฐานข้อมูล รองรับการใช้งาน jsonp callback | อ่าน 21,338 |
การใช้งาน FormData() ใน HTML5 อัพโหลดไฟล์ผ่าน ajax ด้วย jquery | อ่าน 33,755 |
การอ่านไฟล์ Excel หรือ CSV ไฟล์ด้วย PHPExcel โดยใช้ php อย่างง่าย | อ่าน 16,986 |

ความคิดเห็นที่
2
ขอบคุณครับ สำหรับคำตอบ Code ใช้งานได้แล้ว ซึ่งปรับปรุงเป็นฉบับของตัวเอง ได้ดังนี้ครับ
1. excelimport.php
2. read_excel.php (ยก Code จาก Ninenik มาใช้งานได้เลยครับ)
3. PHPExcel ซึ่งโหลดจากเว็บ https://github.com/PHPOffice/PHPExcel/ซึ่งมีโครงสร้างของไฟล์ทั้งหมด ดังนี้ครับ

Screenshot ครับ

1. excelimport.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | <!DOCTYPE html> <html> <head> <meta charset= "UTF-8" > <title>Document</title> <style> h2 {display: inline;} </style> </head> <body> <form action= "" method= "post" enctype= "multipart/form-data" name= "myform1" id= "myform1" > <h2 for = "myfile1" >Select files : </h2><input type= "file" name= "excelFile" id= "excelFile" /><br><br> <h2 for = "fname" >First name : </h2><input type= "text" id= "fname" name= "fname" ><br><br> <h2 for = "lname" >Last name : </h2><input type= "text" id= "lname" name= "lname" ><br><br> <input type= "submit" name= "btnSubmit" id= "btnSubmit" value= "Submit" /> </form> <script type= "text/javascript" > $( function (){ // เมื่อฟอร์มการเรียกใช้ evnet submit ข้อมูล $( "#excelFile" ).on( "change" , function (e){ e.preventDefault(); // ปิดการใช้งาน submit ปกติ เพื่อใช้งานผ่าน ajax // เตรียมข้อมูล form สำหรับส่งด้วย FormData Object var formData = new FormData($( "#myform1" )[0]); // ส่งค่าแบบ POST ไปยังไฟล์ read_excel.php รูปแบบ ajax แบบเต็ม $.ajax({ url: 'read_excel.php' , type: 'POST' , data: formData, /*async: false,*/ cache: false, contentType: false, processData: false }).done( function (data){ console.log(data); // ทดสอบแสดงค่า ดูผ่านหน้า console /* การใช้งาน console log เพื่อ debug javascript ใน chrome firefox และ ie https://www.ninenik.com/content.php?arti_id=692 via @ninenik */ $( "#fname" ).val(data.A2); $( "#lname" ).val(data.B2); }); }); }); </script> </body> </html> |
2. read_excel.php (ยก Code จาก Ninenik มาใช้งานได้เลยครับ)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | <?php header( "Content-type:application/json; charset=UTF-8" ); header( "Cache-Control: no-store, no-cache, must-revalidate" ); header( "Cache-Control: post-check=0, pre-check=0" , false); /** Error reporting */ error_reporting (E_ALL); ini_set ( 'display_errors' , TRUE); ini_set ( 'display_startup_errors' , TRUE); date_default_timezone_set( 'Asia/Bangkok' ); require_once ( "PHPExcel/Classes/PHPExcel.php" ); ?> <?php if (isset( $_FILES [ 'excelFile' ][ 'name' ]) && $_FILES [ 'excelFile' ][ 'name' ]!= "" ){ $tmpFile = $_FILES [ 'excelFile' ][ 'tmp_name' ]; $fileName = $_FILES [ 'excelFile' ][ 'name' ]; // เก็บชื่อไฟล์ $_fileup = $_FILES [ 'excelFile' ]; $info = pathinfo ( $fileName ); $allow_file = array ( "csv" , "xls" , "xlsx" ); /* print_r($info); // ข้อมูลไฟล์ print_r($_fileup);*/ if ( $fileName != "" && in_array( $info [ 'extension' ], $allow_file )){ // อ่านไฟล์จาก path temp ชั่วคราวที่เราอัพโหลด $objPHPExcel = PHPExcel_IOFactory::load( $tmpFile ); // ดึงข้อมูลของแต่ละเซลในตารางมาไว้ใช้งานในรูปแบบตัวแปร array $cell_collection = $objPHPExcel ->getActiveSheet()->getCellCollection(); // วนลูปแสดงข้อมูล $v =1; $json_data = array (); foreach ( $cell_collection as $cell ) { // ค่าสำหรับดูว่าเป็นคอลัมน์ไหน เช่น A B C .... $column = $objPHPExcel ->getActiveSheet()->getCell( $cell )->getColumn(); // คำสำหรับดูว่าเป็นแถวที่เท่าไหร่ เช่น 1 2 3 ..... $row = $objPHPExcel ->getActiveSheet()->getCell( $cell )->getRow(); // ค่าของข้อมูลในเซลล์นั้นๆ เช่น A1 B1 C1 .... $data_value = $objPHPExcel ->getActiveSheet()->getCell( $cell )->getValue(); // เท่านี้เราก็สามารถแสดงข้อมูลจากการอ่านไฟล์ได้แล้ว และสามารถนำข้อมูลเหล่านี้ // ทำการบันทักลงฐานข้อมูล หรือแสดงได้เลย $json_data [ "$column$row" ] = $data_value ; // echo $v." ---- ".$data_value."<br>"; $v ++; } // แปลง array เป็นรูปแบบ json string if (isset( $json_data )){ $json = json_encode( $json_data ); if (isset( $_GET [ 'callback' ]) && $_GET [ 'callback' ]!= "" ){ echo $_GET [ 'callback' ]. "(" . $json . ");" ; } else { echo $json ; } } } } ?> |
3. PHPExcel ซึ่งโหลดจากเว็บ https://github.com/PHPOffice/PHPExcel/ซึ่งมีโครงสร้างของไฟล์ทั้งหมด ดังนี้ครับ

Screenshot ครับ


ขอบคุณทุกการสนับสนุน
![]()