I want to have my excel file filled with some data which I get from my database, for example the name and age of someone.
Say there are 10 people in my database. I want those 10 people in my Excel file.
So basically, you would get:
NAME AGE
Person1 20 years
Person2 25 years
And so on. I know how to set the NAME and AGE stuff, but how would I go about looping the data and writing it inside the excel file? I couldn't find anything about it in PHPExcel's documentation.
This is my MySQL:
$query = "SELECT * FROM bestelling";
$result = mysql_query($query) or die(mysql_error());
while($row = mysql_fetch_array($result)){
$name = $row['name'];
$age = $row['age'];
}
PHP provides a library to deal with Excel files. It is called PHP Excel library. It enables you to read and write spreadsheets in various formats including csv, xls, ods, and xlsx. You will need to ensure that you have PHP's upgraded version not older than PHP 5.2 .
Click File > Options > Advanced. , click Excel Options, and then click the Advanced category. Under Editing options, do one of the following: To enable Edit mode, select the Allow editing directly in cells check box.
I'm assuming you already have the excel object created. I'll call it $objPHPExcel to conform to their examples. In that case you can loop your result set and populate the spreadsheet this way:
$objPHPExcel = new PHPExcel();
$objPHPExcel->setActiveSheetIndex(0);
$rowCount = 1;
while($row = mysql_fetch_array($result)){
$objPHPExcel->getActiveSheet()->SetCellValue('A'.$rowCount, $row['name']);
$objPHPExcel->getActiveSheet()->SetCellValue('B'.$rowCount, $row['age']);
$rowCount++;
}
$objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
$objWriter->save('some_excel_file.xlsx');
EDIT: I have updated the example to provide a complete solution.
Here is complete code for create the excel file :
require "PHPExcel/Classes/PHPExcel.php";
require "PHPExcel/Classes/PHPExcel/Writer/Excel5.php";
$objPHPExcel = new PHPExcel();
// Set document properties
$objPHPExcel->getProperties()->setCreator("Govinda")
->setLastModifiedBy("Govinda")
->setTitle("Office 2007 XLSX Test Document")
->setSubject("Office 2007 XLSX Test Document")
->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.")
->setKeywords("office 2007 openxml php")
->setCategory("Test result file");
// Add some data
$objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(5);
$objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(30);
$objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(25);
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue('A1', 'Sr no')
->setCellValue('B1', 'Name')
->setCellValue('C1', 'Age')
// Miscellaneous glyphs, UTF-8
while($row = mysql_fetch_array($result)){
$objPHPExcel->getActiveSheet()->SetCellValue('A'.$rowCount, $row['name']);
$objPHPExcel->getActiveSheet()->SetCellValue('B'.$rowCount, $row['age']);
$rowCount++;
}
// Rename worksheet
$objPHPExcel->getActiveSheet()->setTitle('UserList');
// Set active sheet index to the first sheet, so Excel opens this as the first sheet
$objPHPExcel->setActiveSheetIndex(0);
// Redirect output to a client’s web browser (Excel5)
header('Content-Type: application/vnd.ms-excel; charset=UTF-8');
header('Content-Disposition: attachment;filename="userList.xls"');
header('Cache-Control: max-age=0');
// If you're serving to IE 9, then the following may be needed
header('Cache-Control: max-age=1');
// If you're serving to IE over SSL, then the following may be needed
header ('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past
header ('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT'); // always modified
header ('Cache-Control: cache, must-revalidate'); // HTTP/1.1
header ('Pragma: public'); // HTTP/1.0
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save('php://output');
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With