2014-01-06 2 views
0

직원의 CRUD (작성, 읽기, 업데이트 및 삭제) 계정을 보여주는 UI가 있습니다. 이제 generate 단추를 추가하고 싶습니다. 클릭하면 UI 아래의 그리드 선에서 다음 데이터가 Excel 보고서를 사용하여 열리거나 저장되는지 묻는 창이 팝업으로 나타납니다. 또한 이미 EXcelPhp 라이브러리가 있어야합니다.js를 사용하여 Excel 파일을 생성하는 방법

여기 내 'actions.class.php'에 대한 내 코드입니다 :

지금까지 시도했습니다 무엇
public function executeLoadEmployeeList(sfWebRequest $request) 
{ 

    // $start = $request->getParameter('start') ? $request->getParameter('start'): 2; 
    // $limit = $request->getParameter('limit') ? $request->getParameter('limit'): 2; 
    $query = pg_escape_string($request->getParameter('query'));  
    $start = $request->getParameter('start'); 
    $limit = $request->getParameter('limit'); 

    if(isset($limit)) 
    { 
     $page = $start/$limit; 
     $page ++; 
    } 
    else 
     $page = 1; 


    $criteria = Doctrine_Query::create();//what is the query?? is it select,inset,update,delete? 
    $criteria->select("(fname || ' ' || lname) AS fullname, department"); 
    $criteria->from('Employees'); // Select * from profile 
    $criteria->orderBy('id'); // order by id 

    //print $criteria->getSqlQuery(); 
    //die(); 

    if($query!=null) 
     { 
     $criteria->where("(fname ilike '%$query%' or lname ilike '%$query%' or department ilike '%$query%')"); //where (uname ilike '%$query%' or status ilike '%$query%') 
     }    

    $allData = $criteria->fetchArray(); 


    // print "<pre>";  
    // print_r($allData); 
    // die(); 

    $this->pager = new sfDoctrinePager('Employees', 20); //what is sfdoctrine about? dont mind this.. this is a symphony built in class for pager 
    $this->pager->setQuery($criteria); 
    $this->pager->setPage($page); 
    $this->pager->init();//What is the purpose of this line? //initialize sfDoctrinePager 
    $result['data'] = $this->pager->getResults(); 

    $result['totalCount'] = count($allData); 
    $result['limit'] = $limit; 
    $result['page'] = $page; 
    $result['query'] = $query; 

    die(json_encode($result));  
} 

public function executeAddEmployee(sfWebRequest $request) 
{ 
    try{ 
     $fname = $request->getParameter('fname'); 
     $lname = $request->getParameter('lname'); 
     $department = $request->getParameter('department'); 

     $Employee = new Employees(); 
     $Employee->fname = $fname; 
     $Employee->lname = $lname; 
     $Employee->department = $department; 
     //save the data to the database 
     $Employee->save(); 

     $data = array("success"=> true, "data"=>"Employee Added."); 
    } 
    catch(Exception $e) 
    { 
     $data = array("success"=> false, "data"=>$e->getMessage()); 
    }  
     //$data is a return value of trycatch 
     die(json_encode($data)); 
} 

public function executeDeleteEmployee(sfWebRequest $request) 
{ 
    try{ 
     //what is Doctrine::getTable's purpose // to get the table profile 
     $this->forward404Unless($Employee = Doctrine::getTable('Employees')->find(array($request->getParameter('id'))), sprintf('Employee ID in Form does not exist (%s).', $request->getParameter('id')));  

     $Employee->delete(); 

     $data = array("success"=> true, "data"=>"Employee record is Deleted."); 
    } catch(Exception $e) { 
     $data = array("success"=> false, "data"=>$e->getMessage()); 
    } 
     //$data is a return value of trycatch 
     die(json_encode($data)); 
} 

public function executeEditEmployee(sfWebRequest $request) 
{ 
    try{ 
     $this->forward404Unless($Employee = Doctrine::getTable('Employees')->find(array($request->getParameter('id'))), sprintf('Employee ID in Form does not exist (%s).', array($request->getParameter('id')))); 

     $criteria = Doctrine_Query::create(); 
     $criteria->select('fname,lname,department'); 
     $criteria->from('Employees'); 
     $criteria->where('id = ?', $request->getParameter('id'));//('id = ?', $request->getParameter('id') means... id = $request->getParameter('id') 
     $result = $criteria->fetchArray(); 

     $record['fname'] = $Employee['fname']; 
     $record['lname'] = $Employee['lname']; 
     $record['department'] = $Employee['department']; 

     $data = array("success"=> true, "data"=>$record); 

    } catch(Exception $e) { 
     $data = array("success"=> false, "data"=>$e->getMessage()); 
    }  
     //$data is a return value of trycatch 
     die(json_encode($data)); 
} 

public function executeUpdateEmployee(sfWebRequest $request) 
{ 
    try{ 

     $Employee = Doctrine::getTable('Employees')->find(array($request->getParameter('id')));   
     $Employee->fname = $request->getParameter('fname'); 
     $Employee->lname = $request->getParameter('lname'); 
     $Employee->department = $request->getParameter('department'); 

     //save the update to the database 
     $Employee->save(); 

     $data = array("success"=> true, "data"=>"Employee Successfully Updated."); 
    } 
    catch(Exception $e) 
    { 
     $data = array("success"=> false, "data"=>$e->getMessage()); 
    }  
     //$data is a return value of trycatch 
     die(json_encode($data)); 
} 
public function executeGenerateEmployee(sfWebRequest $request) 
{ 
    // ... 



}** 

는 버튼을 생성 설정하고 아무런 조치가 아직 없습니다. 이 아래에 내 try.js :

var generateItem = new Ext.Action ({ 
    text: 'Generate Excel Report', 
    width: 60, 
    enabled: true, 
}); 

누군가가이 문제에 대해 좀 도와 주 시겠어요?

답변

0

서버 측 언어/스크립트를 사용하지 않고도 Excel 파일을 생성 할 수 없습니다. 어떻게 보일지 준비하고 쓰기, 삭제 등과 같은 기능을 추가하는 몇 가지 기능을 추가 할 수 있습니다.

+0

예, 서버를 사용하고 있습니다. 그건 그렇고, 내 프레임 워크에 symfony를 사용하고 있습니다. – sack

+0

어떤 확장/번들을 사용하십니까? –

0

서버 측 처리없이 Excel 스프레드 시트를 생성 할 수 있지만 브라우저 지원으로 지옥 같은 시간을 보낼 수 있습니다.

이론적으로 js 형식의 파일을 생성하는 것은 이론적으로 데이터 URI가 window.open 일뿐입니다.

여기에 다른 유사한 질문입니다 : 엑셀 데이터 URI에 대한 대부분의 브라우저에서 그러나 .. 그것은 아마도 지원되지 않을 수 있습니다

window.open('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAABlBMVEUAAAD///+l2Z/dAAAAM0lEQVR4nGP4/5/h/1+G/58ZDrAz3D/McH8yw83NDDeNGe4Ug9C9zwz3gVLMDA/A6P9/AFGGFyjOXZtQAAAAAElFTkSuQmCC'); 

:

예를 들어

여기에 자바 스크립트에서 생성 된 이미지의

Data URI used to export to CSV/Excel (no server-side request) : browser support/limitations?

관련 문제