Добавить выпадающий список в PHPExcel - PullRequest
0 голосов
/ 26 февраля 2020

Я хочу добавить раскрывающийся список в моей функции шаблона экспорта в Excel.

Я пытался добавить эти строки кодов, но они показывают ошибку,

Серьезность: Предупреждение

Сообщение: Обнаружено ненулевое значение c

Имя файла: Excel5 / Worksheet. php

$items = array ('one, two, three', 'four, five, six');
     $objValidation = $objPHPExcel->getActiveSheet()->getCell("C$curr_row")->getDataValidation();
     $objValidation->setType( PHPExcel_Cell_DataValidation::TYPE_LIST );
     $objValidation->setFormula1('"'.implode('","', $items).'"');

Вот мой контроллер функция

public function import_export_excel($token){

    $this->load->library('excel');
    $this->excel->setActiveSheetIndex(0);
    $this->excel->getActiveSheet()->setTitle('Inventory Data');


    $arr_row = array('Item Code *', 'Item Name * ', 'Barcode', 'Category *', 'Unit of Measurement *', 'Other Information', 'Reorder Point', 'Reorder Value', 'GL Account *', 'Price Category *', 'Price *', 'Supplier *', 'Supplier Unit of Measurement *', 'Cost *', 'Quantity Unit of Measurement *');
    $arr_cell = array('A1', 'B1', 'C1', 'D1', 'E1', 'F1', 'G1', 'H1', 'I1', 'J1', 'K1', 'L1', 'M1', 'N1', 'O1');
    $arr_dimension = array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O');

    for($x = 0; $x < count($arr_row); $x++){
        $this->excel->getActiveSheet()->setCellValue($arr_cell[$x], $arr_row[$x]);
        $this->excel->getActiveSheet()->getStyle($arr_cell[$x])->getFont()->setSize(10);
        $this->excel->getActiveSheet()->getColumnDimension($arr_dimension[$x])->setWidth(30);
        $this->excel->getActiveSheet()->getStyle($arr_cell[$x])->getFont()->setBold(true);
        $this->excel->getActiveSheet()->getStyle($arr_cell[$x])->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
    }


    $filename='inventory_data.xls'; 
    header('Content-Type: application/vnd.ms-excel'); 
    header('Content-Disposition: attachment;filename="'.$filename.'"'); 
    header('Cache-Control: max-age=0'); 

    $objWriter = PHPExcel_IOFactory::createWriter($this->excel, 'Excel5');  
    $objWriter->save('php://output');
}

Ответы [ 2 ]

0 голосов
/ 26 февраля 2020

Предполагая, что "getCell ('C'. $ Arr_cell [$ x]. '')" Возвращает Cn Cn + 1 Cn + 2 и т. Д. Как loopng через $ arr_row

, если проверка не требуется и хочет показывать только выпадающие списки: =

$ items = array ('один, два, три', 'четыре, пять, шесть');

для ($ x = 0; $ x

            $objVal = $this->excel->getActiveSheet()->getCell('C'.$arr_cell[$x])->getDataValidation();
            $objVal->setType( PHPExcel_Cell_DataValidation::TYPE_LIST );
            $objVal->setShowDropDown(true);
            $objVal->setFormula1('"'. implode(',',$items).'"');

        }
0 голосов
/ 26 февраля 2020

Чтобы ввести Dropdown в свой лист Excel

$items = array ('one, two, three', 'four, five, six');
    for($x = 0; $x < count($arr_row); $x++){

                $objValidation1 = $this->excel->getActiveSheet()->getCell('C'.$arr_cell[$x].'')->getDataValidation();
                $objValidation1->setType( PHPExcel_Cell_DataValidation::TYPE_LIST );
                $objValidation1->setErrorStyle( PHPExcel_Cell_DataValidation::STYLE_INFORMATION );
                $objValidation1->setAllowBlank(false);
                $objValidation1->setShowInputMessage(true);
                $objValidation1->setShowErrorMessage(true);
                $objValidation1->setShowDropDown(true);
                $objValidation1->setErrorTitle('Input error');
                $objValidation1->setError('Value is not in list.');
                $objValidation1->setPromptTitle('Pick from list');
                $objValidation1->setPrompt('Please pick a value from the drop-down list.');
                $objValidation1->setFormula1('"'. implode(',',$items).'"');

            }

Надеюсь, это поможет вам

...