В php скрипте точка меняется на запятую

lutskboy
На сайте с 22.11.2013
Offline
173
339

привет

есть с гихаба class. SimpleXLSX.php

я им делаю экспорт в  XLSX

но проблема в том что на выходе он меняет точку на запятую

было 3.70 стало 3,70

но если две точки или более то тогда все норм

было 5.67.8 то и на выходе получаем то же самое.

глянул этот класс . ничего такого не нашел.

похоже проблема в локали

$_loc = setlocale(LC_NUMERIC, 0);

setlocale(LC_NUMERIC,'C');

......

setlocale(LC_NUMERIC, $_loc);


кто знает как порешать?

D
На сайте с 28.06.2008
Offline
1101
#1
А вы можете задавать тип поля куда пишите эти цифры? Задайте им текстовое поле.
LEOnidUKG
На сайте с 25.11.2006
Offline
1730
#2
Я не доверяю локалям, поэтому делаю обычный str_replace всегда в тот формат, который нужен.
✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/
lutskboy
На сайте с 22.11.2013
Offline
173
#3
Dram #:
А вы можете задавать тип поля куда пишите эти цифры? Задайте им текстовое поле.

вытаксиваю из базы. походу сам скрипт  SimpleXLSX где то что то мутит

Александр
На сайте с 18.03.2020
Offline
145
#4
lutskboy #:

вытаксиваю из базы. походу сам скрипт  SimpleXLSX где то что то мутит

Скорее всего это проблема форматов в самом excel.
Тут либо действовать как рекомендовали выше: присваивать строки (как текст экспортировать).
Либо уже в файле заменять запятую на точку.

lutskboy
На сайте с 22.11.2013
Offline
173
#5
Александр #:
Тут либо действовать как рекомендовали выше: присваивать строки (как текст экспортировать).
Либо уже в файле заменять запятую на точку.

у меня в бд оно и есть как строки.

в файле тоже не очень хотелось бы менять. это не csv. а xlsx

я открыл его как zip и все равно во всех файлах не нашел  3,70.  а 3.70 нашел. но оно лежит отдельно в хмл файле  \xl\worksheets\sheet1.xml.

все остальное в другом хмл  \xl\sharedStrings.xml

так что и заменить не получается


IS
На сайте с 16.08.2006
Offline
155
#6

Может вначале скрипта задать локаль где точка - десятичный разделитель? типа  setlocale(LC_ALL, "en_US.UTF-8");

https://www.php.net/manual/ru/function.setlocale.php 

Александр
На сайте с 18.03.2020
Offline
145
#7
lutskboy #:
в файле тоже не очень хотелось бы менять. это не csv. а xlsx

В общем-то, тут вообще без разницы csv / xlsx - запятая на точку меняется одной формулой (это уже, как костыль, конечно).

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий