запятая и точка при сохранении в exel

1. whtblck 96 27.09.12 10:46 Сейчас в теме
ТиС 77
Суть проблемы: формируем печатную форму документа, сохраняю в exel штатными средствами:
Таб.Записать(ИмяФайлаВыгрузки, 1);

В печатную форму выводятся значения типа
072.0012
в exel-е видим
72,0012
нашел чью-то обработку, сохраняющую в exel с через yoksel, добился вывода лидирующих (и конечных) нулей,
072,0012
но зпт вместо тчк все равно остается.
данное значение - код товара у поставщика, и считать он, соответственно, должен именно так
072.0012
не подскажете, что можно сделать?
спасибо...
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. ТатьянкаО 27.09.12 10:57 Сейчас в теме
я меняла настройки в exel-е, но это действует на все данные, а не только, допустим, на нужную колонку
4. whtblck 96 27.09.12 11:13 Сейчас в теме
(2)
спасибо, в любом случае не подходит. exel отправляется поставщику, а какие у него там настройки - пес его знает. данное значение - код товара у поставщика, и считать он, соответственно, должен именно так
3. mikaizh 27.09.12 11:13 Сейчас в теме
5. ТатьянкаО 27.09.12 11:29 Сейчас в теме
(3) mikaizh,
сохранила себе в закладке, тоже иногда нужно

(4) whtblck,
да, в таком случае, этот вариант отпадает
6. dusha0020 1107 27.09.12 11:37 Сейчас в теме
Сохраняйте не штатными стредствами. Подключитесь к Экселю и поставьте где нужно текстовый формат. Ну и запишите через соединение данные.
Вариант 2 - сохраните в текстовый файл, а затем при открытии его через Эксел укажите нужный формат и разделители.
8. whtblck 96 27.09.12 12:49 Сейчас в теме
(6)
как поставить текстовый формат, где нужно?
12. dusha0020 1107 27.09.12 14:20 Сейчас в теме
(8) whtblck, Cells(i,j).NumberFormat = "@"
А лучше сразу на Range формат задавать, внешнее соединение и так медленно работает, чтобы еще по циклу форматы ставить.
.Value = "" + НПП
Только сейчас заметил. Ну что ж. Можно и так:)
13. whtblck 96 27.09.12 14:27 Сейчас в теме
(12)
я ведь сразу для области и ставил:
ОкноЕхсеl.Range(КнигаExcel.Worksheets(1).Cells(11,2),КнигаExcel.Worksheets(1).Cells(11 + КоличествоСтрок() ,2)).NumberFormat = "@";
14. dusha0020 1107 27.09.12 17:35 Сейчас в теме
(13) whtblck, Да я сначала ответил, а потом Ваш код прочитал!
Действие опередило мысль в очередной раз:)))
А как по скорости такой способ?
Предупреждение("Не засыпать пока идет сохранение!!!" );
Нет такой строки в программе?
15. whtblck 96 27.09.12 17:54 Сейчас в теме
(14)
даже не знаю, что сказать...
приходится выбирать между скоростью и корректностью выводимых данных. мне, именно в данном случае, важнее второе. более развернутый ответ - тут
ну а предложишь что-то другое - проверю.
7. mikaizh 27.09.12 12:10 Сейчас в теме
еще можно апостроф добавлять в начало ячейки
http://forum.infostart.ru/forum26/topic58277/
9. whtblck 96 27.09.12 12:50 Сейчас в теме
(7) - не катит, т.к. значение (потом программно считываемое) будет с апострофом
10. vcv 89 27.09.12 13:17 Сейчас в теме
Попробуйте формировать CSV или SYLK. Или договориться с поставщиком на, например, DBF. Или XML.
11. whtblck 96 27.09.12 14:09 Сейчас в теме
(10) - это не наши методы, мы не ищем легких путей :)
вдруг кому еще пригодится, сделал:
про штатное сохранение в ехель забываем, создаем сами (см. мы не ищем легких путей :))
ОкноЕхсеl 	= СоздатьОбъект("Excel.Application");
КнигаExcel 	= ОкноЕхсеl.Application.Workbooks.Add() ;	
// шапка
КнигаExcel.Worksheets(1).Cells(1,2).Value = "Поставщик: ";
КнигаExcel.Worksheets(1).Cells(1,3).Value = "" + СокрЛП(Контрагент.ПолнНаименование);
// и т.д., делаем шапку

// нужные нам ячейки делаем общего формата
ОкноЕхсеl.Range(КнигаExcel.Worksheets(1).Cells(11,2),КнигаExcel.Worksheets(1).Cells(11 + КоличествоСтрок() ,2)).NumberFormat = "@";

//заполняем строки

ВыбратьСтроки();
Пока ПолучитьСтроку() = 1 Цикл
	НПП = НПП + 1;
	НомерСтрокиВЕхел = НомерСтрокиВЕхел + 1;
	КнигаExcel.Worksheets(1).Cells(НомерСтрокиВЕхел,1).Value = "" + НПП;
	КнигаExcel.Worksheets(1).Cells(НомерСтрокиВЕхел,2).Value = "" + СокрЛП(КодПоставщика); // здесь число запишется как текст, т.к мы для этих ячеек установили общий формат
	...
КонецЦикла;

// всякие рамочки и выравнивания		
ОкноЕхсеl.Range(КнигаExcel.Worksheets(1).Cells(11,1),КнигаExcel.Worksheets(1).Cells(11 + НПП,7)).Borders.LineStyle = 1;
ОкноЕхсеl.Range(КнигаExcel.Worksheets(1).Cells(11,1),КнигаExcel.Worksheets(1).Cells(11 + НПП,7)).HorizontalAlignment = 2;
ОкноЕхсеl.Range(КнигаExcel.Worksheets(1).Cells(11,1),КнигаExcel.Worksheets(1).Cells(11 + НПП,7)).VerticalAlignment = 2;
// сохраняю, закрываю ехель
ОкноЕхсеl.ActiveWorkbook.SaveAs(ИмяФайлаВыгрузки);
ОкноЕхсеl.ActiveWorkbook.Close();

Показать


приоткрытии в ехел-е получам в нужной ячейке
072.0012
причем ехель в хинте подсказывает, что число было сохранено как текст
16. nikk911 03.10.12 14:40 Сейчас в теме
Добрый день.
Много слов, а цели нет.
Что вы хотите получить при сохранении в EXCEL?
В EXCEL 072.0012 это должно быть число? или может быть текст?
Какие-то арифметические операции с этим значением в EXCEL будут выполняться или это число может быть как текст?
17. whtblck 96 03.10.12 14:48 Сейчас в теме
(16)
обо всем было сказано выше. проблема уже решена, ее решение - выше
18. SLK_ 29.03.24 15:43 Сейчас в теме
При формировании табличного документа в качестве разделителя для числовых значений использовал ",". В самой 1С в табличной части все отлично, везде разделитель присутствует. При сохранении в EXCEL стандартным способом "Сохранить как" часть столбцов сохраняется как нужно, а в части столбцов исчезает "," и вместо ее появляется " " (пробел) как разделитель. Соответственно значение в столбце резко увеличивается. До слома мозга перепробовал разные EXCELи, настройки в EXCEL в параметрах, использование ФОРМАТ() функции тоже ничего не давало. На разных Windows эффект такой же. Короче причина в моем случае оказалась проста. Столбец, который "правильно" распознавался в EXCEL имел в Свойствах ячейки положение по горизонтали и по вертикали "Центр". Как только выставил у всех нужных ячеек такие же свойства все стало переноситься как часики. Может кому поможет.
Оставьте свое сообщение

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