Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

$spreadsheet->getCell()->setValue($val) unexpected result sometimes (no idea why) #3711

Closed
1 of 8 tasks
holdmann opened this issue Sep 6, 2023 · 3 comments · Fixed by #3715
Closed
1 of 8 tasks

$spreadsheet->getCell()->setValue($val) unexpected result sometimes (no idea why) #3711

holdmann opened this issue Sep 6, 2023 · 3 comments · Fixed by #3715

Comments

@holdmann
Copy link

holdmann commented Sep 6, 2023

This is:

- [x] a bug report
- [ ] a feature request
- [ ] **not** a usage question (ask them on https://stackoverflow.com/questions/tagged/phpspreadsheet or https://gitter.im/PHPOffice/PhpSpreadsheet)

What is the expected behavior?

setValue() method results should be equal to passed value.

What is the current behavior?

has some strange values instead of exprected.

What are the steps to reproduce?

<?php

$headers = array (
    0 => 'Ид',
    1 => 'Штрихкод',
    2 => 'Код77',
    3 => 'Ссылка',
    4 => 'Артикул',
    5 => 'Наименование товара',
    6 => 'Цена',
    7 => 'Старая цена',
    8 => 'Остатки на складе0',
    9 => 'Остатки на складе10',
    10 => 'Остатки на складе20',
    11 => 'Остатки на складе30',
    12 => 'Остатки на складе40',
    13 => 'Остатки на складе50',
    14 => 'Остатки на складе998',
    15 => 'Остатки на складе999',
    16 => 'Категория',
    17 => 'Наименование категории',
    18 => 'Пол',
    19 => 'Возраст',
    20 => 'Бренд',
    21 => 'Вес',
    22 => 'Габариты',
    23 => 'Модель',
    24 => 'Модельный год',
    25 => 'Цвет',
    26 => 'Сезон',
    27 => 'Описание',
    28 => 'Тип',
    29 => 'Изображение1',
    30 => 'Изображение2',
    31 => 'Изображение3',
    32 => 'Изображение4',
    33 => 'Изображение5',
    34 => 'Изображение6',
    35 => 'Изображение7',
    36 => 'Изображение8',
    37 => 'Изображение9',
    38 => 'Изображение10',
    39 => 'Диаметр,&quot;',
    40 => 'Пол для фильтра',
    41 => 'Менеджер',
    42 => 'Статус карточки',
    43 => 'Объем, л',
    44 => 'Тип горловины',
    45 => 'Сохраняет тепло до, ч.',
    46 => 'Вакуумный',
    47 => 'Материал корпуса',
    48 => 'Материал колбы',
    49 => 'Кнопка-клапан',
    50 => 'Отверстие в крышке для питья',
    51 => 'Высота, см',
    52 => 'Страна производства',
);
$rows = array (
    0 =>
        array (
            'Ид' => '3744033',
            'Штрихкод' => '4610003064143',
            'Код77' => '1814499',
            'Ссылка' => 'https://www.kant.ru/catalog/product/3744032/?utm_medium=cpc&utm_campaign=turizm&utm_content=arktika_termos_arktika_sititerm_vakuumnyj_0_5_ml_lizzard&utm_term=3744033&utm_source=yandex-market-msk',
            'Артикул' => '702-500',
            'Наименование товара' => 'Термос Арктика Сититерм Вакуумный, 0,5 Мл Lizzard',
            'Цена' => '1590',
            'Старая цена' => '',
            'Остатки на складе998' => '12',
            'Остатки на складе0' => '0',
            'Остатки на складе20' => '4',
            'Остатки на складе30' => '0',
            'Остатки на складе40' => '0',
            'Остатки на складе50' => '0',
            'Категория' => 'Туризм',
            'Наименование категории' => 'Термосы',
            'Пол' => 'унисекс',
            'Возраст' => 'взрослый',
            'Бренд' => 'Арктика',
            'Вес' => '0.5',
            'Габариты' => '40/15/15',
            'Модель' => 'Сититерм Вакуумный, 0,5 Мл',
            'Модельный год' => '2023',
            'Цвет' => 'желтый',
            'Сезон' => '',
            'Описание' => 'Термос <b>Арктика Cититерм</b> подойдет для спортсменов, студентов и школьников, для велосипедистов и поклонников активного образа жизни. Сочетает в себе яркий дизайн и практичную форму. Легко открывается и позволяет&nbsp;пить во время движения без риска обжечься или облиться. Предназначен для хранения как холодных, так и теплых напитков и сохраняет температуру в течение 8 часов.<br>
 <br>
 <b>Особенности:</b><br>
 <br>
<ul>
	<li>Выполнен из долговечной пищевой нержавеющей стали</li>
	<li>
	Благодаря питьевой системе с поилкой термос легко открывается путем нажатия на кнопку</li>
	<li>
	Крышка с предохранителем обеспечивает герметичность в любой ситуации</li>
	<li>
	Специальный колпачок защищает носик для питья от пыли</li>
	<li>
	Диаметр голышка: 51 мм</li>
	<li>
	Диаметр: 73 мм</li>
	<li>
	Высота: 218 мм</li>
	<li>
	Диаметр дна: 73 мм</li>
	<li>
	Объем: 0.5 л</li>
</ul>
 <br>
 <br>',
            'Тип' => 'термокружка',
            'Изображение1' => 'https://www.kant.ru/upload/iblock/9ef/9efe5d5ba357260628f8ab09db06b7ca.jpg',
            'Изображение2' => 'https://www.kant.ru/upload/iblock/c0c/c0cea8987b4848233220d2ec54a04967.jpg',
            'Изображение3' => 'https://www.kant.ru/upload/iblock/fc6/fc65c02992099dab106a2034c4fba6c8.jpg',
            'Изображение4' => 'https://www.kant.ru/upload/iblock/b81/b819ec8d86ea0d2fb5af05461ad17a27.jpg',
            'Изображение5' => 'https://www.kant.ru/upload/iblock/039/0396b72ac316b70435ffeec680cf6996.jpg',
            'Размер' => 'UNI',
            'Пол для фильтра' => 'Женский / Мужской',
            'Менеджер' => 'Юля Божко',
            'Статус карточки' => 'готово',
            'Объем, л' => '0.5',
            'Тип горловины' => 'узкая',
            'Сохраняет тепло до, ч.' => '8',
            'Вакуумный' => 'да',
            'Материал корпуса' => 'сталь',
            'Материал колбы' => 'сталь',
            'Кнопка-клапан' => 'да',
            'Отверстие в крышке для питья' => 'да',
            'Высота, см' => '21.8',
            'Страна производства' => 'китай',
        ),
    1 =>
        array (
            'Ид' => '3744029',
            'Штрихкод' => '4610003067113',
            'Код77' => '1814502',
            'Ссылка' => 'https://www.kant.ru/catalog/product/3744028/?utm_medium=cpc&utm_campaign=turizm&utm_content=arktika_akkumul_ator_arktika_2023_temperatury&utm_term=3744029&utm_source=yandex-market-msk',
            'Артикул' => 'АТМ-500',
            'Наименование товара' => 'Аккумулятор Арктика 2023 Температуры',
            'Цена' => '390',
            'Старая цена' => '',
            'Остатки на складе998' => '264',
            'Остатки на складе0' => '0',
            'Остатки на складе20' => '20',
            'Остатки на складе30' => '0',
            'Остатки на складе40' => '0',
            'Остатки на складе50' => '0',
            'Категория' => 'Туризм',
            'Наименование категории' => 'Столовые приборы и аксессуары',
            'Пол' => 'унисекс',
            'Возраст' => 'взрослый',
            'Бренд' => 'Арктика',
            'Вес' => '0.1',
            'Габариты' => '10/10/10',
            'Модель' => 'Температуры',
            'Модельный год' => '2023',
            'Цвет' => 'голубой',
            'Сезон' => '',
            'Описание' => 'Гелевый аккумулятор температуры <b>Арктика</b> позволяет надолго сохранить холодную или горячую температуру&nbsp;продуктов и напитков. Полностью герметичная емкость заполнена специальным гелем, который при нагревании или охлаждении аккумулирует и затем поддерживает тепло или холод. Идеально подходит для&nbsp;транспортировки и хранения замороженных и охлажденных продуктов,&nbsp;детского питания, медикаментов, а также для использования в качестве&nbsp;компресса.<br>
 <br>
 <b>Особенности:</b><br>
 <br>
<ul>
	<li>Может использоваться многократно</li>
	<li>
	Полностью безопасен при соприкосновении с продуктами питания</li>
	<li>
	Легко моется</li>
	<li>
	Рекомендуется использовать вместе с сумками-холодильниками и термоконтейнерами Арктика&nbsp;из расчета не менее 10% от объема емкости для хранения (например сумка 30 л = аккумулятор 3 л)</li>
	<li>Длина: 190 мм</li>
	<li>Ширина: 100 мм</li>
	<li>Высота: 30 мм</li>
	<li>Объем: 0.5 л</li>
</ul>
 <br>
 <br>',
            'Тип' => 'аккумулятор холода',
            'Изображение1' => 'https://www.kant.ru/upload/iblock/c41/c41b4af7aae4c1500a32806396508811.jpeg',
            'Изображение2' => 'https://www.kant.ru/upload/iblock/1f7/1f78b5cce1dc76d266e4d1533dd50a81.jpeg',
            'Изображение3' => 'https://www.kant.ru/upload/iblock/57f/57fe6443146b242e17305a631f099642.jpeg',
            'Изображение4' => 'https://www.kant.ru/upload/iblock/06a/06a1a7f8f123f49225be6693a4d5a16b.jpeg',
            'Размер' => 'UNI',
            'Пол для фильтра' => 'Женский / Мужской',
            'Менеджер' => 'Юля Божко',
            'Статус карточки' => 'готово',
            'Страна производства' => 'россия',
        ),
    2 =>
        array (
            'Ид' => '3744019',
            'Штрихкод' => '4610003066499',
            'Код77' => '1814493',
            'Ссылка' => 'https://www.kant.ru/catalog/product/3744018/?utm_medium=cpc&utm_campaign=turizm&utm_content=arktika_sumka_termos_arktika_s_kontejnerami_2l_bezhevyj&utm_term=3744019&utm_source=yandex-market-msk',
            'Артикул' => '020-2000-2',
            'Наименование товара' => 'Сумка-Термос Арктика С Контейнерами 2Л Бежевый',
            'Цена' => '1590',
            'Старая цена' => '',
            'Остатки на складе998' => '9',
            'Остатки на складе0' => '0',
            'Остатки на складе20' => '2',
            'Остатки на складе30' => '0',
            'Остатки на складе40' => '0',
            'Остатки на складе50' => '0',
            'Категория' => 'Туризм',
            'Наименование категории' => 'Термосы',
            'Пол' => 'унисекс',
            'Возраст' => 'взрослый',
            'Бренд' => 'Арктика',
            'Вес' => '0.5',
            'Габариты' => '40/15/15',
            'Модель' => 'С Контейнерами 2Л',
            'Модельный год' => '2023',
            'Цвет' => 'бежевый',
            'Сезон' => '',
            'Описание' => 'Сумка-термос <b>Арктика</b> с двумя контейнерами в комплекте отлично подойдет для хранения еды во время пикника. Благодаря внутреннему фольгированному слою при использовании аккумулятора температуры термосумка удерживает как холод, так и тепло, сохраняя охлажденные продукты свежими, а горячие всегда готовыми к употреблению.<br>
 <br>
 <b>Особенности:</b><br>
 <br>
<ul>
	<li>Самая компактная термосумка в линейке, поместится в рюкзак или сумку</li>
	<li>При желании ее можно переносить за ручку</li>
	<li>В комплекте два контейнера, ложка и вилка</li>
	<li>Сохраняет температуру до 20 часов</li>
	<li>Длина: 240 мм</li>
	<li>Ширина: 165 мм</li>
	<li>Высота: 85 мм</li>
	<li>
	Объем: 2 л</li>
</ul>
 <br>',
            'Тип' => 'термосумка',
            'Изображение1' => 'https://www.kant.ru/upload/iblock/e0d/e0dcf4b8b0c6c7ee29396d5c3b61d04d.jpg',
            'Изображение2' => 'https://www.kant.ru/upload/iblock/9b9/9b928148f7935d4b25e505c1041b7293.jpg',
            'Изображение3' => 'https://www.kant.ru/upload/iblock/aa0/aa0dd22672e10ff923327ec00d950651.jpg',
            'Изображение4' => 'https://www.kant.ru/upload/iblock/57b/57b43580854003c1487c60b0eba1c243.jpg',
            'Изображение5' => 'https://www.kant.ru/upload/iblock/6ed/6edb47b958bbea01d7be95f2f00c825d.jpg',
            'Изображение6' => 'https://www.kant.ru/upload/iblock/aa4/aa4d6b6af29569557f3aba8d96e17267.jpg',
            'Изображение7' => 'https://www.kant.ru/upload/iblock/592/592f56f0a7bb183816d566679925751e.jpg',
            'Размер' => 'UNI',
            'Пол для фильтра' => 'Женский / Мужской',
            'Менеджер' => 'Юля Божко',
            'Статус карточки' => 'готово',
            'Объем, л' => '2',
            'Страна производства' => 'китай',
        ),
    3 =>
        array (
            'Ид' => '3744011',
            'Штрихкод' => '4610003066536',
            'Код77' => '1814495',
            'Ссылка' => 'https://www.kant.ru/catalog/product/3744010/?utm_medium=cpc&utm_campaign=turizm&utm_content=arktika_sumka_termos_arktika_s_3m_a_kontejnerami_2_5_l_bezhevyj&utm_term=3744011&utm_source=yandex-market-msk',
            'Артикул' => '020-2500-3',
            'Наименование товара' => 'Сумка-Термос Арктика С 3Мя Контейнерами 2,5 Л Бежевый',
            'Цена' => '1990',
            'Старая цена' => '',
            'Остатки на складе998' => '9',
            'Остатки на складе0' => '0',
            'Остатки на складе20' => '2',
            'Остатки на складе30' => '0',
            'Остатки на складе40' => '0',
            'Остатки на складе50' => '0',
            'Категория' => 'Туризм',
            'Наименование категории' => 'Термосы',
            'Пол' => 'унисекс',
            'Возраст' => 'взрослый',
            'Бренд' => 'Арктика',
            'Вес' => '0.5',
            'Габариты' => '40/15/15',
            'Модель' => 'С 3Мя Контейнерами 2,5 Л',
            'Модельный год' => '2023',
            'Цвет' => 'бежевый',
            'Сезон' => '',
            'Описание' => 'Сумка-термос <b>Арктика</b> с тремя контейнерами в комплекте отлично подойдет для хранения еды во время пикника или путешествия. Благодаря внутреннему фольгированному слою при использовании аккумулятора температуры термосумка удерживает как холод, так и тепло, сохраняя охлажденные продукты свежими, а горячие всегда готовыми к употреблению.<br>
 <br>
 <b>Особенности:</b><br>
 <br>
<ul>
	<li>Регулируемая ручка для переноски</li>
	<li>Кармашек для мелочей</li>
	<li>
	В комплекте три контейнера, ложка и вилка</li>
	<li>
	Сохраняет температуру до 30 часов</li>
	<li>
	Длина: 230 мм</li>
	<li>
	Ширина: 165 мм</li>
	<li>
	Высота: 160 мм</li>
	<li>
	Объем: 2.5 л</li>
</ul>
 <br>',
            'Тип' => 'термосумка',
            'Изображение1' => 'https://www.kant.ru/upload/iblock/e1f/e1ffa52047553fa5b8006388dd1246bf.jpg',
            'Изображение2' => 'https://www.kant.ru/upload/iblock/5ea/5ea2d54c6e080d20491f955fa1dd76da.jpg',
            'Изображение3' => 'https://www.kant.ru/upload/iblock/240/240f210c146bf42c25e9827582d7f5ea.jpg',
            'Изображение4' => 'https://www.kant.ru/upload/iblock/b00/b0095b831b095320a69a0c2dd833573c.jpg',
            'Изображение5' => 'https://www.kant.ru/upload/iblock/d23/d233737292d8a315e8dc352d460bcb61.jpg',
            'Изображение6' => 'https://www.kant.ru/upload/iblock/68b/68bca9274b1c64e80d47ece4e5ddd849.jpg',
            'Изображение7' => 'https://www.kant.ru/upload/iblock/5fa/5fa2155ca5d935d0cde3f0b963d47391.jpg',
            'Размер' => 'UNI',
            'Пол для фильтра' => 'Женский / Мужской',
            'Менеджер' => 'Юля Божко',
            'Статус карточки' => 'готово',
            'Страна производства' => 'китай',
        ),
    4 =>
        array (
            'Ид' => '3744009',
            'Штрихкод' => '4610003065263',
            'Код77' => '1814501',
            'Ссылка' => 'https://www.kant.ru/catalog/product/3744008/?utm_medium=cpc&utm_campaign=turizm&utm_content=arktika_stakan_arktika_nevakuumnyj_s_dvojnymi_stenkami_220_ml_belyj&utm_term=3744009&utm_source=yandex-market-msk',
            'Артикул' => '809-220',
            'Наименование товара' => 'Стакан Арктика Невакуумный С Двойными Стенками 220 Мл Белый',
            'Цена' => '1090',
            'Старая цена' => '',
            'Остатки на складе998' => '8',
            'Остатки на складе0' => '0',
            'Остатки на складе20' => '4',
            'Остатки на складе30' => '0',
            'Остатки на складе40' => '0',
            'Остатки на складе50' => '0',
            'Категория' => 'Туризм',
            'Наименование категории' => 'Термокружки',
            'Пол' => 'унисекс',
            'Возраст' => 'взрослый',
            'Бренд' => 'Арктика',
            'Вес' => '0.1',
            'Габариты' => '15/15/10',
            'Модель' => 'Невакуумный С Двойными Стенками 220 Мл',
            'Модельный год' => '2023',
            'Цвет' => 'белый',
            'Сезон' => '',
            'Описание' => 'Термостакан <b>Арктика</b> выполнен из долговечной нержавеющей стали и является идеальным решением для тех, кто ищет стильную альтернативу походной кружке.&nbsp;Подойдет для горячих и холодных напитков&nbsp;и удобен для использования дома, на работе, на даче и на природе.<br>
 <br>
 <b>Особенности:</b><br>
 <br>
<ul>
	<li>Невакуумный бокал с двойными стенками</li>
	<li>Не укомплектован крышкой</li>
	<li>
	Сохраняет температуру до 20 часов</li>
	<li>Диаметр горлышка: 63 мм</li>
	<li>Высота: 80 мм</li>
	<li>Диаметра дна: 81 мм</li>
	<li>
	Объем: 0.22 л</li>
</ul>
 <br>',
            'Тип' => 'термокружка',
            'Изображение1' => 'https://www.kant.ru/upload/iblock/8c0/8c00a668d82056ff44fcfffceb7c1863.jpg',
            'Изображение2' => 'https://www.kant.ru/upload/iblock/3aa/3aacf198a96b495d347110e69b7f4eb4.jpg',
            'Изображение3' => 'https://www.kant.ru/upload/iblock/821/821cd8b5cb35a7c8bfd70a5307770662.jpg',
            'Изображение4' => 'https://www.kant.ru/upload/iblock/948/948235c2110dbc12c9d50ea507a3d603.jpg',
            'Изображение5' => 'https://www.kant.ru/upload/iblock/a46/a4625bfd5c1eadda9ac2ddf0e27ea24e.jpg',
            'Размер' => 'UNI',
            'Пол для фильтра' => 'Женский / Мужской',
            'Менеджер' => 'Юля Божко',
            'Статус карточки' => 'готово',
            'Страна производства' => 'китай',
        ),
    5 =>
        array (
            'Ид' => '3743997',
            'Штрихкод' => '4610003063405',
            'Код77' => '1814497',
            'Ссылка' => 'https://www.kant.ru/catalog/product/3743996/?utm_medium=cpc&utm_campaign=turizm&utm_content=arktika_termos_arktika_universal_nyj_s_lakovym_pokrytiem_0_8_l&utm_term=3743997&utm_source=yandex-market-msk',
            'Артикул' => '205-800',
            'Наименование товара' => 'Термос Арктика Универсальный С Лаковым Покрытием 0,8 Л',
            'Цена' => '1990',
            'Старая цена' => '',
            'Остатки на складе998' => '12',
            'Остатки на складе0' => '0',
            'Остатки на складе20' => '4',
            'Остатки на складе30' => '0',
            'Остатки на складе40' => '0',
            'Остатки на складе50' => '0',
            'Категория' => 'Туризм',
            'Наименование категории' => 'Термосы',
            'Пол' => 'унисекс',
            'Возраст' => 'взрослый',
            'Бренд' => 'Арктика',
            'Вес' => '0.5',
            'Габариты' => '40/15/15',
            'Модель' => 'Универсальный С Лаковым Покрытием 0,8 Л',
            'Модельный год' => '2023',
            'Цвет' => 'серый',
            'Сезон' => '',
            'Описание' => 'Универсальный термос с лаковым покрытием <b>Арктика</b> предназначен для напитков и&nbsp;еды и прекрасно подойдет для охотников и рыбаков. Широкое горло позволяет есть прямо из термоса,&nbsp;не перекладывая еду в отдельную емкость. Выполнен из долговечной пищевой нержавеющей стали и не впитывает запахи.<br>
 <br>
<div>
 <b>Особенности:</b><br>
 <br>
	<ul>
		<li>Крышка термоса плотно прилегает к горлышку, обеспечивая 100% герметичность</li>
		<li>Специальные каналы для наливания жидкости&nbsp;позволяют использовать&nbsp;термос для напитков</li>
		<li>Складная ручка для удобной транспортировки</li>
		<li>Съемный ремешок для переноски на плече</li>
		<li>В комплекте дополнительная чашка</li>
		<li>Сохраняет температуру до 18 часов</li>
		<li>
		Диаметр голышка: 75 мм</li>
		<li>
		Высота: 189 мм</li>
		<li>
		Диаметр дна: 113 мм</li>
		<li>
		Объем: 0.8 л</li>
	</ul>
 <br>
 <br>
</div>
 <br>',
            'Тип' => 'термос',
            'Изображение1' => 'https://www.kant.ru/upload/iblock/ee6/ee6b17d690d891babd3bf8a0a806a3fa.jpg',
            'Изображение2' => 'https://www.kant.ru/upload/iblock/75f/75f203752db0cd45c8132943d4760549.jpg',
            'Изображение3' => 'https://www.kant.ru/upload/iblock/e06/e06fde310dd87dd05c5a9849dcf4c83f.jpg',
            'Размер' => 'UNI',
            'Пол для фильтра' => 'Женский / Мужской',
            'Менеджер' => 'Юля Божко',
            'Статус карточки' => 'готово',
            'Объем, л' => '0.8',
            'Тип горловины' => 'широкая',
            'Сохраняет тепло до, ч.' => '18',
            'Вакуумный' => 'да',
            'Материал корпуса' => 'сталь',
            'Материал колбы' => 'сталь',
            'Дополнительная крышка' => 'да',
            'Использование крышки в качестве чашки' => 'да',
            'Высота, см' => '18.9',
            'Страна производства' => 'китай',
        ),
    6 =>
        array (
            'Ид' => '3743993',
            'Штрихкод' => '4610003064945',
            'Код77' => '1814494',
            'Ссылка' => 'https://www.kant.ru/catalog/product/3743992/?utm_medium=cpc&utm_campaign=turizm&utm_content=arktika_sumka_kholodil_nik_arktika_klassicheskaja_40_l_ch_ornyj&utm_term=3743993&utm_source=yandex-market-msk',
            'Артикул' => '010-40',
            'Наименование товара' => 'Сумка-Холодильник Арктика Классическая 40 Л Чёрный',
            'Цена' => '5490',
            'Старая цена' => '',
            'Остатки на складе998' => '11',
            'Остатки на складе0' => '0',
            'Остатки на складе20' => '2',
            'Остатки на складе30' => '0',
            'Остатки на складе40' => '0',
            'Остатки на складе50' => '0',
            'Категория' => 'Туризм',
            'Наименование категории' => 'Термосы',
            'Пол' => 'унисекс',
            'Возраст' => 'взрослый',
            'Бренд' => 'Арктика',
            'Вес' => '0.5',
            'Габариты' => '40/15/15',
            'Модель' => 'Классическая 40 Л',
            'Модельный год' => '2023',
            'Цвет' => 'черный',
            'Сезон' => '',
            'Описание' => 'Сумка-холодильник <b>Арктика</b> серии <b>“Порт Диксон”</b> сочетает в себе компактность и большое время удержания температуры. Имеет малый вес и при необходимости легко складывается. Держит холод так же долго, как термоконтейнер высокой степени изоляции.<br>
 <br>
 <b>Особенности:</b><br>
 <br>
<ul>
	<li>Термоизолирующий слой&nbsp;выполнен из вспененного полиуретана и позволяет сохранять холод внутри до 120 часов</li>
	<li>
	Компактно складывается и легко восстанавливает форму перед эксплуатацией благодаря встроенному клапану</li>
	<li>Прочные ручки и широкий плечевой&nbsp;ремень для переноски</li>
	<li>Длина: 430 мм</li>
	<li>Ширина: 290 мм</li>
	<li>Высота: 470 мм</li>
	<li>Объем: 40 л</li>
</ul>
 <br>',
            'Тип' => 'термосумка',
            'Изображение1' => 'https://www.kant.ru/upload/iblock/fc7/fc710c3dd038e98845de07aa7ca101d0.jpeg',
            'Изображение2' => 'https://www.kant.ru/upload/iblock/9a1/9a1446c06410921bb41bff25e801e65b.jpeg',
            'Изображение3' => 'https://www.kant.ru/upload/iblock/b8e/b8e58bcb58d3067a0680220318308ace.jpeg',
            'Изображение4' => 'https://www.kant.ru/upload/iblock/020/020390e7b4c88ae95d88b5354dc51181.jpeg',
            'Изображение5' => 'https://www.kant.ru/upload/iblock/482/4826171ff5ac9d18c5dfa8feb0c3bd5c.jpeg',
            'Изображение6' => 'https://www.kant.ru/upload/iblock/7a1/7a14dfb7e6e6d53232d72f123a27bc13.jpeg',
            'Изображение7' => 'https://www.kant.ru/upload/iblock/436/43612dcf09276214e202c655cfecb955.jpeg',
            'Размер' => 'UNI',
            'Пол для фильтра' => 'Женский / Мужской',
            'Менеджер' => 'Юля Божко',
            'Статус карточки' => 'готово',
            'Страна производства' => 'китай',
        ),
    7 =>
        array (
            'Ид' => '3743991',
            'Штрихкод' => '4610003062026',
            'Код77' => '1814496',
            'Ссылка' => 'https://www.kant.ru/catalog/product/3743990/?utm_medium=cpc&utm_campaign=turizm&utm_content=arktika_termokontejner_arktika_izotermicheskij_40_l_sinij&utm_term=3743991&utm_source=yandex-market-msk',
            'Артикул' => '2000-40',
            'Наименование товара' => 'Термоконтейнер Арктика Изотермический 40 Л Синий',
            'Цена' => '6190',
            'Старая цена' => '',
            'Остатки на складе998' => '26',
            'Остатки на складе0' => '0',
            'Остатки на складе20' => '3',
            'Остатки на складе30' => '0',
            'Остатки на складе40' => '0',
            'Остатки на складе50' => '0',
            'Категория' => 'Туризм',
            'Наименование категории' => 'Термосы',
            'Пол' => 'унисекс',
            'Возраст' => 'взрослый',
            'Бренд' => 'Арктика',
            'Вес' => '0.5',
            'Габариты' => '40/15/15',
            'Модель' => 'Изотермический 40 Л',
            'Модельный год' => '2023',
            'Цвет' => 'синий',
            'Сезон' => '',
            'Описание' => 'Термоконтейнер <b>Арктика</b> сохраняет свежесть овощей и мяса, прохладу напитков в жаркий летний день. Он также может использоваться как холодильник на рыбалке. Имеет жесткую и надежную конструкцию и ударопрочный корпус. А двойные стенки из прочного пластика и прослойка из пенополиуретана удерживают холод до 141 часа.
<div>
 <br>
 <b>Особенности:</b><br>
 <br>
</div>
<div>
	<ul>
		<li>Окошко на крышке обеспечивает легкий доступ к продуктам и позволяет не открывать весь контейнер</li>
		<li>Прочными ручки с двух сторон</li>
		<li>
		Крепкие замки с защитой от случайного открывания</li>
		<li>
		Фиксирующий ремень удерживает крышку в открытом состоянии</li>
		<li>
		Встроенный слив предотвращает накопление избытка конденсата</li>
		<li>
		Съемная емкость для льда на внутренней стороне крышки на 500 мл, обеспечивающая дополнительный аккумулятор холода. Заполняется как обычной водой, так и солевым раствором: развести 150 г. соли в 500 мл теплой воды до полного растворения, после чего залить в емкость 450 мл. Оставить зазор для расширения льда, аккуратно вбить пробку и закрутить крышку. Важно: пробка забивается один раз, после этого АХ будет невозможно открыть для замены содержимого</li>
		<li>Объем холодильного отсека: 30 л</li>
		<li>Длина: 640 мм</li>
		<li>Ширина: 350 мм</li>
		<li>Высота: 355 мм</li>
		<li>Объем: 40 л</li>
		<li>Вес: 3 кг</li>
	</ul>
</div>
 <br>
 <br>
 <br>
 <br>',
            'Тип' => 'термоконтейнер',
            'Изображение1' => 'https://www.kant.ru/upload/iblock/e7b/e7b376cb324aec3c5f97353af88fe435.jpeg',
            'Изображение2' => 'https://www.kant.ru/upload/iblock/56f/56f943358964b4d2a0ba67786d8cbe43.jpeg',
            'Изображение3' => 'https://www.kant.ru/upload/iblock/035/035766e8304f048463e08fc007ffb820.jpeg',
            'Изображение4' => 'https://www.kant.ru/upload/iblock/3f9/3f9fb3d358355933b8d42ca5e7ed8310.jpeg',
            'Изображение5' => 'https://www.kant.ru/upload/iblock/f8b/f8bbb9761ad6de407af25ccbabdbee2d.jpeg',
            'Изображение6' => 'https://www.kant.ru/upload/iblock/eaf/eaf7d5d92d457fdbc6422b225cdd5280.jpeg',
            'Размер' => 'UNI',
            'Пол для фильтра' => 'Женский / Мужской',
            'Вес, кг' => '3',
            'Менеджер' => 'Юля Божко',
            'Статус карточки' => 'готово',
            'Страна производства' => 'китай',
        ),
    8 =>
        array (
            'Ид' => '3743934',
            'Штрихкод' => '8445757060662',
            'Код77' => '1814240',
            'Ссылка' => 'https://www.kant.ru/catalog/product/3743933/?utm_medium=cpc&utm_campaign=obuv&utm_content=joma_begovye_krossovki_joma_ferro_jr_marino_rosa&utm_term=3743934&utm_source=yandex-market-msk',
            'Артикул' => 'JFERRS2333V_2333',
            'Наименование товара' => 'Беговые Кроссовки Joma Ferro Jr Marino Rosa (Eur:35)',
            'Цена' => '4990',
            'Старая цена' => '',
            'Остатки на складе998' => '16',
            'Остатки на складе0' => '0',
            'Остатки на складе20' => '1',
            'Остатки на складе30' => '0',
            'Остатки на складе40' => '0',
            'Остатки на складе50' => '0',
            'Категория' => '',
            'Наименование категории' => 'Летние мужские кроссовки',
            'Пол' => 'унисекс',
            'Возраст' => 'взрослый',
            'Бренд' => 'Joma',
            'Вес' => '0',
            'Габариты' => '0/0/0',
            'Модель' => 'Ferro Jr',
            'Модельный год' => '2023',
            'Цвет' => 'розовый / черный',
            'Сезон' => 'лето',
            'Описание' => '<span><b>Joma Ferro Jr </b>- детские кроссовки в стиле casual, которые отлично подойдут для повседневной носки в теплое время года.&nbsp;Верх модели выполнен из дышащей сетки и синтетических усиливающих материалов. Благодаря небольшой перфорации&nbsp;достигается оптимальная вентиляция, что позволяет поддерживать комфортный микроклимат и избежать ощущения влажности.&nbsp;<br>
 </span><br>
 <b>Особенности:</b><br>
<ul>
	<li>Верх выполнен из синтетического текстиля с технологией&nbsp;VTS. Это позволяет потоку воздуха проникать к стопе, чтобы сохранить прохладу и комфорт во время тренировок.</li>
	<li>Особый рисунок протектора Flexo с поперечными желобками позволяет подошве обуви лучше гнуться для более комфортного переката.&nbsp;<br>
 </li>
	<li>Подошва изготовлена из износостойкой&nbsp;резины высокой плотности DURABILITY, которая замедляет абразивный износ.<br>
 </li>
	<li>Cистемы FLEXSHIELD предусматривает эргономичное распределения материалов в верхней части, что позволяет обуви подстроиться под стопу, обеспечивая стабильность, защиту и устойчивость.<br>
 </li>
	<li>Комбинированная застежка предусматривает шнуровку и липучку в верхней части, что обеспечивает точную и комфортную посадку по ноге и надежно фиксирует кроссовок.&nbsp;</li>
</ul>',
            'Тип' => 'кроссовки',
            'Изображение1' => 'https://www.kant.ru/upload/iblock/6a6/6a60efdc49fc650718915065fe19f022.jpg',
            'Размер' => '35',
            'Пол для фильтра' => 'Женский / Мужской',
            'Менеджер' => 'Дарина Соколова',
            'Статус карточки' => 'черновые фото',
            'Назначение' => 'город',
            'Высота' => 'средние',
            'Защита от промокания' => 'нет',
            'Утепленные' => 'нет',
            'Материал верха' => 'комбинированный',
            'Застежка' => 'классические шнурки / на липучках',
            'Тип колодки' => 'стандартная',
            'Размерная таблица (идентификаторы)' => '3609937',
            'Размерная таблица' => '{"content":[{"widgetName":"tcTable","table":{"title":"\\u041c\\u0443\\u0436\\u0441\\u043a\\u0438\\u0435 \\u043a\\u0440\\u043e\\u0441\\u0441\\u043e\\u0432\\u043a\\u0438 Joma","body":[{"data":["\\u0420\\u0430\\u0437\\u043c\\u0435\\u0440 \\u043f\\u0440\\u043e\\u0438\\u0437\\u0432\\u043e\\u0434\\u0438\\u0442\\u0435\\u043b\\u044f","\\u0420\\u0430\\u0437\\u043c\\u0435\\u0440, RUS","\\u0414\\u043b\\u0438\\u043d\\u0430 \\u0441\\u0442\\u043e\\u043f\\u044b, \\u0441\\u043c"]},{"data":["EUR:36","36","23"]},{"data":["EUR:37","37","23.5"]},{"data":["EUR:37,5","37.5","24"]},{"data":["EUR:38","38","24.5"]},{"data":["EUR:39","39","25"]},{"data":["EUR:40","40","25.5"]},{"data":["EUR:40,5","40.5","26"]},{"data":["EUR:41","41","26.5"]},{"data":["EUR:42","42","27"]},{"data":["EUR:42,5","42.5","27.5"]},{"data":["EUR:43","43","28"]},{"data":["EUR:43,5","43.5","28.5"]},{"data":["EUR:44","44","29"]},{"data":["EUR:44,5","44.5","29.5"]},{"data":["EUR:45","45","30"]},{"data":["EUR:46","46","30.5"]}]}}],"version":0.1}',
            'Страна производства' => 'китай',
        ),
    9 =>
        array (
            'Ид' => '3743935',
            'Штрихкод' => '8445757060617',
            'Код77' => '1814240',
            'Ссылка' => 'https://www.kant.ru/catalog/product/3743933/?utm_medium=cpc&utm_campaign=obuv&utm_content=joma_begovye_krossovki_joma_ferro_jr_marino_rosa&utm_term=3743935&utm_source=yandex-market-msk',
            'Артикул' => 'JFERRS2333V_2333',
            'Наименование товара' => 'Беговые Кроссовки Joma Ferro Jr Marino Rosa (Eur:30)',
            'Цена' => '4990',
            'Старая цена' => '',
            'Остатки на складе998' => '2',
            'Остатки на складе0' => '0',
            'Остатки на складе20' => '1',
            'Остатки на складе30' => '0',
            'Остатки на складе40' => '0',
            'Остатки на складе50' => '0',
            'Категория' => '',
            'Наименование категории' => 'Летние мужские кроссовки',
            'Пол' => 'унисекс',
            'Возраст' => 'взрослый',
            'Бренд' => 'Joma',
            'Вес' => '0',
            'Габариты' => '0/0/0',
            'Модель' => 'Ferro Jr',
            'Модельный год' => '2023',
            'Цвет' => 'розовый / черный',
            'Сезон' => 'лето',
            'Описание' => '<span><b>Joma Ferro Jr </b>- детские кроссовки в стиле casual, которые отлично подойдут для повседневной носки в теплое время года.&nbsp;Верх модели выполнен из дышащей сетки и синтетических усиливающих материалов. Благодаря небольшой перфорации&nbsp;достигается оптимальная вентиляция, что позволяет поддерживать комфортный микроклимат и избежать ощущения влажности.&nbsp;<br>
 </span><br>
 <b>Особенности:</b><br>
<ul>
	<li>Верх выполнен из синтетического текстиля с технологией&nbsp;VTS. Это позволяет потоку воздуха проникать к стопе, чтобы сохранить прохладу и комфорт во время тренировок.</li>
	<li>Особый рисунок протектора Flexo с поперечными желобками позволяет подошве обуви лучше гнуться для более комфортного переката.&nbsp;<br>
 </li>
	<li>Подошва изготовлена из износостойкой&nbsp;резины высокой плотности DURABILITY, которая замедляет абразивный износ.<br>
 </li>
	<li>Cистемы FLEXSHIELD предусматривает эргономичное распределения материалов в верхней части, что позволяет обуви подстроиться под стопу, обеспечивая стабильность, защиту и устойчивость.<br>
 </li>
	<li>Комбинированная застежка предусматривает шнуровку и липучку в верхней части, что обеспечивает точную и комфортную посадку по ноге и надежно фиксирует кроссовок.&nbsp;</li>
</ul>',
            'Тип' => 'кроссовки',
            'Изображение1' => 'https://www.kant.ru/upload/iblock/6a6/6a60efdc49fc650718915065fe19f022.jpg',
            'Размер' => '30',
            'Пол для фильтра' => 'Женский / Мужской',
            'Менеджер' => 'Дарина Соколова',
            'Статус карточки' => 'черновые фото',
            'Назначение' => 'город',
            'Высота' => 'средние',
            'Защита от промокания' => 'нет',
            'Утепленные' => 'нет',
            'Материал верха' => 'комбинированный',
            'Застежка' => 'классические шнурки / на липучках',
            'Тип колодки' => 'стандартная',
            'Размерная таблица (идентификаторы)' => '3609937',
            'Размерная таблица' => '{"content":[{"widgetName":"tcTable","table":{"title":"\\u041c\\u0443\\u0436\\u0441\\u043a\\u0438\\u0435 \\u043a\\u0440\\u043e\\u0441\\u0441\\u043e\\u0432\\u043a\\u0438 Joma","body":[{"data":["\\u0420\\u0430\\u0437\\u043c\\u0435\\u0440 \\u043f\\u0440\\u043e\\u0438\\u0437\\u0432\\u043e\\u0434\\u0438\\u0442\\u0435\\u043b\\u044f","\\u0420\\u0430\\u0437\\u043c\\u0435\\u0440, RUS","\\u0414\\u043b\\u0438\\u043d\\u0430 \\u0441\\u0442\\u043e\\u043f\\u044b, \\u0441\\u043c"]},{"data":["EUR:36","36","23"]},{"data":["EUR:37","37","23.5"]},{"data":["EUR:37,5","37.5","24"]},{"data":["EUR:38","38","24.5"]},{"data":["EUR:39","39","25"]},{"data":["EUR:40","40","25.5"]},{"data":["EUR:40,5","40.5","26"]},{"data":["EUR:41","41","26.5"]},{"data":["EUR:42","42","27"]},{"data":["EUR:42,5","42.5","27.5"]},{"data":["EUR:43","43","28"]},{"data":["EUR:43,5","43.5","28.5"]},{"data":["EUR:44","44","29"]},{"data":["EUR:44,5","44.5","29.5"]},{"data":["EUR:45","45","30"]},{"data":["EUR:46","46","30.5"]}]}}],"version":0.1}',
            'Страна производства' => 'китай',
        ),
    10 =>
        array (
            'Ид' => '3743936',
            'Штрихкод' => '8445757060655',
            'Код77' => '1814240',
            'Ссылка' => 'https://www.kant.ru/catalog/product/3743933/?utm_medium=cpc&utm_campaign=obuv&utm_content=joma_begovye_krossovki_joma_ferro_jr_marino_rosa&utm_term=3743936&utm_source=yandex-market-msk',
            'Артикул' => 'JFERRS2333V_2333',
            'Наименование товара' => 'Беговые Кроссовки Joma Ferro Jr Marino Rosa (Eur:34)',
            'Цена' => '4990',
            'Старая цена' => '',
            'Остатки на складе998' => '15',
            'Остатки на складе0' => '0',
            'Остатки на складе20' => '0',
            'Остатки на складе30' => '0',
            'Остатки на складе40' => '0',
            'Остатки на складе50' => '0',
            'Категория' => '',
            'Наименование категории' => 'Летние мужские кроссовки',
            'Пол' => 'унисекс',
            'Возраст' => 'взрослый',
            'Бренд' => 'Joma',
            'Вес' => '0',
            'Габариты' => '0/0/0',
            'Модель' => 'Ferro Jr',
            'Модельный год' => '2023',
            'Цвет' => 'розовый / черный',
            'Сезон' => 'лето',
            'Описание' => '<span><b>Joma Ferro Jr </b>- детские кроссовки в стиле casual, которые отлично подойдут для повседневной носки в теплое время года.&nbsp;Верх модели выполнен из дышащей сетки и синтетических усиливающих материалов. Благодаря небольшой перфорации&nbsp;достигается оптимальная вентиляция, что позволяет поддерживать комфортный микроклимат и избежать ощущения влажности.&nbsp;<br>
 </span><br>
 <b>Особенности:</b><br>
<ul>
	<li>Верх выполнен из синтетического текстиля с технологией&nbsp;VTS. Это позволяет потоку воздуха проникать к стопе, чтобы сохранить прохладу и комфорт во время тренировок.</li>
	<li>Особый рисунок протектора Flexo с поперечными желобками позволяет подошве обуви лучше гнуться для более комфортного переката.&nbsp;<br>
 </li>
	<li>Подошва изготовлена из износостойкой&nbsp;резины высокой плотности DURABILITY, которая замедляет абразивный износ.<br>
 </li>
	<li>Cистемы FLEXSHIELD предусматривает эргономичное распределения материалов в верхней части, что позволяет обуви подстроиться под стопу, обеспечивая стабильность, защиту и устойчивость.<br>
 </li>
	<li>Комбинированная застежка предусматривает шнуровку и липучку в верхней части, что обеспечивает точную и комфортную посадку по ноге и надежно фиксирует кроссовок.&nbsp;</li>
</ul>',
            'Тип' => 'кроссовки',
            'Изображение1' => 'https://www.kant.ru/upload/iblock/6a6/6a60efdc49fc650718915065fe19f022.jpg',
            'Размер' => '34',
            'Пол для фильтра' => 'Женский / Мужской',
            'Менеджер' => 'Дарина Соколова',
            'Статус карточки' => 'черновые фото',
            'Назначение' => 'город',
            'Высота' => 'средние',
            'Защита от промокания' => 'нет',
            'Утепленные' => 'нет',
            'Материал верха' => 'комбинированный',
            'Застежка' => 'классические шнурки / на липучках',
            'Тип колодки' => 'стандартная',
            'Размерная таблица (идентификаторы)' => '3609937',
            'Размерная таблица' => '{"content":[{"widgetName":"tcTable","table":{"title":"\\u041c\\u0443\\u0436\\u0441\\u043a\\u0438\\u0435 \\u043a\\u0440\\u043e\\u0441\\u0441\\u043e\\u0432\\u043a\\u0438 Joma","body":[{"data":["\\u0420\\u0430\\u0437\\u043c\\u0435\\u0440 \\u043f\\u0440\\u043e\\u0438\\u0437\\u0432\\u043e\\u0434\\u0438\\u0442\\u0435\\u043b\\u044f","\\u0420\\u0430\\u0437\\u043c\\u0435\\u0440, RUS","\\u0414\\u043b\\u0438\\u043d\\u0430 \\u0441\\u0442\\u043e\\u043f\\u044b, \\u0441\\u043c"]},{"data":["EUR:36","36","23"]},{"data":["EUR:37","37","23.5"]},{"data":["EUR:37,5","37.5","24"]},{"data":["EUR:38","38","24.5"]},{"data":["EUR:39","39","25"]},{"data":["EUR:40","40","25.5"]},{"data":["EUR:40,5","40.5","26"]},{"data":["EUR:41","41","26.5"]},{"data":["EUR:42","42","27"]},{"data":["EUR:42,5","42.5","27.5"]},{"data":["EUR:43","43","28"]},{"data":["EUR:43,5","43.5","28.5"]},{"data":["EUR:44","44","29"]},{"data":["EUR:44,5","44.5","29.5"]},{"data":["EUR:45","45","30"]},{"data":["EUR:46","46","30.5"]}]}}],"version":0.1}',
            'Страна производства' => 'китай',
        ),
    11 =>
        array (
            'Ид' => '3743937',
            'Штрихкод' => '8445757060648',
            'Код77' => '1814240',
            'Ссылка' => 'https://www.kant.ru/catalog/product/3743933/?utm_medium=cpc&utm_campaign=obuv&utm_content=joma_begovye_krossovki_joma_ferro_jr_marino_rosa&utm_term=3743937&utm_source=yandex-market-msk',
            'Артикул' => 'JFERRS2333V_2333',
            'Наименование товара' => 'Беговые Кроссовки Joma Ferro Jr Marino Rosa (Eur:33)',
            'Цена' => '4990',
            'Старая цена' => '',
            'Остатки на складе998' => '11',
            'Остатки на складе0' => '0',
            'Остатки на складе20' => '1',
            'Остатки на складе30' => '0',
            'Остатки на складе40' => '0',
            'Остатки на складе50' => '0',
            'Категория' => '',
            'Наименование категории' => 'Летние мужские кроссовки',
            'Пол' => 'унисекс',
            'Возраст' => 'взрослый',
            'Бренд' => 'Joma',
            'Вес' => '0',
            'Габариты' => '0/0/0',
            'Модель' => 'Ferro Jr',
            'Модельный год' => '2023',
            'Цвет' => 'розовый / черный',
            'Сезон' => 'лето',
            'Описание' => '<span><b>Joma Ferro Jr </b>- детские кроссовки в стиле casual, которые отлично подойдут для повседневной носки в теплое время года.&nbsp;Верх модели выполнен из дышащей сетки и синтетических усиливающих материалов. Благодаря небольшой перфорации&nbsp;достигается оптимальная вентиляция, что позволяет поддерживать комфортный микроклимат и избежать ощущения влажности.&nbsp;<br>
 </span><br>
 <b>Особенности:</b><br>
<ul>
	<li>Верх выполнен из синтетического текстиля с технологией&nbsp;VTS. Это позволяет потоку воздуха проникать к стопе, чтобы сохранить прохладу и комфорт во время тренировок.</li>
	<li>Особый рисунок протектора Flexo с поперечными желобками позволяет подошве обуви лучше гнуться для более комфортного переката.&nbsp;<br>
 </li>
	<li>Подошва изготовлена из износостойкой&nbsp;резины высокой плотности DURABILITY, которая замедляет абразивный износ.<br>
 </li>
	<li>Cистемы FLEXSHIELD предусматривает эргономичное распределения материалов в верхней части, что позволяет обуви подстроиться под стопу, обеспечивая стабильность, защиту и устойчивость.<br>
 </li>
	<li>Комбинированная застежка предусматривает шнуровку и липучку в верхней части, что обеспечивает точную и комфортную посадку по ноге и надежно фиксирует кроссовок.&nbsp;</li>
</ul>',
            'Тип' => 'кроссовки',
            'Изображение1' => 'https://www.kant.ru/upload/iblock/6a6/6a60efdc49fc650718915065fe19f022.jpg',
            'Размер' => '33',
            'Пол для фильтра' => 'Женский / Мужской',
            'Менеджер' => 'Дарина Соколова',
            'Статус карточки' => 'черновые фото',
            'Назначение' => 'город',
            'Высота' => 'средние',
            'Защита от промокания' => 'нет',
            'Утепленные' => 'нет',
            'Материал верха' => 'комбинированный',
            'Застежка' => 'классические шнурки / на липучках',
            'Тип колодки' => 'стандартная',
            'Размерная таблица (идентификаторы)' => '3609937',
            'Размерная таблица' => '{"content":[{"widgetName":"tcTable","table":{"title":"\\u041c\\u0443\\u0436\\u0441\\u043a\\u0438\\u0435 \\u043a\\u0440\\u043e\\u0441\\u0441\\u043e\\u0432\\u043a\\u0438 Joma","body":[{"data":["\\u0420\\u0430\\u0437\\u043c\\u0435\\u0440 \\u043f\\u0440\\u043e\\u0438\\u0437\\u0432\\u043e\\u0434\\u0438\\u0442\\u0435\\u043b\\u044f","\\u0420\\u0430\\u0437\\u043c\\u0435\\u0440, RUS","\\u0414\\u043b\\u0438\\u043d\\u0430 \\u0441\\u0442\\u043e\\u043f\\u044b, \\u0441\\u043c"]},{"data":["EUR:36","36","23"]},{"data":["EUR:37","37","23.5"]},{"data":["EUR:37,5","37.5","24"]},{"data":["EUR:38","38","24.5"]},{"data":["EUR:39","39","25"]},{"data":["EUR:40","40","25.5"]},{"data":["EUR:40,5","40.5","26"]},{"data":["EUR:41","41","26.5"]},{"data":["EUR:42","42","27"]},{"data":["EUR:42,5","42.5","27.5"]},{"data":["EUR:43","43","28"]},{"data":["EUR:43,5","43.5","28.5"]},{"data":["EUR:44","44","29"]},{"data":["EUR:44,5","44.5","29.5"]},{"data":["EUR:45","45","30"]},{"data":["EUR:46","46","30.5"]}]}}],"version":0.1}',
            'Страна производства' => 'китай',
        ),
    12 =>
        array (
            'Ид' => '3743938',
            'Штрихкод' => '8445757060624',
            'Код77' => '1814240',
            'Ссылка' => 'https://www.kant.ru/catalog/product/3743933/?utm_medium=cpc&utm_campaign=obuv&utm_content=joma_begovye_krossovki_joma_ferro_jr_marino_rosa&utm_term=3743938&utm_source=yandex-market-msk',
            'Артикул' => 'JFERRS2333V_2333',
            'Наименование товара' => 'Беговые Кроссовки Joma Ferro Jr Marino Rosa (Eur:31)',
            'Цена' => '4990',
            'Старая цена' => '',
            'Остатки на складе998' => '6',
            'Остатки на складе0' => '0',
            'Остатки на складе20' => '1',
            'Остатки на складе30' => '0',
            'Остатки на складе40' => '0',
            'Остатки на складе50' => '0',
            'Категория' => '',
            'Наименование категории' => 'Летние мужские кроссовки',
            'Пол' => 'унисекс',
            'Возраст' => 'взрослый',
            'Бренд' => 'Joma',
            'Вес' => '0',
            'Габариты' => '0/0/0',
            'Модель' => 'Ferro Jr',
            'Модельный год' => '2023',
            'Цвет' => 'розовый / черный',
            'Сезон' => 'лето',
            'Описание' => '<span><b>Joma Ferro Jr </b>- детские кроссовки в стиле casual, которые отлично подойдут для повседневной носки в теплое время года.&nbsp;Верх модели выполнен из дышащей сетки и синтетических усиливающих материалов. Благодаря небольшой перфорации&nbsp;достигается оптимальная вентиляция, что позволяет поддерживать комфортный микроклимат и избежать ощущения влажности.&nbsp;<br>
 </span><br>
 <b>Особенности:</b><br>
<ul>
	<li>Верх выполнен из синтетического текстиля с технологией&nbsp;VTS. Это позволяет потоку воздуха проникать к стопе, чтобы сохранить прохладу и комфорт во время тренировок.</li>
	<li>Особый рисунок протектора Flexo с поперечными желобками позволяет подошве обуви лучше гнуться для более комфортного переката.&nbsp;<br>
 </li>
	<li>Подошва изготовлена из износостойкой&nbsp;резины высокой плотности DURABILITY, которая замедляет абразивный износ.<br>
 </li>
	<li>Cистемы FLEXSHIELD предусматривает эргономичное распределения материалов в верхней части, что позволяет обуви подстроиться под стопу, обеспечивая стабильность, защиту и устойчивость.<br>
 </li>
	<li>Комбинированная застежка предусматривает шнуровку и липучку в верхней части, что обеспечивает точную и комфортную посадку по ноге и надежно фиксирует кроссовок.&nbsp;</li>
</ul>',
            'Тип' => 'кроссовки',
            'Изображение1' => 'https://www.kant.ru/upload/iblock/6a6/6a60efdc49fc650718915065fe19f022.jpg',
            'Размер' => '31',
            'Пол для фильтра' => 'Женский / Мужской',
            'Менеджер' => 'Дарина Соколова',
            'Статус карточки' => 'черновые фото',
            'Назначение' => 'город',
            'Высота' => 'средние',
            'Защита от промокания' => 'нет',
            'Утепленные' => 'нет',
            'Материал верха' => 'комбинированный',
            'Застежка' => 'классические шнурки / на липучках',
            'Тип колодки' => 'стандартная',
            'Размерная таблица (идентификаторы)' => '3609937',
            'Размерная таблица' => '{"content":[{"widgetName":"tcTable","table":{"title":"\\u041c\\u0443\\u0436\\u0441\\u043a\\u0438\\u0435 \\u043a\\u0440\\u043e\\u0441\\u0441\\u043e\\u0432\\u043a\\u0438 Joma","body":[{"data":["\\u0420\\u0430\\u0437\\u043c\\u0435\\u0440 \\u043f\\u0440\\u043e\\u0438\\u0437\\u0432\\u043e\\u0434\\u0438\\u0442\\u0435\\u043b\\u044f","\\u0420\\u0430\\u0437\\u043c\\u0435\\u0440, RUS","\\u0414\\u043b\\u0438\\u043d\\u0430 \\u0441\\u0442\\u043e\\u043f\\u044b, \\u0441\\u043c"]},{"data":["EUR:36","36","23"]},{"data":["EUR:37","37","23.5"]},{"data":["EUR:37,5","37.5","24"]},{"data":["EUR:38","38","24.5"]},{"data":["EUR:39","39","25"]},{"data":["EUR:40","40","25.5"]},{"data":["EUR:40,5","40.5","26"]},{"data":["EUR:41","41","26.5"]},{"data":["EUR:42","42","27"]},{"data":["EUR:42,5","42.5","27.5"]},{"data":["EUR:43","43","28"]},{"data":["EUR:43,5","43.5","28.5"]},{"data":["EUR:44","44","29"]},{"data":["EUR:44,5","44.5","29.5"]},{"data":["EUR:45","45","30"]},{"data":["EUR:46","46","30.5"]}]}}],"version":0.1}',
            'Страна производства' => 'китай',
        ),
    13 =>
        array (
            'Ид' => '3743939',
            'Штрихкод' => '8445757060686',
            'Код77' => '1814240',
            'Ссылка' => 'https://www.kant.ru/catalog/product/3743933/?utm_medium=cpc&utm_campaign=obuv&utm_content=joma_begovye_krossovki_joma_ferro_jr_marino_rosa&utm_term=3743939&utm_source=yandex-market-msk',
            'Артикул' => 'JFERRS2333V_2333',
            'Наименование товара' => 'Беговые Кроссовки Joma Ferro Jr Marino Rosa (Eur:37)',
            'Цена' => '4990',
            'Старая цена' => '',
            'Остатки на складе998' => '21',
            'Остатки на складе0' => '0',
            'Остатки на складе20' => '1',
            'Остатки на складе30' => '0',
            'Остатки на складе40' => '0',
            'Остатки на складе50' => '0',
            'Категория' => '',
            'Наименование категории' => 'Летние мужские кроссовки',
            'Пол' => 'унисекс',
            'Возраст' => 'взрослый',
            'Бренд' => 'Joma',
            'Вес' => '0',
            'Габариты' => '0/0/0',
            'Модель' => 'Ferro Jr',
            'Модельный год' => '2023',
            'Цвет' => 'розовый / черный',
            'Сезон' => 'лето',
            'Описание' => '<span><b>Joma Ferro Jr </b>- детские кроссовки в стиле casual, которые отлично подойдут для повседневной носки в теплое время года.&nbsp;Верх модели выполнен из дышащей сетки и синтетических усиливающих материалов. Благодаря небольшой перфорации&nbsp;достигается оптимальная вентиляция, что позволяет поддерживать комфортный микроклимат и избежать ощущения влажности.&nbsp;<br>
 </span><br>
 <b>Особенности:</b><br>
<ul>
	<li>Верх выполнен из синтетического текстиля с технологией&nbsp;VTS. Это позволяет потоку воздуха проникать к стопе, чтобы сохранить прохладу и комфорт во время тренировок.</li>
	<li>Особый рисунок протектора Flexo с поперечными желобками позволяет подошве обуви лучше гнуться для более комфортного переката.&nbsp;<br>
 </li>
	<li>Подошва изготовлена из износостойкой&nbsp;резины высокой плотности DURABILITY, которая замедляет абразивный износ.<br>
 </li>
	<li>Cистемы FLEXSHIELD предусматривает эргономичное распределения материалов в верхней части, что позволяет обуви подстроиться под стопу, обеспечивая стабильность, защиту и устойчивость.<br>
 </li>
	<li>Комбинированная застежка предусматривает шнуровку и липучку в верхней части, что обеспечивает точную и комфортную посадку по ноге и надежно фиксирует кроссовок.&nbsp;</li>
</ul>',
            'Тип' => 'кроссовки',
            'Изображение1' => 'https://www.kant.ru/upload/iblock/6a6/6a60efdc49fc650718915065fe19f022.jpg',
            'Размер' => '37',
            'Пол для фильтра' => 'Женский / Мужской',
            'Менеджер' => 'Дарина Соколова',
            'Статус карточки' => 'черновые фото',
            'Назначение' => 'город',
            'Высота' => 'средние',
            'Защита от промокания' => 'нет',
            'Утепленные' => 'нет',
            'Материал верха' => 'комбинированный',
            'Застежка' => 'классические шнурки / на липучках',
            'Тип колодки' => 'стандартная',
            'Размерная таблица (идентификаторы)' => '3609937',
            'Размерная таблица' => '{"content":[{"widgetName":"tcTable","table":{"title":"\\u041c\\u0443\\u0436\\u0441\\u043a\\u0438\\u0435 \\u043a\\u0440\\u043e\\u0441\\u0441\\u043e\\u0432\\u043a\\u0438 Joma","body":[{"data":["\\u0420\\u0430\\u0437\\u043c\\u0435\\u0440 \\u043f\\u0440\\u043e\\u0438\\u0437\\u0432\\u043e\\u0434\\u0438\\u0442\\u0435\\u043b\\u044f","\\u0420\\u0430\\u0437\\u043c\\u0435\\u0440, RUS","\\u0414\\u043b\\u0438\\u043d\\u0430 \\u0441\\u0442\\u043e\\u043f\\u044b, \\u0441\\u043c"]},{"data":["EUR:36","36","23"]},{"data":["EUR:37","37","23.5"]},{"data":["EUR:37,5","37.5","24"]},{"data":["EUR:38","38","24.5"]},{"data":["EUR:39","39","25"]},{"data":["EUR:40","40","25.5"]},{"data":["EUR:40,5","40.5","26"]},{"data":["EUR:41","41","26.5"]},{"data":["EUR:42","42","27"]},{"data":["EUR:42,5","42.5","27.5"]},{"data":["EUR:43","43","28"]},{"data":["EUR:43,5","43.5","28.5"]},{"data":["EUR:44","44","29"]},{"data":["EUR:44,5","44.5","29.5"]},{"data":["EUR:45","45","30"]},{"data":["EUR:46","46","30.5"]}]}}],"version":0.1}',
            'Таблица размеров: Размер, RUS' => '37',
            'Таблица размеров: Длина стопы, см' => '23.5',
            'Страна производства' => 'китай',
        ),
    14 =>
        array (
            'Ид' => '3743940',
            'Штрихкод' => '8445757060679',
            'Код77' => '1814240',
            'Ссылка' => 'https://www.kant.ru/catalog/product/3743933/?utm_medium=cpc&utm_campaign=obuv&utm_content=joma_begovye_krossovki_joma_ferro_jr_marino_rosa&utm_term=3743940&utm_source=yandex-market-msk',
            'Артикул' => 'JFERRS2333V_2333',
            'Наименование товара' => 'Беговые Кроссовки Joma Ferro Jr Marino Rosa (Eur:36)',
            'Цена' => '4990',
            'Старая цена' => '',
            'Остатки на складе998' => '21',
            'Остатки на складе0' => '0',
            'Остатки на складе20' => '1',
            'Остатки на складе30' => '0',
            'Остатки на складе40' => '0',
            'Остатки на складе50' => '0',
            'Категория' => '',
            'Наименование категории' => 'Летние мужские кроссовки',
            'Пол' => 'унисекс',
            'Возраст' => 'взрослый',
            'Бренд' => 'Joma',
            'Вес' => '0',
            'Габариты' => '0/0/0',
            'Модель' => 'Ferro Jr',
            'Модельный год' => '2023',
            'Цвет' => 'розовый / черный',
            'Сезон' => 'лето',
            'Описание' => '<span><b>Joma Ferro Jr </b>- детские кроссовки в стиле casual, которые отлично подойдут для повседневной носки в теплое время года.&nbsp;Верх модели выполнен из дышащей сетки и синтетических усиливающих материалов. Благодаря небольшой перфорации&nbsp;достигается оптимальная вентиляция, что позволяет поддерживать комфортный микроклимат и избежать ощущения влажности.&nbsp;<br>
 </span><br>
 <b>Особенности:</b><br>
<ul>
	<li>Верх выполнен из синтетического текстиля с технологией&nbsp;VTS. Это позволяет потоку воздуха проникать к стопе, чтобы сохранить прохладу и комфорт во время тренировок.</li>
	<li>Особый рисунок протектора Flexo с поперечными желобками позволяет подошве обуви лучше гнуться для более комфортного переката.&nbsp;<br>
 </li>
	<li>Подошва изготовлена из износостойкой&nbsp;резины высокой плотности DURABILITY, которая замедляет абразивный износ.<br>
 </li>
	<li>Cистемы FLEXSHIELD предусматривает эргономичное распределения материалов в верхней части, что позволяет обуви подстроиться под стопу, обеспечивая стабильность, защиту и устойчивость.<br>
 </li>
	<li>Комбинированная застежка предусматривает шнуровку и липучку в верхней части, что обеспечивает точную и комфортную посадку по ноге и надежно фиксирует кроссовок.&nbsp;</li>
</ul>',
            'Тип' => 'кроссовки',
            'Изображение1' => 'https://www.kant.ru/upload/iblock/6a6/6a60efdc49fc650718915065fe19f022.jpg',
            'Размер' => '36',
            'Пол для фильтра' => 'Женский / Мужской',
            'Менеджер' => 'Дарина Соколова',
            'Статус карточки' => 'черновые фото',
            'Назначение' => 'город',
            'Высота' => 'средние',
            'Защита от промокания' => 'нет',
            'Утепленные' => 'нет',
            'Материал верха' => 'комбинированный',
            'Застежка' => 'классические шнурки / на липучках',
            'Тип колодки' => 'стандартная',
            'Размерная таблица (идентификаторы)' => '3609937',
            'Размерная таблица' => '{"content":[{"widgetName":"tcTable","table":{"title":"\\u041c\\u0443\\u0436\\u0441\\u043a\\u0438\\u0435 \\u043a\\u0440\\u043e\\u0441\\u0441\\u043e\\u0432\\u043a\\u0438 Joma","body":[{"data":["\\u0420\\u0430\\u0437\\u043c\\u0435\\u0440 \\u043f\\u0440\\u043e\\u0438\\u0437\\u0432\\u043e\\u0434\\u0438\\u0442\\u0435\\u043b\\u044f","\\u0420\\u0430\\u0437\\u043c\\u0435\\u0440, RUS","\\u0414\\u043b\\u0438\\u043d\\u0430 \\u0441\\u0442\\u043e\\u043f\\u044b, \\u0441\\u043c"]},{"data":["EUR:36","36","23"]},{"data":["EUR:37","37","23.5"]},{"data":["EUR:37,5","37.5","24"]},{"data":["EUR:38","38","24.5"]},{"data":["EUR:39","39","25"]},{"data":["EUR:40","40","25.5"]},{"data":["EUR:40,5","40.5","26"]},{"data":["EUR:41","41","26.5"]},{"data":["EUR:42","42","27"]},{"data":["EUR:42,5","42.5","27.5"]},{"data":["EUR:43","43","28"]},{"data":["EUR:43,5","43.5","28.5"]},{"data":["EUR:44","44","29"]},{"data":["EUR:44,5","44.5","29.5"]},{"data":["EUR:45","45","30"]},{"data":["EUR:46","46","30.5"]}]}}],"version":0.1}',
            'Таблица размеров: Размер, RUS' => '36',
            'Таблица размеров: Длина стопы, см' => '23',
            'Страна производства' => 'китай',
        ),
    15 =>
        array (
            'Ид' => '3743941',
            'Штрихкод' => '8445757060631',
            'Код77' => '1814240',
            'Ссылка' => 'https://www.kant.ru/catalog/product/3743933/?utm_medium=cpc&utm_campaign=obuv&utm_content=joma_begovye_krossovki_joma_ferro_jr_marino_rosa&utm_term=3743941&utm_source=yandex-market-msk',
            'Артикул' => 'JFERRS2333V_2333',
            'Наименование товара' => 'Беговые Кроссовки Joma Ferro Jr Marino Rosa (Eur:32)',
            'Цена' => '4990',
            'Старая цена' => '',
            'Остатки на складе998' => '10',
            'Остатки на складе0' => '0',
            'Остатки на складе20' => '1',
            'Остатки на складе30' => '0',
            'Остатки на складе40' => '0',
            'Остатки на складе50' => '0',
            'Категория' => '',
            'Наименование категории' => 'Летние мужские кроссовки',
            'Пол' => 'унисекс',
            'Возраст' => 'взрослый',
            'Бренд' => 'Joma',
            'Вес' => '0',
            'Габариты' => '0/0/0',
            'Модель' => 'Ferro Jr',
            'Модельный год' => '2023',
            'Цвет' => 'розовый / черный',
            'Сезон' => 'лето',
            'Описание' => '<span><b>Joma Ferro Jr </b>- детские кроссовки в стиле casual, которые отлично подойдут для повседневной носки в теплое время года.&nbsp;Верх модели выполнен из дышащей сетки и синтетических усиливающих материалов. Благодаря небольшой перфорации&nbsp;достигается оптимальная вентиляция, что позволяет поддерживать комфортный микроклимат и избежать ощущения влажности.&nbsp;<br>
 </span><br>
 <b>Особенности:</b><br>
<ul>
	<li>Верх выполнен из синтетического текстиля с технологией&nbsp;VTS. Это позволяет потоку воздуха проникать к стопе, чтобы сохранить прохладу и комфорт во время тренировок.</li>
	<li>Особый рисунок протектора Flexo с поперечными желобками позволяет подошве обуви лучше гнуться для более комфортного переката.&nbsp;<br>
 </li>
	<li>Подошва изготовлена из износостойкой&nbsp;резины высокой плотности DURABILITY, которая замедляет абразивный износ.<br>
 </li>
	<li>Cистемы FLEXSHIELD предусматривает эргономичное распределения материалов в верхней части, что позволяет обуви подстроиться под стопу, обеспечивая стабильность, защиту и устойчивость.<br>
 </li>
	<li>Комбинированная застежка предусматривает шнуровку и липучку в верхней части, что обеспечивает точную и комфортную посадку по ноге и надежно фиксирует кроссовок.&nbsp;</li>
</ul>',
            'Тип' => 'кроссовки',
            'Изображение1' => 'https://www.kant.ru/upload/iblock/6a6/6a60efdc49fc650718915065fe19f022.jpg',
            'Размер' => '32',
            'Пол для фильтра' => 'Женский / Мужской',
            'Менеджер' => 'Дарина Соколова',
            'Статус карточки' => 'черновые фото',
            'Назначение' => 'город',
            'Высота' => 'средние',
            'Защита от промокания' => 'нет',
            'Утепленные' => 'нет',
            'Материал верха' => 'комбинированный',
            'Застежка' => 'классические шнурки / на липучках',
            'Тип колодки' => 'стандартная',
            'Размерная таблица (идентификаторы)' => '3609937',
            'Размерная таблица' => '{"content":[{"widgetName":"tcTable","table":{"title":"\\u041c\\u0443\\u0436\\u0441\\u043a\\u0438\\u0435 \\u043a\\u0440\\u043e\\u0441\\u0441\\u043e\\u0432\\u043a\\u0438 Joma","body":[{"data":["\\u0420\\u0430\\u0437\\u043c\\u0435\\u0440 \\u043f\\u0440\\u043e\\u0438\\u0437\\u0432\\u043e\\u0434\\u0438\\u0442\\u0435\\u043b\\u044f","\\u0420\\u0430\\u0437\\u043c\\u0435\\u0440, RUS","\\u0414\\u043b\\u0438\\u043d\\u0430 \\u0441\\u0442\\u043e\\u043f\\u044b, \\u0441\\u043c"]},{"data":["EUR:36","36","23"]},{"data":["EUR:37","37","23.5"]},{"data":["EUR:37,5","37.5","24"]},{"data":["EUR:38","38","24.5"]},{"data":["EUR:39","39","25"]},{"data":["EUR:40","40","25.5"]},{"data":["EUR:40,5","40.5","26"]},{"data":["EUR:41","41","26.5"]},{"data":["EUR:42","42","27"]},{"data":["EUR:42,5","42.5","27.5"]},{"data":["EUR:43","43","28"]},{"data":["EUR:43,5","43.5","28.5"]},{"data":["EUR:44","44","29"]},{"data":["EUR:44,5","44.5","29.5"]},{"data":["EUR:45","45","30"]},{"data":["EUR:46","46","30.5"]}]}}],"version":0.1}',
            'Страна производства' => 'китай',
        ),
);

require __DIR__ . '/vendor/autoload.php';

// Create new Spreadsheet object
$spreadsheet = new \PhpOffice\PhpSpreadsheet\Spreadsheet();

$sheet = $spreadsheet->setActiveSheetIndex(0);

$rowIndex = 1;

foreach($headers as $columnNumber => $columnName)
{
    $sheet->setCellValueByColumnAndRow($columnNumber + 1, $rowIndex, $columnName);
}

foreach($rows as $row)
{
    foreach($headers as $columnNumber => $columnName)
    {
        if (isset($row[$columnName]))
        {
            $sheet
                ->getCellByColumnAndRow($columnNumber + 1, $rowIndex)
                ->setValue($row[$columnName])
                ->setDataType(PhpSpreadsheet\Cell\DataType::TYPE_STRING);
        }
    }

    $rowIndex++;
}

foreach(array_keys($this->headers) as $columnNumber)
{
    $sheet
        ->getColumnDimensionByColumn($columnNumber + 1)
        ->setAutoSize(true);
}

$writer = PhpSpreadsheet\IOFactory::createWriter($spreadsheet, PhpSpreadsheet\IOFactory::WRITER_XLSX);
$writer->save($path);

The result is in file and screenshot

But if I start use ->setValueExplicit($value, PhpSpreadsheet\Cell\DataType::TYPE_STRING); instead of setValue() everything going to be ok, as i expects.

Can someone explain me why? is it a bug, isn't it?

What features do you think are causing the issue

  • Reader
  • Writer
  • Styles
  • Data Validations
  • Formula Calculations
  • Charts
  • AutoFilter
  • Form Elements

Which versions of PhpSpreadsheet and PHP are affected?

v. 1.25 + php 7.3

@oleibman
Copy link
Collaborator

oleibman commented Sep 6, 2023

All your cell values are nominally strings because of the arrays that you're using. Let's take a look at the cell whose value is '21.8'.

setValue($row[$columnName])

With the default value binder, the cell will wind up with a value of floating point 21.8.

setDataType(PhpSpreadsheet\Cell\DataType::TYPE_STRING)

That tells PhpSpreadsheet to treat the value as a string even though it is floating point. Now, in several places in the writer, when it sees the value should be treated as a string, it uses the value as an index to an array. But the actual value is float, so it tries to use the float value as an index, and that is deprecated (and will generate deprecation messages if you are so configured), and, in addition, will, as you have seen, wind up with an incorrect result (it will use 21 as the index, not 21.8, so if you had another similar value like, say, 21.2, both would wind up using the same index). Using setValueExplicit instead of setValue will, as you have also seen, eliminate the problem, because the value will always be treated as a string in that case.

I think you are probably better off omitting setDataType altogether; that will probably get you the spreadsheet you want without a lot of "number stored as text" indicators. Regardless, PhpSpreadsheet should handle this situation better. Expect a fix within the next day or two.

oleibman added a commit to oleibman/PhpSpreadsheet that referenced this issue Sep 6, 2023
Fix PHPOffice#3711. User set a cell value to float (implicitly by default value binder), then used `setDataType` to change its type to string. This caused a problem for Xlsx Writer, which uses the string cell values as an index into a Shared String array. However, as the cell actually contained a floating point value, Php treated it as an integer index; such a treatment is both deprecated, and leads to invalid values in the spreadsheet.

The use case for `setDataType` is not strong. The user always has the option to use `setValueExplicit` if the type is important. Setting a type afterwards, i.e. irrespective of the value, seems like a peculiar action. Indeed, there are no tests whatever for such use in the unit test suite.

There are two possible approaches to fixing this problem. The first is to add casts to the 3 or 4 places in Writer Xlsx which might be affected by this problem (hoping that you've found them all and realizing that similar changes might be needed for other Writers). The second is to change `setDataType` to call `setValueExplicit` using the current value of the cell, thereby possibly changing the cell value. I have gone with the second option - it seems like a much more logical approach, and guarantees that the content of the cell will always be consistent with its declared type. It is, however, a breaking change; if, for example, you have a cell with a string or numeric value and specify `boolean` to `setDataType`, the cell's value will change to `true` or `false` with no way to get back to the original.
@holdmann
Copy link
Author

holdmann commented Sep 7, 2023

@oleibman thx a lot for the quick and detailed reply, but i think you did not analyzed issue completely (or i not completely understand your previous message).

I know it's hard to analyze cyrillic-based array keys, let me try to explain more clear:

all array values in example above is strings, moreover value '21.8' meets once in all data set.
but in the result it meets at least twice (why?!)

So when i set ->setValue('21'), the REAL result is ->setValue('21.8'), and i think its very strange...
Looks like there is some dictionary that filled during sets, or maybe setValue((string) $val) casts to much suitable var type during following processing.

@oleibman
Copy link
Collaborator

oleibman commented Sep 7, 2023

The problem is that you had one value initialized to '21.8 and others initialized to 21.

'Высота, см' => '21.8', // approximately line 134, winds up in cell AZ1

'Остатки на складе998' => '21', // approximately line 842, winds up in cell O14

'Остатки на складе998' => '21', // approximately line 921, winds up in cell O15

Because of the bug which the PR will fix, cells AZ1, O14, and O15 wound up with the same value, namely 21.8. After the fix, they will all wind up with the proper values. Please let me know if you do not feel that is the case.

oleibman added a commit that referenced this issue Sep 8, 2023
* Inconsistency Between Actual and Declared Type - Minor Break

Fix #3711. User set a cell value to float (implicitly by default value binder), then used `setDataType` to change its type to string. This caused a problem for Xlsx Writer, which uses the string cell values as an index into a Shared String array. However, as the cell actually contained a floating point value, Php treated it as an integer index; such a treatment is both deprecated, and leads to invalid values in the spreadsheet.

The use case for `setDataType` is not strong. The user always has the option to use `setValueExplicit` if the type is important. Setting a type afterwards, i.e. irrespective of the value, seems like a peculiar action. Indeed, there are no tests whatever for such use in the unit test suite.

There are two possible approaches to fixing this problem. The first is to add casts to the 3 or 4 places in Writer Xlsx which might be affected by this problem (hoping that you've found them all and realizing that similar changes might be needed for other Writers). The second is to change `setDataType` to call `setValueExplicit` using the current value of the cell, thereby possibly changing the cell value. I have gone with the second option - it seems like a much more logical approach, and guarantees that the content of the cell will always be consistent with its declared type. It is, however, a breaking change; if, for example, you have a cell with a string or numeric value and specify `boolean` to `setDataType`, the cell's value will change to `true` or `false` with no way to get back to the original.

* Strict Types for New Tests

Consistent with work being done in PR #3718.

* Improve Test

Better match to original issue.

* Typo
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

Successfully merging a pull request may close this issue.

2 participants