เขียน PHP Link File Excel ขึ้นมาแสดงยังครับ เขียน PHP Link File Excel ขึ้นมาแสดงยังครับ ช่วยบอกหน่อยครับ
ลองใช้อันนี้ดูครับ แต่เป็นการ import จาก XML file นะครับ
ขั้นแรก คุณต้อง save ไฟล์ เป็น XML format ก่อน โดย
File >> Save as >> เลือก save as type เป็น "XML Spreadsheet"
ขั้นที่สอง สร้าง page สำหรับอัพโหลด XML File (ชื่อ "XML_upload.php")
Code
<?php // XML_upload.php
$error=$_GET['error'];
if (!empty($error))
{
echo $error.'<br>';
}
?>
<html>
<body>
<form action="import.php" method="post" enctype="multipart/form-data">
<table>
<tr>
<td>Load XML file:</td>
</tr>
<tr>
<td>
<input type="hidden" name="MAX_FILE_SIZE" value="2000000" />
<input type="file" name="file" />
<input type="submit" value="Upload" />
</td>
</tr>
</table>
</form>
</body>
</html>
จากคุณ crisis.php
เมื่อ 04:08pm (3/01/2007)
IP : 124.120.163.122
________________________________________
ขั้นที่สาม สร้าง page รับไฟล์ XML (ชื่อ "import.php")
และทำการตรวจสอบ error
ในขั้นตอนของการสร้าง table ทุก field ผมใช้เป็นค่า default เหมือนกัน ทั้งหมดเพื่อความสะดวกครับ แต่ก็สามารถปรับแต่งได้ตามใจชอบ
การ save file จาก excel เป็น CSV กับ XML
มีข้อดี ข้อด้อยต่างกันพอสมควร ลองศึกษาดูครับ
Code
<?php //import.php
$filename =$_FILES['file']["tmp_name"];
$file_type =$_FILES['file']["type"];
if (empty($filename))
{
$error = "Empty file!!";
echo "<meta http-equiv="refresh" content="0; URL=XML_upload.php?error=".$error."">" ;
exit;
}
if ($file_type!="text/xml")
{
$error = "File type is incorrect!!";
echo "<meta http-equiv="refresh" content="0; URL=XML_upload.php?error=".$error."">" ;
exit;
}
$data = array();
if ($filename)
{
$dom = DOMDocument::load($filename);
$rows = $dom->getElementsByTagName('Row');
/*ถ้าเป็น File XML ที่ไม่ได้ save as โดย excel อาจต้องแก้ tagname จาก "Row" และ "Cell" เป็น Tagname ของ ไฟล์นั้นๆ ครับ*/
foreach ($rows as $row)
{
$cells = $row->getElementsByTagName('Cell');
$datarow = array();
$current_cell=1;
foreach ($cells as $cell)//สำหรับวนรับ-ส่งค่าที่เป็น empty filed ครับ - จะใช้กับ XML ที่มาจาก Excel เท่านั้น
{
$ind = $cell->getAttribute( 'Index' );
if ($ind > 0)
{
if ($ind == $current_cell)
$datarow[]= $cell->nodeValue;
else
for ($j=$current_cell;$j<$ind;$j++)
{
$datarow[]="-";
$current_cell++;
}
$datarow[]= $cell->nodeValue;
$current_cell++;
}
else
{
$datarow[]= $cell->nodeValue;
$current_cell++;
}
}
$data[] = $datarow;
}
}
?>
<html>
<body>
<table align="center" width="90%" border="1" cellpadding="0" cellspacing="0" bordercolor="#0000AA">
<?php
$this_rows=0;
$this_cols=0;
$cols_max=0;
foreach ($data as $row) {
echo '<tr>';
foreach ($row as $item) {
if (strlen($item)>0)
echo '<td>'.$item.'</td>';
else
echo '<td>-</td>';
$this_cols++;
}
if ($this_rows==0)
{
$cols_max=$this_cols;
}
else
for($i=$this_cols;$i<$cols_max;$i++)
{
echo '<td>-</td>';
}
$this_rows++;
$this_cols=0;
echo '</tr>';
}
?>
</table>
</body>
</html>
<?php
$host = "localhost";
$dbname = "myDB";
$username = "root";
$password = "";
mysql_connect ($host,$username,$password);
mysql_select_db($dbname);
//Create new table
$item_num=0;
$table_name = 'mytable'; //
$sql = "CREATE TABLE `".$table_name."` (";
$sql_insert = "INSERT INTO `".$table_name."` (";
foreach ($data[0] as $item)
{
if ($item_num!=0)
{
$sql .= ",";
$sql_insert .= ",";
}
$sql .= " `".$item."` ";
$sql_insert .= " `".$item."` ";
$sql .= " VARCHAR(30) CHARACTER SET tis620 COLLATE tis620_thai_ci NOT NULL";
$item_num++;
}
$sql .= ") ENGINE = myisam CHARACTER SET tis620 COLLATE tis620_thai_ci";
$sql_insert .= ") VALUES ( ";
$result=mysql_query($sql);
$item_row=0;
$item_col=0;
foreach ($data as $row) {
foreach ($row as $item) {
if ($item_row!=0)
{
if ($item_col!=0)
{
$sql_insert_item .= ",";
}
$sql_insert_item .= " "".$item."" ";
}
$item_col++;
}
for($i=$item_col;$i<$cols_max;$i++)
{
$sql_insert_item .= ", "" ";
}
$sql_insert_item .= ")";
$item_row++;
$item_col=0;
$sql_query .= $sql_insert;
$sql_query .= $sql_insert_item;
$result=mysql_query($sql_query);
$sql_query = "";
$sql_insert_item = "";
}
?>
จากคุณ crisis.php
เมื่อ 04:38pm (3/01/2007)
IP : 124.120.163.122
PHP กับการเก็บข้อมูลในไฟล์ .CSV
ในบทครั้ง การเขียนโปรแกรมเพื่อเชื่อมต่อกับ mySQL เพื่อ dump ข้อมูลออกมา show หรือสร้างระบบเล็กๆ อาจจะดูห่างไกลกันไป เพราะ DB กับตัว php อยู่คนละที่กัน หรือถ้าท่านไปทำงานในที่ ๆ ไม่มี mySQL เอาล่ะครับ งานนี้ล่ะ เราจะทําอย่างไร แบบนี้จะต้องใช้ความสามารถในด้าน file processing ของ PHP ล้วน ๆ เช่น fopen, ฯลฯ แต่การจัดการไฟล์ใน PHP เมื่อเทียบกับ Perl แล้วล่ะก็ Perl ยังดูง่ายกว่า แต่ไม่เป็นไรครับ... ยังมีวิธีการหนึ่งครับที่จะช่วยให้ PHP จัดการไฟล์ง่ายขึ้น นั่นคือ เก็บข้อมูลโดยใช้ไฟล์แบบ CSV หรือไฟล์แบบ Comma separated version คือ ไฟล์ที่แต่ละบรรทัดคือ 1 record และใน 1 record นั้นแบ่งเป็น field คั่นด้วยเครื่องหมายคอมม่า ,
ไฟล์ CSV นี้ล่ะครับ สามารถใช้แทนตารางในแบบ Database ได้ เพราะคุณสมบัติของ CSV เพียบพร้อมในการนําไปใช้งานด้านนี้อยู่แล้ว ท่านสามารถ convert หรือ save as จาก Excel มาเป็น CSV ได้ ไฟล์ที่ได้ก็เป็น text file อันหนึ่ง นามสกุล .csv ครับ... ข้างในก็จะแบ่งเป็นแถว ๆ แต่ละแถวก็จะแบ่งเป็น field คั่นด้วยเครื่องหมาย , ดังตัวอย่าง
Book1.CSV
4621005,นายวิภาส อริยะพงษ์
4621213,นายขวัญ เปลี่ยนเพ็ง
4621223,นายธงชัย ชาวัน
4621239,นามสมเกียรติ เรียมพินิจ
4621240,นายประมุข หลงสมบุญ
เห็นมั้ยครับ นี่คือตัวอย่างข้อมูลในไฟล์ .CSV ซึ่งเราสามารถใช้ PHP อ่านเข้ามาแล้ว show ออกมาเป็นหน้าเว็บได้เลย โดยไม่ต้องทําการ Connect เข้า mySQL หรือไม่ต้องใช้ mySQL ในการเก็บข้อมูล เพราะถ้าลําพังเราจะสร้างโปรแกรมที่แสดงข้อมูลแบบนี้ออกมาแล้ว ถ้าเราไม่มี mySQL เราก็ใช้ CSV นี้เก็บข้อมูลแทนได้
ฟังก์ชั่นในการอ่านข้อมูล .CSV ใน PHP ก็คือ fgetcsv ดังตัวอย่างต่อไปนี้
TESTCSV.PHP
<p>
<?
$FILE = fopen( "book1.csv", "r");
$data = fgetcsv( $FILE , 1024 );
do
{
print "code : $data[0] name : $data[1]<br>";
$data = fgetcsv( $FILE , 1024 );
}while ( !feof( $FILE ) );
?>
<hr>
จากข้างต้น จะเห็นว่าเราได้เขียนโปรแกรมให้แสดงข้อมูลใน CSV ชื่อ Book1.CSV ซึ่งก็เป็นการเปิดไฟล์ Text file ธรรมดา ๆ นี่เองล่ะครับ CSV ไม่ใช่ไฟล์อะไรที่มโหฬารนะครับ แต่เป็นเพียงแค่ text file แบบหนึ่งที่มีนามสกุล .csv เท่านั้น ข้างในจะมีการแบ่งเป็นบรรทัด ๆ ๆ ๆ และแต่ละบรรทัดก็แบ่งออกเป็นหลาย ๆ field แค่นั้นเอง เหมือนกับโครงสร้างของตารางในระบบ database ไงครับ
ดังนั้น ถ้าเราต้องการปรับปรุงระบบ CSV นี้มาเป็นระบบฐานข้อมูลเล็ก ๆ ที่ให้ Query ข้อมูลออกมาได้ ก็ไม่ยากครับ เพียงแค่ทําการรับค่าตัวแปรที่ต้องการค้นหาเข้ามทาง Query String จากนั้นก็เข้าไปค้นหาใน CSV คือ ค้นหาในไฟล์ถ้าเจอก็แสดงออกมา ถ้าไม่เจอก็ผ่านไป แบบนี้ครับ...
TESTCSV.PHP
<p>
<?
$FILE = fopen( "book1.csv", "r");
$data = fgetcsv( $FILE , 1024 );
do
{
if ( $data[0] == $id )
{
print "code : $data[0] name : $data[1]<br>";
break;
}
$data = fgetcsv( $FILE , 1024 );
}while ( !feof( $FILE ) );
?>
<hr>
ในกรณีที่เราต้องการแสดงข้อมูลของ ID ที่ 4621239 เวลาใช้เราก็เรียกแบบนี้ครับ
http://www.yourdomain.com/testcsv.php?id=4621239
มันก็จะวนและแสดงออกมาให้ ง่ายมั้ยครับ คราวนี้จะให้ดีเราก็สร้างเป็น Form ขึ้นมา เช่นรับรหัส นศ. เข้ามา เป็นตัวแปร $id และก็ให้ค้นจากไฟล์ CSV ในลักษณะนี้
เอาล่ะครับ ทดลองนําไปใช้กันดูนะครับ... บางครั้ง ถ้าเรารู้วิธีการบริหาร text file ดี ๆ เราก็อาจจะไม่ต้องพึ่ง mySQL หรือระบบ Database เสมอไปนะครับ.. แต่ถ้างานใหญ่ ๆ ที่ต้องการเก็บข้อมูลปริมาณมาก ๆ หรือต้องการเงื่อนไขเยอะ ๆ ในการ Query ล่ะก็ใช้ SQL ดีกว่าครับ...
Date :
16 ต.ค. 2550 17:20:19
By :
lomdx
จากคำถามเนี่ย ให้ดึง excel มาแสดงหน้าเว็บ หรือจะเอาข้อมูล excel มาแสดง กันแน่เนี่ย เห็นโค้ด แล้วงง
Date :
17 ต.ค. 2550 03:29:58
By :
ravatna
สามารถดึง excel มาแสดงหน้าเว็บเลยได้ไหมค่ะ แบบเราแก้ข้อมูลในไฟล์เดิม พอ save แล้วให้มันสามารถแสดง ขึ้นเว็บได้เลยอ่ะค่ะ
Date :
2011-08-05 13:26:06
By :
Elmo
Load balance : Server 02