|
|
|
มีปัญหา อัพโหลดไฟล์ Excel ด้วยฟังก์ชั่น $_file แล้วไม่สามารถเปิดอ่านไฟล์ที่อัพโหลดได้ครับ |
|
|
|
|
|
|
|
ตอบความคิดเห็นที่ : 2 เขียนโดย : mr.win เมื่อวันที่ 2016-01-16 13:09:23
รายละเอียดของการตอบ ::
ก็ไม่ทราบเหมือนกันครับว่าทำมั้ย แต่ตอนนี้ สามารถอัพไฟล์ได้ phpexcel class อ่านไฟล์ที่อัพได้ แต่ถ้าเปิดไฟล์ที่อัพด้วย office excel เปิดอ่านไม่ได้เหมือนเดิม
ล่าสุดก็ทำงานด้วยคำสั่งแบบนี้
Code (PHP)
<?php
////////////////////////////////////////////////////
$file = $_FILES['fileupload']['name'];
if($_FILES['fileupload']['type'] == "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
{ $typefile = "xlsx"; }
else if($_FILES['fileupload']['type'] == "application/vnd.ms-excel")
{ $typefile = "xls"; }
else
{ $typefile = $_FILES['fileupload']['type']; }
$DMY = date(dmY);
$Excelfilename = "ExcelFile".$DMY;
/** PHPExcel */
require_once 'Classes/PHPExcel.php';
/** PHPExcel_IOFactory - Reader */
include 'Classes/PHPExcel/IOFactory.php';
///////////////////////////////////////////////////
$typeUP = array("xlsx","xls");
//$typeUP = array("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet","application/vnd.ms-excel");
if(!in_array($typefile,$typeUP))
{
$alert = "<center>ประเภทไฟล์ไม่ถูกต้อง อนุญาตให้ใช้ได้เฉพาะไฟล์ที่มีนามสกุลเป็น .xls (Excel 2003) หรือ .xlsx (Excel 2007) เท่านั้น<br><br>ประเภทไฟล์ของเอกสารนี้เป็นประเภท $typefile</center>";
}
else
{
// File Excel 2007
if($typefile == "xlsx")
{
if(move_uploaded_file ($_FILES['fileupload']['tmp_name'],"ExcelFile/".$Excelfilename.".xlsx"))
{
/////////////////////////////////// Import to MySQL ///////////////////////////////////////////
$filename = "ExcelFile".date("dmY");
$inputFileName = "ExcelFile/$filename.xlsx";
$inputFileType = PHPExcel_IOFactory::identify($inputFileName);
$objReader = PHPExcel_IOFactory::createReader($inputFileType);
$objReader->setReadDataOnly(true);
$objPHPExcel = $objReader->load($inputFileName);
$objWorksheet = $objPHPExcel->setActiveSheetIndex(0);
$highestRow = $objWorksheet->getHighestRow();
$highestColumn = $objWorksheet->getHighestColumn();
$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];
}
}
}
//echo '<pre>';
//var_dump($namedDataArray);
//echo '</pre><hr />';
$i = 0;
foreach ($namedDataArray as $result) {
$i++;
$strSQL = "";
$strSQL .= "INSERT INTO member ";
$strSQL .= "(IDstd,Username,Password,Prefix,fname,lname,class,room,yearin,rang,pic,status,note) ";
$strSQL .= "VALUES ";
$strSQL .= "('".$result["IDstd"]."','".$result["Username"]."' ";
$strSQL .= ",'".md5($result["Password"])."','".$result["Prefix"]."' ";
$strSQL .= ",'".$result["fname"]."','".$result["lname"]."' ";
$strSQL .= ",'".$result["class"]."','".$result["room"]."' ";
$strSQL .= ",'".$result["yearin"]."','".$result["rang"]."' ";
$strSQL .= ",'".$result["pic"]."','".$result["status"]."' ";
$strSQL .= ",'".$result["note"]."') ";
mysql_query($strSQL) or die(mysql_error());
echo "Row $i Inserted...<br>";
}
mysql_close();
$alert = "อัพโหลดไฟล์ $file เรียบร้อยแล้ว : File Type Excel 2007";
}
else
{
$alert = "ไม่สามารถอัพโหลดไฟล์ได้";
}
}
// File Excel 2003
else if($typefile == "xls")
{
if(move_uploaded_file ($_FILES['fileupload']['tmp_name'],"ExcelFile/".$Excelfilename.".xls"))
{
/////////////////////////////////// Import to MySQL ///////////////////////////////////////////
$filename = "ExcelFile".date("dmY");
$inputFileName = "ExcelFile/$filename.xls";
$inputFileType = PHPExcel_IOFactory::identify($inputFileName);
$objReader = PHPExcel_IOFactory::createReader($inputFileType);
$objReader->setReadDataOnly(true);
$objPHPExcel = $objReader->load($inputFileName);
$objWorksheet = $objPHPExcel->setActiveSheetIndex(0);
$highestRow = $objWorksheet->getHighestRow();
$highestColumn = $objWorksheet->getHighestColumn();
$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];
}
}
}
//echo '<pre>';
//var_dump($namedDataArray);
//echo '</pre><hr />';
$i = 0;
foreach ($namedDataArray as $result) {
$i++;
$strSQL = "";
$strSQL .= "INSERT INTO member ";
$strSQL .= "(IDstd,Username,Password,Prefix,fname,lname,class,room,yearin,rang,pic,status,note) ";
$strSQL .= "VALUES ";
$strSQL .= "('".$result["IDstd"]."','".$result["Username"]."' ";
$strSQL .= ",'".md5($result["Password"])."','".$result["Prefix"]."' ";
$strSQL .= ",'".$result["fname"]."','".$result["lname"]."' ";
$strSQL .= ",'".$result["class"]."','".$result["room"]."' ";
$strSQL .= ",'".$result["yearin"]."','".$result["rang"]."' ";
$strSQL .= ",'".$result["pic"]."','".$result["status"]."' ";
$strSQL .= ",'".$result["note"]."') ";
mysql_query($strSQL) or die(mysql_error());
echo "Row $i Inserted...<br>";
}
mysql_close();
$alert = "อัพโหลดไฟล์ $file เรียบร้อยแล้ว : File Type Excel 2003";
}
else
{
$alert = "ไม่สามารถอัพโหลดไฟล์ได้";
}
}
else
{
$alert = "ประเภทไฟล์เอกสาร Excel ที่ไม่รู้จัก กรุณาใช้ไฟล์เอกสารของ Excel 2003 หรือ Excell 2007";
}
}
?>
ซึ่งคิดว่า ที่เปิดอ่านไม่ได้ น่าจะเป็นเพราะสั่ง เปลี่ยนชื่อไฟล์และใส่นามสกุลให้ใหม่ เลยมีปัญหา แต่ก็ยังไม่รู้ว่าจะหาวิธีอื่นยังไงครับ
|
|
|
|
|
Date :
2016-01-17 00:48:28 |
By :
akkaneetha |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 03
|