6

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

2 回答 2

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++;
    }
}
于 2013-10-13T23:54:59.000 回答
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'];

}

}

于 2014-08-26T08:16:45.017 回答