Skip to main content

Custom export into excel in Yii Framework


Hello Friend, In one my project developed in yii. I was struggling to export the cgridview data into excel. I searched many plugin and read the tutorial.
But not get proper solution specially with relational data from one or many models (database tables). I try eexcelview, toexcel etc. yii plugin but it was really slow specially on large data fetch and also not getting proper excel format. After spending some time, i planed to write my own custom export in excel code in yii framework.

1. In model search function define session global variable and store active search data (set pagination false so you will get all the record without paging)
public function search()
{
 $criteria=new CDbCriteria;
 $criteria->compare('vendor_debit_id',$this->vendor_debit_id);
 $criteria->compare('hotel_id',$this->hotel_id);
 $criteria->compare('supplier_name',$this->supplier_name,true);
 $criteria->compare('debit_amount',$this->debit_amount);
 $criteria->compare('bal_before_debit',$this->bal_before_debit);
 $criteria->compare('bal_after_debit',$this->bal_after_debit);
 $criteria->compare('debit_sheet_no',$this->debit_sheet_no,true);
 $criteria->compare('created_on',$this->created_on,true);
 $criteria->compare('admin_id',$this->admin_id);
 $data = new CActiveDataProvider($this, array(
 'criteria'=>$criteria,
 ));
 $_SESSION['vendor_debit_export_excel'] = new CActiveDataProvider($this, array('criteria' => $criteria, 'pagination' => false));;
 return $data;
}


2. Open controller class and define function for export in excel. Remember for unset session variable into the end for you controller function before end the function execution.
public function actionExport_excel()
{
 if(isset($_SESSION['vendor_debit_export_excel'])):
 header("Content-type: application/vnd.ms-excel");
 header("Content-Disposition: attachment;Filename=vendor-debit-report.xls");
 $dataProvider = $_SESSION['vendor_debit_export_excel'];
 $data = array();
 foreach($dataProvider->getData() as $record) {
 $data[] = array(
 'vendor_debit_id'=>$record->vendor_debit_id,
 'hotel_id'=>$record->hotel->name,
 'supplier_name'=>$record->supplier_name,
 'debit_amount'=>$record->debit_amount,
 'bal_before_debit'=>$record->bal_before_debit,
 'bal_after_debit'=>$record->bal_after_debit,
 'debit_sheet_no'=>$record->debit_sheet_no,
 'admin_id'=>Users::model()->usernameWithName($record->admin_id),
 'created_on'=>Yii::app()->dateFormatter->format("d/MM/y, h:m a", strtotime($record->created_on))
 );
 }
 echo $this->renderPartial('//hotelvendordebit/vendor_debit_excel',array('excel_data'=>$data));
 unset($_SESSION['vendor_debit_export_excel']);    
 Yii::app()->end();
 else:
 throw new CHttpException(500,'An error occurred in fetching data. please try later'); // Error message as per your convenient
 endif;
}


3. Now the final create and rederpartial view file into your relative view folder and pass the data(in array).
<html>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252">
<body>
 <table border="1" cellpadding="5" style="font-size:10px;font-family:tahoma,arial;" cellspacing="0" bordercolor="#666666">
 <tr>
 <td align="center"><strong>Debit ID</strong></td>
 <td align="center"><strong>Hotel</strong></td>
 <td align="center"><strong>Supplier Name</strong></td>
 <td align="center"><strong>Debit Amount</strong></td>
 <td align="center"><strong>Balance Before Debit</strong></td>
 <td align="center"><strong>Balance After Debit</strong></td>
 <td align="center"><strong>Debit Sheet No.</strong></td>
 <td align="center"><strong>Create/ Update User</strong></td>
 <td align="center"><strong>Created On</strong></td>
 </tr>
 <?php
 if(isset($excel_data)):
 for($i=0;$i<count($excel_data);$i++):
 print_r($data);
 ?>
 <tr>
 <td><?php echo $excel_data[$i]["vendor_debit_id"];?></td>
 <td><?php echo $excel_data[$i]["hotel_id"];?></td>
 <td><?php echo $excel_data[$i]["supplier_name"];?></td>
 <td><?php echo $excel_data[$i]["debit_amount"];?></td>
 <td><?php echo $excel_data[$i]["bal_before_debit"];?></td>
 <td><?php echo $excel_data[$i]["bal_after_debit"];?></td>
 <td><?php echo $excel_data[$i]["debit_sheet_no"];?></td>
 <td><?php echo $excel_data[$i]["admin_id"];?></td>
 <td><?php echo $excel_data[$i]["created_on"];?></td>
 </tr>
 <?php
 endfor;
 endif;
 ?>
 </table>
</body>
</html>    


If you find any difficulty to problem in integration. Please put comment or mail us on info@ezeelive.com. We will feel happy to help you any problem relation with yii framework.

Comments

  1. I’m not sure where you’re getting your information and facts, but excellent subject. I need to make investments a while studying more or knowing more. Thanks for excellent information

    Wordpress Developers in Bangalore | Wordpress Development Bangalore

    ReplyDelete

Post a Comment

Popular posts from this blog

The rise of generative AI startups in India and their impact on businesses

Generative AI startups are reshaping India’s business landscape , driving automation, personalization, and efficiency across industries. With advancements in deep learning, NLP, and computer vision, Indian startups are leveraging Generative AI to create innovative solutions in content creation, healthcare, fintech, e-commerce, and more . 1. The Boom of Generative AI Startups in India Several AI-driven startups in India are developing cutting-edge generative AI models , backed by increasing investments and government support. The rise of Digital India, AI-for-All, and startup incubators has accelerated AI innovation. 2. Key Generative AI Startups in India Ezeelive Technologies Expertise : AI-powered chatbot development and generative AI automation. Impact : Enhances customer engagement, automation, and AI-driven interactions for businesses. Writesonic Expertise : AI-driven content generation for blogs, ads, and copywriting. Impact : Automates content creation for businesses, reducin...

NLP-Based Chatbot Development: A Comprehensive Guide

  Natural Language Processing (NLP)-based chatbots are transforming customer interactions, automating support services, and enhancing business operations across various industries. These chatbots leverage AI and machine learning to understand, interpret, and respond to human language effectively. This article provides a detailed overview of NLP-based chatbot development, its benefits, key components, and the development process. What is an NLP-Based Chatbot? An NLP-based chatbot is a conversational agent powered by Natural Language Processing, a subset of AI that enables machines to understand, process, and generate human language. Unlike rule-based chatbots that follow predefined scripts, NLP chatbots analyze user input, recognize intent, and provide meaningful responses dynamically. Benefits of NLP-Based Chatbots Enhanced User Experience: NLP chatbots provide human-like conversations, making interactions more engaging and efficient. 24/7 Availability: Unlike human agents, these...

API Development with PHP: Everything You Need to Know

Application Programming Interfaces (APIs) are essential for modern web applications, enabling seamless communication between different services and platforms. PHP, being a powerful and flexible server-side scripting language, provides various tools and frameworks for building robust APIs. This article covers everything you need to know about API development with PHP, from fundamentals to best practices. Understanding APIs An API acts as an intermediary between different software applications, allowing them to communicate effectively. APIs can be categorized into different types, such as: REST (Representational State Transfer): Uses HTTP methods (GET, POST, PUT, DELETE) for communication. SOAP (Simple Object Access Protocol): A protocol that relies on XML messaging. GraphQL: A query language developed by Facebook for APIs that provides more flexibility. Setting Up a PHP API Development Environment Before developing an API with PHP, you need to set up a development environment. The fo...