我正在尝试从下面的代码中更改导出到xlsx的所有工作表的名称。 导出工作正常,但所有工作表的标题只是工作表1,2,3等
我想从我的php数据库中获取“asset_name”列中的名称。
例如, worksheet1-> AAA
我希望它成为: asset1-> AAA
干杯,
/** 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++;
}
答案 0 :(得分:4)
mysql_query($query2)
返回结果集,因此您尝试将工作表标签设置为资源,而不是字符串。您需要从结果集中获取行以读取asset_column
的字符串值,如PHP的所有MySQL文档中所示
修改强>
要为每个资产名称提供一张新工作表,请使用以下内容:
$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++;
}
}
答案 1 :(得分:0)
我做了几乎相同的事情,但它没有给我一个结果。它只是在Excel中使用默认名称创建一个工作表。我需要一个来自数据库表的多工作表,其名称来自表。
$query = "select name from campaigns WHERE clients_id='77'";
$result = mysqli_query($con,$query) or die(mysqli_connect_error());
$objPHPExcel = new PHPExcel();
$prevName = NULL;
$objPHPExcel->removeSheetByIndex(0);
while ($row = mysqli_fetch_row($result)){
if ($row['name'] !== $prevName) {
$newsheet = $objPHPExcel->createSheet();
$newsheet->setTitle($row['name']);
$prevName=$row['name'];
}
}