【问题标题】:PHPEXCEL Set title for all worksheetsPHPEXCEL 为所有工作表设置标题
【发布时间】:2013-10-13 23:48:21
【问题描述】:

我正在尝试更改从下面的代码中导出到 xlsx 的所有工作表的名称。 导出工作正常,但所有工作表的标题只是工作表 1、2、3 等

我想从我的 php 数据库中的“asset_name”列中获取名称。

例如, 工作表1->aaa

我希望它变成: 资产1-> 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++;
    }

【问题讨论】:

    标签: php mysql phpexcel


    【解决方案1】:
    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++;
        }
    }
    

    【讨论】:

      【解决方案2】:

      我做了几乎相同的事情,但它没有给我一个结果。它只是在 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'];
      
      }
      

      }

      【讨论】:

      • 有问题吗?然后问一个问题,而不是一个答案。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-14
      • 2018-12-03
      • 2015-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多