0

i convert an excel file to HTML Table with PHPExcel (PHPspreadsheet) with Symfony 2.5

I'm trying to set a filter to only load the range ('A','N') , the first 13 columns. not working..

I'm also trying to set the Width of the 'N' Column. not working..

when i dump the column's width value is correct..

I can increase the columns width but not decrease them..

it looks like the text inside the cell is defining the cell's width automatically..

Here is my controller :

       public function showClientAction($client)
    {

        $excel = glob(''.path.'\\'.path.'\\filename_' .$client.'.{xlsx,xls,xlsm,xlsm.ink}', GLOB_BRACE);

        $filterSubset = new \PHPExcel_Reader_DefaultReadFilter(1,1000,range('A','N'));
        $objReader = \PHPExcel_IOFactory::createReaderForFile($excel[0]);
        $objReader->setReadFilter($filterSubset);
        /**  Read the list of worksheet names and select the one that we want to load  **/
        $worksheetList = $objReader->listWorksheetNames($excel[0]);
        $sheetname = $worksheetList[0];

        /**  Advise the Reader of which WorkSheets we want to load  **/
        $objReader->setLoadSheetsOnly($sheetname);

        $objPHPExcel = $objReader->load($excel[0]);

        $objPHPExcel->getActiveSheet()->getColumnDimensionByColumn('13')->setAutoSize(false);
        $objPHPExcel->getActiveSheet()->getColumnDimensionByColumn('13')->setWidth(2.5);

// OUTPUT is : int (13) applied correctly
        var_dump($objPHPExcel->getActiveSheet()->getColumnDimensionByColumn('13'));

        $writer = \PHPExcel_IOFactory::createWriter($objPHPExcel, "HTML");
        $writer->generateSheetData();
        $writer->generateStyles();

        return $this->render('SocPerfclientBundle:Default:testexcel.html.twig', array(
            'excelHtml'=>$writer,
            'stylesExcel'=>$writer,
            'client'=>$nom_client
        ));
    }

My filter :

    class PHPExcel_Reader_DefaultReadFilter implements PHPExcel_Reader_IReadFilter
{
    public $_startRow = 0;
    public $_endRow   = 0;
    public $_columns  = array();

    /**  Get the list of rows and columns to read  */
    public function __construct($startRow, $endRow, $columns) {
        $this->_startRow = $startRow;
        $this->_endRow   = $endRow;
        $this->_columns  = $columns;
    }

    public function readCell($column, $row, $worksheetName = '') {
        // Only read the rows and columns that were configured
        if ($row >= $this->_startRow && $row <= $this->_endRow) {
            if (in_array($column,$this->_columns)) {
                return true;
            }
        }
        return false;
    }
}

my view :

{{ excelHtml.generateSheetData | raw }}
{{ stylesExcel.generateStyles | raw }}

Here a screenshot html view : We can see the "RCA" column still having the initial width.. my setWidth isnt applied..

if i change the link by a shorter word like : yes.docx , the column decreases.

enter image description here

Simon Delaunay
  • 145
  • 1
  • 18

0 Answers0