I'm trying to change the name of all the worksheets exported into xlsx from my code below. The export works fine, but the title of all the worksheets are just worksheet 1, 2, 3, etc
I want to grab the names from the column "asset_name" from my php database.
Eg, worksheet1->aaa
i want it to become: asset1-> aaa
Cheers,
/** Query 1.0 */
$query = "SELECT * FROM asset_register";
$query2 = "SELECT asset_name FROM asset_register";
if ($result = mysql_query($query) or die(mysql_error())) {
/** Create a new PHPExcel object 1.0 */
$objPHPExcel = new PHPExcel();
$objPHPExcel->getActiveSheet()->setTitle('Data');
}
/** Loop through the result set */
$rowNumber = 1; //start in row 1
$objPHPExcel->removeSheetByIndex(0);
while ($row = mysql_fetch_row($result)) {
$newsheet = $objPHPExcel->createSheet();
$col = 'A'; // start at column A
$objPHPExcel->getActiveSheet()->setTitle(mysql_query($query2));
foreach($row as $cell) {
$newsheet->setCellValue($col.$rowNumber,$cell);
$col++;
}
mysql_query($query2)
returns a resultset, so you're trying to set the worksheet label to a resource, not to a string. You need to fetch the row from the resultset to read the string value for asset_column
as shown in all the MySQL documentation for PHP
EDIT
To give yourself a new sheet for each asset name, use something like:
$prevAssetName = NULL;
$objPHPExcel->removeSheetByIndex(0);
while ($row = mysql_fetch_row($result)) {
if ($row['asset_name'] !== $prevAssetName) {
$newsheet = $objPHPExcel->createSheet();
$newsheet->setTitle($row['asset_name']);
$prevAssetName = $row['asset_name'];
}
$col = 'A'; // start at column A
foreach($row as $cell) {
$newsheet->setCellValue($col.$rowNumber,$cell);
$col++;
}
}
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