PHPEXCEL为所有工作表设置标题

时间:2013-10-13 23:48:21

标签: php mysql phpexcel

我正在尝试从下面的代码中更改导出到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++;
    }

2 个答案:

答案 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'];

}

}