Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум на Исходниках.RU > VB for Application > Excel, получить не форматированные данные.


Автор: ^D^ima 10.01.18, 15:16
Коллеги, через какое свойство можно вынуть неформатированные данные.
Например ячейка имеет тип "денежный" и имеет значение 10 000,00 р , при щелчке на нее эксель показывает только 10000.

Так вот, как мне получить только 10000?
По Excel.Cells(сч, 10).Text получаю 10 000,00 р

Автор: leo 10.01.18, 16:06
Range.Value

Автор: Bas 10.01.18, 21:42
Цитата ^D^ima @
По Excel.Cells(сч, 10).Text получаю 10 000,00 р

Представление или значение?

Автор: ^D^ima 11.01.18, 06:37
Цитата leo @
Range.Value

да, вернулось число такого вида:
Цитата
3 470

Только что за символ после цифры 3? Он имеет код 160...

Когда я в экселе щелкаю на ячейку, в строке формул 3470 без всяких спецсимволов.

Как-бы программно без этого символа вернуть?


Цитата Bas @
Представление или значение?

Я не понимаю :)

Сам код такой:
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    Excel = Новый COMОбъект("Excel.Application");
    Excel.WorkBooks.Open(ИмяФайла);
    Excel.Sheets(1).Select();
    ЭксельСуммаНал = Excel.Cells(сч, 9).Value;

Это 1С, но разницы для работы с COM нет.

Добавлено
Решение в лоб - удалять эти символы в строке после получения данных, но возможно есть и другое решение

Автор: leo 11.01.18, 07:33
Цитата ^D^ima @
Только что за символ после цифры 3? Он имеет код 160...

Какой еще символ? У тебя ЭксельСуммаНал какой тип имеет?
Попробуй использовать числовой тип (вещественный или целый), а затем уже сам преобразуешь его в строку, как нужно

Добавлено
Еще можно попробовать с Range.Value2, которое (судя по описанию) преобразует денежный формат и время к типу double.

Автор: ^D^ima 11.01.18, 08:11
Цитата leo @
Какой еще символ?

Это символ неразрывного пробела оказывается

http://excel2.ru/articles/preobrazovanie-t...obel-v-ms-excel

https://www.google.ru/search?ei=fQdXWs71Ns-.....0.bD4YWXq_jPo

Добавлено
Цитата leo @
Range.Value2

то-же самое


Цитата leo @
У тебя ЭксельСуммаНал какой тип имеет?

в 1С не задается, подставляется сам

Автор: leo 11.01.18, 08:24
Поясни, что тебе нужно - просто получить строку в нужном тебе формате, или же как-то дальше использовать полученные значения для вычислений?
Дело в том, что Value возвращает Variant с типом данных Currency. Если ты используешь преобразование в строку по умолчанию, то 1C вставляет свой разделитель тысяч (символ 160). Поэтому для преобразования в строку без разделителя нужно либо использовать какое-то специальное форматирование, либо присвоить значение Variant переменной числового типа (double) и уже ее преобразовать в строку (если 1С и тут не влепит разделитель).
Для вычислений же можно использовать непосредственно тип Variant или Currency, т.к. 1С наверняка должна поддерживать эти операции.

Добавлено
Цитата ^D^ima @
в 1С не задается, подставляется сам

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

Автор: ^D^ima 11.01.18, 08:49
leo
Спасибо за развернутый ответ.

Powered by Invision Power Board (https://www.invisionboard.com)
© Invision Power Services (https://www.invisionpower.com)