phpphpexcelsymfony4phpexcel-1.8.0

phpexcel to html only a portion


I'm working on phpexcel. The File I'm working on is from tally export file. I have to read this file and save the data to each user .

For example from this file I need only A2:G10 as HTML/TABLE. So i can display to the particular member (Adv. Chandra Mogan) individually.

I NEED A TABLE FOR ONLY A PORTION OF THE SHEET

What I have done so far:

protected function doExcelUpdate() {
    $inputFileName = $this->getParameter('temp_directory') . '/file.xls';
    if (!file_exists($inputFileName)) {
        $this->addFlash('sonata_flash_error', 'File: not found in temp directory');
        return;
    }

    $this->addFlash('sonata_flash_info', 'File: exist');
    try {
        $inputFileType = PHPExcel_IOFactory::identify($inputFileName);
        $objReader = PHPExcel_IOFactory::createReader($inputFileType);
        $objPHPExcel = $objReader->load($inputFileName);
    } catch (Exception $e) {
        $this->addFlash('sonata_flash_error', 'Error in PHPExcel');
        return;
    }

    $sheet = $objPHPExcel->getSheet(0);
    if (!$sheet) {
        $this->addFlash('sonata_flash_error', 'Error in reading sheet');
        return;
    }

    $objPHPExcel->getSheet(0)
        ->getStyle('A1:G10')
        ->getProtection()
        ->setLocked(
            PHPExcel_Style_Protection::PROTECTION_PROTECTED
        );

    $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'HTML');
    $objWriter->setSheetIndex(0);
    $objWriter->save($this->getParameter('temp_directory') . '/output.html');        
}

A1:G10 is not locked. Entire sheet is printed.


Solution

  • First point: "Locking" doesn't change the sheet size, or set a "view window"; it protects parts of the sheet from being edited.

    Second point: "Locking" is a feature of Excel, and supported for excel writers, but not for HTML.

    Third point: there is no direct mechanism to write only part of a worksheet.


    As a suggestion, you might create a new blank worksheet, and then copy the data/style information from the cell range that you want in your your main worksheet to that new worksheet starting from cell A1; then send that worksheet to the HTML Writer.