PHP_XLSXWriter проблема заголовка мути строк

Я пытаюсь создать с помощью PHP_XLSXWriter файл Excel, содержащий 2 строки заголовка (текст) и числовые значения в следующих строках.
Мне удается создать из php файл, имеющий 1 строку заголовка с ожидаемыми типами и стилями для строки заголовка и следующих строк данных. Это может быть открыто в Excel правильно.
Когда я вставляю из php вторую строку заголовка (текст) с помощью метода writeSheetRow, Excel отображает предупреждение / сообщение об ошибке и предлагает восстановить файл.
Когда я принимаю файл для ремонта, содержимое файла в порядке (заголовок (2 строки) и числовые данные).
После сохранения файла больше нет предупреждающего сообщения при открытии файла.
Кто-нибудь знает, как действовать, чтобы избежать предупреждения об инициализации?
Благодарю.

Больше деталей:
Проблема связана с тем, что типы типов столбцов определяются при написании заголовка (строка 1, с методом writeSheetHeader). Это определяет типы столбцов всех следующих строк (от строки 2 до ..). В моем случае строка 2 не является строкой данных. Он содержит только строки, которые являются второй строкой заголовка. Это вызывает проблему, поскольку существует конфликт между типом, определенным в заголовке (числовой), и фактическими значениями в строке (sring).

0

Решение

Я нашел решение, создав модифицированную версию метода writeSheetRow, который я назвал: writeSheetRowHeader.
В этом новом методе я устанавливаю тип значений, вставленных с помощью этого метода, в «ОБЩИЙ».

Insted из:

public function writeSheetRow($sheet_name, array $row, $row_options=null)
{
....
$c=0;
foreach ($row as $v) {
$number_format = $sheet->columns[$c]['number_format']; //BEFORE
$number_format_type = $sheet->columns[$c]['number_format_type']; //BEFORE
$cell_style_idx = empty($style) ? $sheet->columns[$c]['default_cell_style'] : $this->addCellStyle( $number_format, json_encode(isset($style[0]) ? $style[$c] : $style) );
$this->writeCell($sheet->file_writer, $sheet->row_count, $c, $v, $number_format_type, $cell_style_idx);
$c++;
}
.....
}

я использую

public function writeSheetRowHeader($sheet_name, array $row, $row_options=null)
{
....
$c=0;
foreach ($row as $v) {
$number_format = 'GENERAL'; // AFTER
$number_format_type = 'n_auto'; // AFTER
$cell_style_idx = empty($style) ? $sheet->columns[$c]['default_cell_style'] : $this->addCellStyle( $number_format, json_encode(isset($style[0]) ? $style[$c] : $style) );
$this->writeCell($sheet->file_writer, $sheet->row_count, $c, $v, $number_format_type, $cell_style_idx);
$c++;
}
.....
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector