Потому что, почему бы не добавить еще один ответ. Я основал это на ответ от VisioN.
function format (val) {
val = (+val).toLocaleString();
val = (+val).toFixed(2);
val += "";
return val.replace(/(\d)(?=(\d{3})+(?:\.\d+)?$)/g, "$1" + format.thousands);
}
(function (isUS) {
format.decimal = isUS ? "." : ",";
format.thousands = isUS ? "," : ".";
}(("" + (+(0.00).toLocaleString()).toFixed(2)).indexOf(".") > 0));
Я проверил со входами:
[ ""
, "1"
, "12"
, "123"
, "1234"
, "12345"
, "123456"
, "1234567"
, "12345678"
, "123456789"
, "1234567890"
, ".12"
, "1.12"
, "12.12"
, "123.12"
, "1234.12"
, "12345.12"
, "123456.12"
, "1234567.12"
, "12345678.12"
, "123456789.12"
, "1234567890.12"
, "1234567890.123"
, "1234567890.125"
].forEach(function (item) {
console.log(format(item));
});
И получил эти результаты:
0.00
1.00
12.00
123.00
1,234.00
12,345.00
123,456.00
1,234,567.00
12,345,678.00
123,456,789.00
1,234,567,890.00
0.12
1.12
12.12
123.12
1,234.12
12,345.12
123,456.12
1,234,567.12
12,345,678.12
123,456,789.12
1,234,567,890.12
1,234,567,890.12
1,234,567,890.13
Просто для удовольствия.
У меня была такая же проблема. Я сделал cell.setCellType (Cell.CELL_TYPE_STRING);
перед чтением строкового значения, что решило проблему независимо от того, как пользователь отформатировал ячейку.
приведите к типу int, затем выполните .toString ()
. Это некрасиво, но работает.
У нас возникла та же проблема, и мы заставили наших пользователей форматировать ячейки как «текст» перед вводом значения. Таким образом Excel правильно сохраняет четные числа в виде текста. Если формат впоследствии изменяется, Excel изменяет только способ отображения значения, но не меняет способ сохранения значения, если значение не будет введено повторно (например, путем нажатия клавиши возврата в ячейке).
Правильно ли Excel Сохраненное значение в виде текста обозначается маленьким зеленым треугольником, который Excel отображает в левом верхнем углу ячейки, если считает, что ячейка содержит число, но отформатирована как текст.
Do you control the excel worksheet in anyway? Is there a template the users have for giving you the input? If so, you can have code format the input cells for you.