Как расширить ограничение строки, преобразуя его из базы данных MYSQL, чтобы преуспеть в раскрывающемся списке с помощью PHP - PullRequest
0 голосов
/ 04 февраля 2019

Я пытаюсь получить данные MySQL в файл Excel в виде выпадающего списка, но у меня проблемы с ограничением строки.Файл Excel будет поврежден, если ограничение строки превысит 255. Вот мой код:

foreach ($sequence as $sequence_no) {
if ($pattern_record['attribute_' . $sequence_no . '_name'] != "") {
    $cell = $objWorkSheet->getCell($column . $row);
    $cell->setValue($pattern_record['attribute_' . $sequence_no . '_name']);
    if (!empty($pattern_record['attribute_' . $sequence_no . '_variable_value'])) {
        for ($j = 2; $j <= $no_emp; $j++) {
            $excel->setActiveSheetIndex(0);
            $excel->getActiveSheet()
                    ->setCellValue($column . "" . $j, "");
            $configs = $pattern_record['attribute_' . $sequence_no . '_variable_value'];
            $objValidation = $excel->getActiveSheet()->getCell($column . $j)->getDataValidation();
            $objValidation->setType(PHPExcel_Cell_DataValidation::TYPE_LIST);
            $objValidation->setErrorStyle(PHPExcel_Cell_DataValidation::STYLE_INFORMATION);
            $objValidation->setAllowBlank(false);
            $objValidation->setShowInputMessage(true);
            $objValidation->setShowErrorMessage(true);
            $objValidation->setShowDropDown(true);
            $objValidation->setErrorTitle('Input error');
            $objValidation->setError('Value is not in list.');
            $objValidation->setPromptTitle('Pick from list');
            $objValidation->setPrompt('Please pick a value from the drop-down list.');
            $objValidation->setFormula1('"' . $configs . '"');
        }
    }

    //check and set datatype in excel
    //General format
    else if (in_array($sequence_no, $datatype_varchar)) {
        $excel->getActiveSheet()->getStyle($column)
                ->getNumberFormat()
                ->setFormatCode(
                        PHPExcel_Style_NumberFormat::FORMAT_TEXT
        );
    } else if (in_array($sequence_no, $datatype_text)) {
        //text format
        $excel->getActiveSheet()->getStyle($column)
                ->getNumberFormat()
                ->setFormatCode(
                        '0'
        );
    } else if (in_array($sequence_no, $datatype_int)) {

        // numerical format
        $excel->getActiveSheet()->getStyle($column)
                ->getNumberFormat()
                ->setFormatCode(
                        '0'
        );
    } else if (in_array($sequence_no, $datatype_date)) {

        // date format
        $excel->getActiveSheet()->getStyle($column)->getNumberFormat()
                ->setFormatCode('yyyy-mm-dd');
    }
    $excel->getActiveSheet()->getStyle("$column$row:$column$row")->getFont()->setSize(14);
    $excel->getActiveSheet()->getStyle("$column:$column")->getFont()->setSize(12);

    $excel->getActiveSheet()
            ->getColumnDimension($column)
            ->setAutoSize(true);
    $excel->getActiveSheet()->getStyle($column . $row . ':' . $column . $row)->getFill()
            ->setFillType(PHPExcel_Style_Fill::FILL_SOLID)
            ->getStartColor()->setARGB('FFE8E5E5');


    $col++;
    $column++;
} }

Он загружается правильно, если данные имеют длину 255, но будет поврежден, если он превышен.Пожалуйста, предложите что-нибудь.

1 Ответ

0 голосов
/ 05 февраля 2019

Не помещайте данные прямо в выпадающий список.Запишите его в набор ячеек, а затем установите раскрывающийся список для диапазона ячеек.Таким образом, он не ограничен строковым пределом MS Excel для списка проверки данных

...