簡體   English   中英

PHPExcel - 復制列范圍

[英]PHPExcel - copy range of columns

我有Excel文件,我需要通過復制excat列范圍來擴展空間。

在此輸入圖像描述

我上傳了一張可以在圖片中看到的文件的一部分。 我需要將行從A16復制到H16並將其設置在下面(A17到H17),這樣它會自動移動到下面的其他列。

這是我嘗試過的一個例子。 他們都沒有工作。

   $appPath = $this->container->getParameter('kernel.root_dir');
        $webPath = realpath($appPath . '/../web/uploads/statements/the-file.xlsx');
    $phpExcelObject = $this->get('phpexcel')->createPHPExcelObject($webPath);

        $phpExcelObject->getActiveSheet()->insertNewRowBefore(16,16);
        $phpExcelObject->getActiveSheet()->duplicateStyle($phpExcelObject->getActiveSheet()->getStyle('A16'), 'A16:H16');

    $writer = $this->get('phpexcel')->createWriter($phpExcelObject, 'Excel2007');
    $response = $this->get('phpexcel')->createStreamedResponse($writer);
    $dispositionHeader = $response->headers->makeDisposition(
        ResponseHeaderBag::DISPOSITION_ATTACHMENT,
        'the-file.xlsx'
    );
    $response->headers->set('Content-Type', 'text/vnd.ms-excel; charset=utf-8');
    $response->headers->set('Cache-Control', 'maxage=1');
    $response->headers->set('Content-Disposition', $dispositionHeader);

    return $response;

Api調用工作,確切地說,它使用更新的編輯來下載該文件但是復制行的部分不起作用..

查看PhpExcel上的參數和示例- 如何在行N之后插入相同的行? 我認為你的參數是不正確的,我認為insertNewRowBefore()有參數插入點和行數,所以在你的情況下這應該是16和1。 另外, duplicateStyle()調用應該是你想要更新的行,而不是單元格的范圍 - 我已經把'A15',但這可能需要調整。

    $phpExcelObject->getActiveSheet()->insertNewRowBefore(16,1);
    $phpExcelObject->getActiveSheet()->duplicateStyle($phpExcelObject->getActiveSheet()->getStyle('A16'), 'A15');

更新:

如果你想復制數據,我已經重寫了它以減少重復位,但是從你要復制的行開始。 然后在此之前插入一行,然后使用getHighestColumn()創建一個覆蓋所有行的范圍以獲取行的結尾。 然后它會為您復制此范圍。

$copyFrom= "4";
$activeSheet = $objPHPExcel->getActiveSheet();
$activeSheet->insertNewRowBefore($copyFrom,1);
$activeSheet->duplicateStyle($activeSheet->getStyle('A'.($copyFrom+1)), 'A'.$copyFrom);
$lastColumn = $objPHPExcel->getActiveSheet()->getHighestColumn();
$rangeFrom = 'A'.($copyFrom+1).':'.$lastColumn.($copyFrom+1);
$activeSheet->fromArray($activeSheet->rangeToArray($rangeFrom), null, 'A'.$copyFrom);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM