【问题标题】:Get named ranges in PHPExcel在 PHPExcel 中获取命名范围
【发布时间】:2014-11-13 10:57:15
【问题描述】:

使用 PHPExcel,我想遍历工作簿中的所有命名范围,然后为每个范围创建一个新选项卡。

我目前正在使用宏在 excel 中执行此操作,如下所示:

Dim sheetName As String
sheetName = ActiveSheet.Name

Dim nName As Name

For Each nName In Names
    If InStr(1, nName.RefersTo, sheetName) > 0 Then
        Application.Goto Reference:=nName.Name
        Selection.Copy
        Sheets.Add After:=Sheets(Sheets.Count)
        ActiveSheet.Name = nName.Name
        Selection.PasteSpecial Paste:=xlPasteValues
    End If
Next nName
mystring = Sheets(1).Name
ActiveWorkbook.SaveCopyAs Filename:="P:\DP\CWBI\" & mystring & "_parsed.xls"

我可以遍历 PHPExcel 中的活动工作表并将它们转储到一个数组中进行处理,如下所示:

$objReader = PHPExcel_IOFactory::createReader('Excel2007');
$sheets = $objReader->listWorksheetNames($file);

print_r ($sheets);

有谁知道是否可以遍历所有命名范围?

编辑:

我正在尝试下面的第一个建议,但没有得到任何输出。代码如下:

$file="span_test.xlsx";
$objPHPExcel = PHPExcel_IOFactory::load($file);

foreach($objPHPExcel->getNamedRanges() as $name => $namedRange) {
   echo $namedRange . "</br>";   
}

现在可以工作了,我在尝试回显对象时出错了。应该是

print_r($name)

【问题讨论】:

    标签: php phpexcel


    【解决方案1】:

    您必须实际加载工作簿才能访问命名范围

    foreach($objPHPExcel->getNamedRanges() as $name => $namedRange) { ... }
    

    为每个命名范围返回一个 PHPExcel_NamedRange 对象

    【讨论】:

    • 我已经尝试了你的建议,但我没有得到任何输出。见上文。我一定做错了什么。
    • $namedRange 将是一个 PHPExcel_NamedRange 对象,而不是像字符串这样的标量值。 echo "'", $namedRange-&gt;getWorksheet(), "'!", $namedRange-&gt;getRange();
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-21
    • 1970-01-01
    • 2017-02-03
    • 1970-01-01
    • 1970-01-01
    • 2013-01-04
    • 1970-01-01
    相关资源
    最近更新 更多