【问题标题】:Get ID of newly-created worksheet?获取新创建的工作表的 ID?
【发布时间】:2012-10-23 16:05:44
【问题描述】:

我正在使用PHPExcel library打开现有的 Excel 电子表格,然后在其中创建一个新工作表

我正在使用的代码(不包括所有初始化/保存等,因为一切正常)如下:

#======================================================#
#  OPEN EXISTING EXCEL SPREADSHEET                     #
#======================================================#

    if (!file_exists( CURRENT_FILE )) {
        exit("Please run " . CURRENT_FILE . " first." . EOL);
    }

    echo date('H:i:s') , " Load from Excel2007 file" , EOL;
    $objPHPExcel = PHPExcel_IOFactory::load( CURRENT_FILE );

#======================================================#



#======================================================#
#  SET UP WORKSHEETS                                   #
#======================================================#

    echo date('H:i:s') , " Create new worksheet for month" , EOL;
    $objPHPExcel->createSheet();
    $objPHPExcel->getActiveSheet()->setTitle( date("d M", strtotime( $weeks[1] ) ) . ' - ' . date("d M", strtotime( $weeks[4] ) ) );

#======================================================#

我正在尝试做的是:

  • 打开现有的 Excel 文件(其中可能已经有 1 个或多个工作表)
  • 创建新工作表
  • 设置新工作表的标题
  • 向新工作表添加内容

然而,似乎正在发生的事情是这样的:

  • 打开现有的 Excel 文件
  • 创建一个新工作表
  • 将第一个工作表的标题设置为我设置的日期
  • 向第一个工作表添加内容

所以,我认为我需要做的是:

  • 打开现有的 Excel 文件
  • 添加新工作表
  • 获取新增工作表的ID(类似mysql_insert_id()的命令)
  • 将活动工作表设置为该 ID
  • 设置活动工作表的标题
  • 向活动工作表添加内容

但是,我似乎在 PHPExcel 文档中找不到这样的命令。一个存在吗?如果没有,是否有任何可行的解决方法?我不想覆盖此文档中的现有工作表。

提前致谢,

【问题讨论】:

  • PHPExcel 哪个版本?您使用的是最新的 1.7.8 版本吗?

标签: php phpexcel


【解决方案1】:

您可以利用 createSheet() 方法实际上返回您的新工作表这一事实。

$newMonthSheet = $objPHPExcel->createSheet();
$newMonthSheet->setTitle( date("d M", strtotime( $weeks[1] ) ) . ' - ' . date("d M", strtotime( $weeks[4] ) ) );

【讨论】:

  • 好极了。那么,对于添加内容,我是否只需使用$newMonthSheet->getActiveSheet()->setCellValue('A1', ''value' );
  • 啊 - 删除 getActiveSheet 命令,效果很好。如果您在 Mark 身边,还有一个问题 - 我如何将这个最新的工作表设置为 activeIndex,即 Excel 在您第一次打开文件时显示的工作表?
  • $newMonthSheet 是一个工作表对象,而不是工作簿对象,所以你不要对工作表调用 getActiveSheet() ......设置活动工作表,有 $objPHPExcel->setActiveSheetIndex($n ) 其中 $n 是您希望设置为活动工作表的工作表的索引,或者 ($objPHPExcel->setActiveSheetIndexByName($name) 其中 $name 是您为工作表指定的名称/标题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-05
相关资源
最近更新 更多