При считывании из excel в ТЗ в ячейке появляется лишний пробел

1. Оле-Олеся 6 07.09.10 19:11 Сейчас в теме
Есть в файле excel столбец формата Общий, содержащий 6 цифр (например, 147258). Есть столбец в ТЗ формата Строка(25), куда я считываю экселевский столбец.
В итоге в ТЗ получаю результат вида "147 258", т.е. между цифрами появляется пробел.

Как этого избежать?


Считываю данные вот этим способом http://infostart.ru/public/21350/

	Попытка
		ПолеВводаФайл = ИсточникФайла;
		Состояние(" Внимание! ... идёт загрузка данных!");
		Excel     = Новый COMОбъект("Excel.Application");
		WB         = Excel.Workbooks.Open(ИсточникФайла);
		WS         = WB.Worksheets(1);//указываем номер листа - 1
		arr     	= WS.UsedRange.Value;

		WB.Close(0);
		
	Исключение
		Предупреждение("Внимание! Файл не открыт."+Символы.ПС+"Попробуйте открыть и пересохранить данный файл программой Эксель.");
		Возврат;
	КонецПопытки;
	
	
	Для каждого стрКол Из arr.Выгрузить().Получить(0) Цикл
		ТабПоле.Добавить();
	КонецЦикла;
	
	ТабПоле.ЗагрузитьКолонку(arr.Выгрузить().Получить(0), "Артикул");
	
	ТабПоле.Колонки.Артикул.Ширина 		=  25;

	ЭлементыФормы.ТабПоле.СоздатьКолонки();
Показать
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
9. Оле-Олеся 6 08.09.10 22:43 Сейчас в теме
Эта пакость не исправляется даже так:

Excel = Новый COMОбъект("Excel.Application");
Excel.ReferenceStyle=1;
WB = Excel.Workbooks.Open(ИсточникФайла);
WS = WB.Worksheets(1);
ВсегоСтрок = WS.Cells(1,1).SpecialCells(11).Row;
Сообщить(WS.Cells.Range("A1").NumberFormat); // сообщает @
Сообщить(WS.Cells.Range("A1").NumberFormatLocal); // сообщает @


WS.Cells(ВсегоСтрок,1).NumberFormat = "@";
WB.Save();
Сообщить(WS.Cells.Range("A1").NumberFormat); // сообщает @
Сообщить(WS.Cells.Range("A1").NumberFormatLocal); // сообщает @

WB.Close(0);

А ячейки все равно как числовые передаются...
16. sssss_aaaaa_2011 16.10.16 18:22 Сейчас в теме
(1) Оле-Олеся,
Как этого избежать?
Читать не Value, а Text.
18. cargobird 307 21.10.16 18:40 Сейчас в теме
(16) sssss_aaaaa_2011, не оказалось у меня поля Text, и со значением только Value.
Пришлось на лету разбирать и брать только цифры, да запятые.
2. pvvpvv 10 07.09.10 19:31 Сейчас в теме
Скорее всего в результате загрузки колонка ТЗ имеет тип "Число". А пробел - это обычный "незначащий пробел". После загрузки преобразуйте значения в колонке к типу "Строка".
3. Оле-Олеся 6 07.09.10 19:58 Сейчас в теме
Я ручками создала колонку "Артикул" в ТЗ. Поставила ей тип строка.
И получается, что во время выполнения вот этого действия:

ТабПоле.ЗагрузитьКолонку(arr.Выгрузить().Получить(0), "Артикул");

в ТабПоле колонка Артикул становится числовой? Я правильно Вас поняла?

В каком месте кода нужно значение преобразовать?
4. Оле-Олеся 6 08.09.10 09:52 Сейчас в теме
Все-таки колонка имеет тип Строка. Даже после загрузки значений. Но что делать с пробелом? Убрать я его не могу (а вдруг в будущем будут артикулы с пробелом, а я их тоже почищу). Как сделать чтобы не вставлялся этот пробел?
5. Spartan 365 08.09.10 17:42 Сейчас в теме
Попробуйте изменить формат колонки в файле на "Текстовый". При выгрузке число разделено на триады и в строку пишется с пробелом.
6. Оле-Олеся 6 08.09.10 18:17 Сейчас в теме
Экселевский файлик содержит 7000 строк. Я нажимаю колонку/формат ячеек/текстовый.
Эксель показывает, что все ячейки текстовые. НО на самом деле текстовыми они становятся только если по ячейке два раза щелкнуть (в уголке появляется предупреждение, что ячейка содержит число в виде текста). Щелкнутые ячейки перекидываются правильно (без пробелов). Но я же не могу вручную 7000 ячеек нащелкать...
7. Altair777 645 08.09.10 18:31 Сейчас в теме
(6) А выделить всю колонку, потом меню Формат-Ячейки и т.д.? :)
8. Оле-Олеся 6 08.09.10 22:27 Сейчас в теме
(7) Вы мне просто глаза открыли! Сама бы точно не догадалась!

Читайте внимательней первую строку сообщения на которое отвечаете: "...Я нажимаю колонку/формат ячеек/текстовый..." ;)


Блин. Вроде проблема мелкая, а я уже второй день над ней сижу...
10. Spartan 365 09.09.10 08:39 Сейчас в теме
(6) попробуйте скопировать данные в новую книгу, а там уже играться с форматом - иногда такие танцы с бубном помогают...
12. Оле-Олеся 6 09.09.10 10:49 Сейчас в теме
(10)Пробовала. Пробовала просто в новый файл (руками) сохранить. Пробовала программно из 1С сохранять в другой файл (и до и после преобразования типа). Не помогает

(11) А вот это сейчас попробую
11. pvvpvv 10 09.09.10 08:46 Сейчас в теме
Как выход - колонку таблицы 1с сделай произвольной, загрузи, а потом преобразуй в строку.
13. Boudybuilder 35 16.10.16 04:32 Сейчас в теме
Ну что? Решили проблему? У меня та же самая проблема. Загружаем штрихкоды из екселя. И в них появляются пробелы. Никак это решить не можем, разве что обходить все строки и убирать символы заменой.
14. cargobird 307 16.10.16 08:34 Сейчас в теме
(13) Boudybuilder, помогало только через обход и
ТекЗначение = СтрЗаменить(ТекЗначение, Символы.НПП, "");
Viktoriya_F; +1 Ответить
15. Dnki 4 16.10.16 16:18 Сейчас в теме
Я бы повозился предварительно с Экселем.
- вставил правее новую колонку
- В нее во все строки формулу: =ТЕКСТ(RC[-1];"0")
Получится текстовая строка
- Потом всю колонку Копировать-> Вставить значения
Pasha-Buh; +1 Ответить
17. Оле-Олеся 6 21.10.16 16:10 Сейчас в теме
Вот это да! Со того времени как я задала этот вопрос, я переехала из глубокой Сибири в Москву, проработала несколько лет во франчах, ушла из 1С вообще и уже 2 года пишу на c#. А тут такой привет из прошлого)))
ditp; cargobird; +2 Ответить
19. Dnki 4 21.10.16 19:28 Сейчас в теме
(17) Оле-Олеся
Эге-ге-гей! А что же про замужество и детей не пишете?

Ваш вопрос поднял чел. в
13. Виталий Фантич
20. ВеснушкаК 16 07.04.17 09:21 Сейчас в теме
ЗначЯчНаим=ТекущаяСтраница.Cells(номерстроки, 2).text;
вместо
ЗначЯчНаим=ТекущаяСтраница.Cells(номерстроки, 2).value;
IrinaBelVlad; +1 Ответить
21. user1719247 09.10.23 09:16 Сейчас в теме
(20) Большое спасибо, помогло столкнулся с такой-же проблемой, некоторые артикулы с пробелами => все пробелы нельзя удалять, данный способ сработал.

Если Колонка = 3 Тогда
Значение = СокрЛП(Лист.Cells(СтрокаТабExcel, Колонка).Text);
Иначе
Значение = СокрЛП(Лист.Cells(СтрокаТабExcel, Колонка).Value);
КонецЕсли;
22. Оле-Олеся 6 16.10.23 01:43 Сейчас в теме
О, время нового апдейта "с того времени как я задала этот вопрос")
Сейчас я Lead Software Developer в Канаде, участвую в разработке ERP системы. Круг замкнулся)
23. nomad_irk 76 16.10.23 07:51 Сейчас в теме
(22)Таки научились из EXCEL правильно считывать данные?
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот