มีปัญาหาการ export ไฟล์ excel ครับ Fatal error: Uncaught exception 'com_exception' with message '<b>Source:</b> Microsoft Office Excel<br/><b>Description:</b> Unable to get the SaveAs property of the Workbook class'
Code (PHP)
<? session_start(); ?>
<html>
<head><title>Report To Excel</title></head>
<body>
<table border=0 align=center width=800>
<tr>
<td>
<?
include "connect.php";
include "check_user.php";
?>
</td>
</tr>
<tr><td> </td></tr>
<!-- convert month & year --><? ?>
<?
mysql_query( "use project" ); //or $objDB = mysql_select_db("evaluate");
if($_SESSION["SU_Status"]=='Administrator')// Show_plan code
{
$result=mysql_query("select * from course where Start_Date like '$_SESSION[syear]-$_SESSION[smonth]-%' order by Start_Date ");
}
else if($_SESSION["SU_Status"]=='Boss')
{ $SU_ID = $_SESSION["SU_ID"];
$result=mysql_query("select * from course where SU_ID = '$SU_ID'+4 and Start_Date like '$_SESSION[syear]-$_SESSION[smonth]-%' order by Start_Date ");
}
else if($_SESSION["SU_Status"]=='User')
{ $SU_ID = $_SESSION["SU_ID"];
$result=mysql_query("select * from course where SU_ID = $SU_ID and Start_Date like '$_SESSION[syear]-$_SESSION[smonth]-%' order by Start_Date ");
}
if( $result )
{
//*** Get Document Path ***//
$strPath = realpath( "/AppServ/www/Project" );
//*** Excel Document Root ***//
$strFileName = "Report/รายงาน$_SESSION[SU_User] $_SESSION[smonth] $_SESSION[syear].xls";
//*** Connect to Excel.Application ***//
$xlApp = new COM("Excel.Application");
$xlBook = $xlApp->Workbooks->Add();
//*** Create Sheet 1 ***//
$xlBook->Worksheets(1)->Name = "Report";
$xlBook->Worksheets(1)->Select;
//*** Width & Height (A1:A1) ***//
$xlApp->ActiveSheet->Range("A1:A1")->ColumnWidth = 23.0;
$xlApp->ActiveSheet->Range("B1:B1")->ColumnWidth = 13.0;
$xlApp->ActiveSheet->Range("C1:C1")->ColumnWidth = 13.0;
$xlApp->ActiveSheet->Range("D1:D1")->ColumnWidth = 12.0;
$xlApp->ActiveSheet->Range("E1:E1")->ColumnWidth = 13.0;
$xlApp->ActiveSheet->Range("F1:F1")->ColumnWidth = 12.0;
$xlApp->ActiveSheet->Range("G1:G1")->ColumnWidth = 12.0;
$xlApp->ActiveSheet->Range("H1:H1")->ColumnWidth = 12.0;
$xlApp->ActiveSheet->Range("I1:I1")->ColumnWidth = 12.0;
$xlApp->ActiveSheet->Range("J1:J1")->ColumnWidth = 12.0;
$xlApp->ActiveSheet->Range("K1:K1")->ColumnWidth = 12.0;
//*** Report Title ***//
$xlApp->ActiveSheet->Range("A1:K1")->BORDERS->Weight = 2;
$xlApp->ActiveSheet->Range("A1:K1")->MergeCells = True;
$xlApp->ActiveSheet->Range("A1:K1")->Font->Bold = True;
$xlApp->ActiveSheet->Range("A1:K1")->Font->Name = "Angsana New";
$xlApp->ActiveSheet->Range("A1:K1")->Font->Size = 18;
$xlApp->ActiveSheet->Range("A1:K1")->HorizontalAlignment = -4108;
$xlApp->ActiveSheet->Cells(1,1)->Value = "สรุปผลการประเมินการฝึกอบรม งวดเดือน$_SESSION[smonth] / $_SESSION[syear]";
//*** Header ***//
$xlApp->ActiveSheet->Range("A2:K2")->BORDERS->Weight = 2;
$xlApp->ActiveSheet->Range("A2:K2")->Font->Bold = True;
$xlApp->ActiveSheet->Range("A2:K2")->Font->Name = "Angsana New";
$xlApp->ActiveSheet->Range("A2:K2")->Font->Size = 16;
$xlApp->ActiveSheet->Range("A2:K2")->HorizontalAlignment = -4108;
$xlApp->ActiveSheet->Range("A2:K2")->VerticalAlignment = -4108;
$xlApp->ActiveSheet->Cells(2,1)->Value = "ชื่อหลักสูตรหัวข้อวิชา";
$xlApp->ActiveSheet->Cells(2,2)->Value = "วันเริ่มต้น";
$xlApp->ActiveSheet->Cells(2,3)->Value = "วันสุดท้าย";
$xlApp->ActiveSheet->Cells(2,4)->Value = "ชื่อสถานที่";
$xlApp->ActiveSheet->Cells(2,5)->Value = "จำนวนผู้ฝึกอบรม";
$xlApp->ActiveSheet->Cells(2,6)->Value = "ด้านวิทยากร";
$xlApp->ActiveSheet->Cells(2,7)->Value = "ด้านเนื้อหา";
$xlApp->ActiveSheet->Cells(2,8)->Value = "ด้านบริการ";
$xlApp->ActiveSheet->Cells(2,9)->Value = "ค่าเฉลี่ยรวม";
$xlApp->ActiveSheet->Cells(2,10)->Value = "ความเหมาะสะสมด้านเวลา";
$xlApp->ActiveSheet->Cells(2,11)->Value = "ร้อยละแบบประเมินที่ได้รับ";
$xlApp->ActiveSheet->Range( "A3:K3" )->BORDERS->Weight = 2;
$xlApp->ActiveSheet->Range( "A3:K3" )->MergeCells = True;
$xlApp->ActiveSheet->Range("A3:K3")->Font->Name = "Angsana New";
$xlApp->ActiveSheet->Range("A3:K3")->Font->Size = 16;
$xlApp->ActiveSheet->Range( "A3:K3" )->Font->Bold = True;
$xlApp->ActiveSheet->Range( "A3:K3" )->VerticalAlignment = -4108;
$xlApp->ActiveSheet->Range( "A3:K3" )->HorizontalAlignment = -4108;
$xlApp->ActiveSheet->Cells(3,1)->Value = $_SESSION['username'] . ".";
//***********//
$intRows = 4;
while( $rec = mysql_fetch_array( $result ) )
{
//*** Detail ***//
if( $rec['Generation'] == '0' )
{
$xlApp->ActiveSheet->Cells($intRows,1)->Value = $rec['Course_Name'] . " / " . $rec['Subject_Name'];
$xlApp->ActiveSheet->Cells($intRows,1)->BORDERS->Weight = 2;
$xlApp->ActiveSheet->Cells($intRows,1)->EntireColumn->AutoFit;
}
else
{
$xlApp->ActiveSheet->Cells($intRows,1)->Value = $rec['Course_Name'] . " / " . $rec['Subject_Name'] . " รุ่นที่ " . $rec['Generation'];
$xlApp->ActiveSheet->Cells($intRows,1)->BORDERS->Weight = 2;
$xlApp->ActiveSheet->Cells($intRows,1)->EntireColumn->AutoFit;
}
$Syear=substr("$rec[Start_Date]",0,4); // Start date
$Smonth=substr("$rec[Start_Date]",5,2);
$Sdate=substr("$rec[Start_Date]",8,9);
$Eyear=substr("$rec[End_Date]",0,4); // End date
$Emonth=substr("$rec[End_Date]",5,2);
$Edate=substr("$rec[End_Date]",8,9);
$xlApp->ActiveSheet->Cells($intRows,2)->Value = "$Sdate/$Smonth/$Syear";
$xlApp->ActiveSheet->Cells($intRows,2)->BORDERS->Weight = 2;
$xlApp->ActiveSheet->Cells($intRows,3)->Value = "$Edate/$Emonth/$Eyear";
$xlApp->ActiveSheet->Cells($intRows,3)->BORDERS->Weight = 2;
$xlApp->ActiveSheet->Cells($intRows,4)->Value = $rec['Location'];
$xlApp->ActiveSheet->Cells($intRows,4)->BORDERS->Weight = 2;
$xlApp->ActiveSheet->Cells($intRows,4)->EntireColumn->AutoFit;
$xlApp->ActiveSheet->Cells($intRows,5)->Value = $rec['Amount'];
$xlApp->ActiveSheet->Cells($intRows,5)->BORDERS->Weight = 2;
$sql = mysql_query( "select AVG(Pointa1), AVG(Pointa2), AVG(Pointa3), AVG(Pointa4), AVG(Pointb1), AVG(Pointb2), AVG(Pointb3), AVG(Pointc1), AVG(Pointc2), AVG(Pointc3), AVG(Pointc4), AVG(Point_Overall) from evaluate_general where Course_ID = $rec[Course_ID] " );
$point = mysql_fetch_array( $sql );
$avggroup1 = ( $point[0]+$point[1]+$point[2]+$point[3] ) / 4;//คำนวนหาค่าเฉลี่ยต่อหมวด
$avggroup2 = ( $point[4]+$point[5]+$point[6] ) / 3;
$avggroup3 = ( $point[7]+$point[8]+$point[9]+$point[10] ) / 4;
$avgall = ( $point[0] + $point[1] + $point[2] + $point[3] + $point[4] + $point[5] + $point[6] + $point[7] + $point[8] + $point[9] + $point[10] + $point[11] + $point[12] ) / 12;//คำนวณหาค่าเฉลี่ยรวม
$avg1 = round( $avggroup1, 2 );
$avg2 = round( $avggroup2, 2 );
$avg3 = round( $avggroup3, 2 );
$avg_all = round( $avgall, 2 );
$xlApp->ActiveSheet->Cells($intRows,6)->Value = $avg1;
$xlApp->ActiveSheet->Cells($intRows,6)->BORDERS->Weight = 2;
$xlApp->ActiveSheet->Cells($intRows,7)->Value = $avg2;
$xlApp->ActiveSheet->Cells($intRows,7)->BORDERS->Weight = 2;
$xlApp->ActiveSheet->Cells($intRows,8)->Value = $avg3;
$xlApp->ActiveSheet->Cells($intRows,8)->BORDERS->Weight = 2;
$xlApp->ActiveSheet->Cells($intRows,9)->Value = $avg_all;
$xlApp->ActiveSheet->Cells($intRows,9)->BORDERS->Weight = 2;
$p13 = mysql_fetch_array( mysql_query("select count(Time) from evaluate_general where Course_ID = $rec[Course_ID] ") );//นับใบประเมินทั้งหมดของหลักสูตรนี้
if ($p13[0]=='0')//กรณีที่ นับจำนวนใบประสานงานแล้วมีค่าเป็น 0
{
$p13[0]=1;//กำหนดค่า ให้เป็น 1 เพราะตัวหารไม่สามารถมีค่าเป็น0ได้
}
$p13good = mysql_fetch_array( mysql_query("select count(Time) from evaluate_general where Course_ID = $rec[Course_ID] and Time ='1' ") );//หาจำนวนใบที่เหมาะสม
$pergood = $p13good[0]*100/$p13[0]; //คำนวนเป็นเปอร์เซ็น
$per_good = round($pergood,2);
$xlApp->ActiveSheet->Cells($intRows,10)->Value = $per_good;
$xlApp->ActiveSheet->Cells($intRows,10)->BORDERS->Weight = 2;
$numeva = mysql_num_rows(mysql_query("select * from evaluate_general where Course_ID = $rec[Course_ID] "));//นับใบประเมิน
$pereva=$numeva*100/$rec[Amount];
$per_eva = round( $pereva,2 );
$xlApp->ActiveSheet->Cells($intRows,11)->Value = $per_eva;
$xlApp->ActiveSheet->Cells($intRows,11)->BORDERS->Weight = 2;
$intRows++;
} // End while
@unlink($strFileName); //*** Delete old files ***//
$xlBook->SaveAs($strPath."/".$strFileName); //*** Save to Path ***//
//*** Close & Quit ***//
$xlApp->Application->Quit();
$xlApp = null;
$xlBook = null;
$xlSheet1 = null;
} // End if
?>
<tr><td align = center><b><a href="<?=$strFileName?>">คลิ๊กเพื่อดาวน์โหลด</a> รายงานสรุปผลการประเมินการฝึกอบรม ประจำเดือน <? echo "$_SESSION[smonth] / $_SESSION[syear]" ?></b></td></tr>
</table>
</body>
</html>
ผมได้เขียนโค้ดตามนี้ พอลองเปิด มันก็ขึ้นเออเร่อครับ
Fatal error: Uncaught exception 'com_exception' with message '<b>Source:</b> Microsoft Office Excel<br/><b>Description:</b> Unable to get the SaveAs property of the Workbook class' in C:\AppServ\www\Project\report_general_excel.php:191 Stack trace: #0 C:\AppServ\www\Project\report_general_excel.php(191): variant->SaveAs('C:\AppServ\www\...') #1 {main} thrown in C:\AppServ\www\Project\report_general_excel.php on line 191
ไม่ทราบว่าผิดตรงไหนครับ
รบกวนด้วยนะครับ
ขอบคุณมากครับTag : - - - -
Date :
2010-04-21 10:51:46
By :
l3oatsu
View :
2325
Reply :
10
ขอบคุณครับ จะลองไปทำดูนะครับ
Date :
2010-04-21 13:22:07
By :
l3oatsu
เพิ่มเติมครับ
ผมทำใน windows 7 ก็ขึ้นเออเร่อตามที่บอกไว้ครับ
แต่พอไปลองรันในเครื่องอื่นที่ใช้ windows xp ได้แล้วครับ
เห็นมีคนเคยเป็นแบบนี้เหมือนกัน อาการเดียวกับผมเลย
คาดว่าน่าจะเป็นที่ตัววินโดว์ นะครับ
Date :
2010-04-23 14:38:28
By :
l3oatsu
โหลด PHP_Excel มาใช้ดีกว่าครับ ใช้ได้ทั้ง Windows และ Linux
Date :
2010-04-23 14:49:08
By :
plakrim
PHP_Excel สามารถสร้างกราฟได้ป่าวครับ
Date :
2011-03-07 11:02:03
By :
emozerorise
เดียวขอปรับ Code ให้รองรับ Windows 7 ด้วยดีกว่า
Date :
2011-03-07 11:34:54
By :
webmaster
ขอดูด้วยน่ะครับ ^^
Date :
2011-03-08 10:02:52
By :
emozerorise
แก้ไม่ถูกเลยเป็นเหมือนกัน
Date :
2011-09-12 09:57:31
By :
bigcrazie
ภายใน 1-2 วันนี้จะปรับให้รองรับ Office 2007 + Windows 7 ครับ เสร็จแล้วเดียวจะนำมาโพสให้ครับ
Date :
2011-09-12 10:11:39
By :
webmaster
Load balance : Server 04