gifts2017

Выбор цвета в ячейке Excel

Опубликовал Руслан Латыпов (levran) в раздел Обмен - Загрузка и выгрузка в Excel

Подбор цветов для свойства ячейки Interior:

ЛистЭксель.Cells(1,1).Interior.ColorIndex = НомерЦвета;

Делал тут отчет с выводом в Эксель, в интернете внятного описания цветов не нашел, поэтому сваял обработку, которая в цикле выводит цвета для ячеек. Результат на экране =)

Добавил в обработку часть функций по выводу таблицы в Excel. Описание некоторых функций на Инфостарте не нашел, поэтому выкладываю здесь. Буду рад, если инфа окажется полезной.

 

PS. Прошу данную обработку считать не как рабочее произведение, а как примерный макет того, как можно использовать часть функций работы с Excel. Если вдруг у вас нету каких-либо функций или процедур, то автора не пинайте, выложил с учетом применения c обработкой напильником.

Скачать файлы

Наименование Файл Версия Размер
Работа_с_Excel.ert 120
.ert 33,50Kb
09.10.09
120
.ert 33,50Kb Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. GSoft. (GSoft) 07.10.09 11:38
а выложить всю обработку?)
2. Руслан Латыпов (levran) 07.10.09 11:39
(2) да она там в три строчки =)
3. Руслан Латыпов (levran) 07.10.09 14:59
=) первый минус как и первый плюс всегда волнителен, хорошо бы еще узнать причину, но увы и ах.
4. Альтаир (Altair777) 07.10.09 15:15
(3) за три строчки :-)
Кстати, а почему Вы не спросили у andreyho за что он поставил плюс? ;-)
5. Руслан Латыпов (levran) 07.10.09 15:25
(4) плюсики это пазитиф, зачем спрашивать про позитиф =) а вот минусики ... насчет трех строчек, это была не похвальба, там действительно было мало кода, который я и выложил в первоначальной версии этого текста. А после уже написал комментарий про три строчки. Далее было решено выложить более полную версию обработки. поэтому и код из текста был перенес в обработку. Так что не вижу причины для минуса. Просьба (1) была выполнена. Ну хотя ладно, минус так минус. Тоже наука =)
6. Руслан Латыпов (levran) 07.10.09 15:27
(4) кстати логичнее было бы заминусовать комментарий, а не текст и обработку. Имхо канечно же.
7. Альтаир (Altair777) 07.10.09 15:32
(5) Вот-вот... Написали бы статью по работе с Excel'ем средствами 1С, я бы поставил бы БОЛЬШОЙ жирный плюс ;-)
А так.... три строчки кода в описании разве тянут на плюс? Скажите честно, положа рука на сердце. Или, лучше, на желто-красную книжечку :D
А вот на минус тянут. За захламление ресурса.

(6) Я минусовал не коммантерий, а именно обработку.
Даже не саму обработку, а ее отсутствие.
8. Руслан Латыпов (levran) 07.10.09 15:48
(7) Сначала это была статья. И в ней, после комментария, я выложил код обработки по выводу цвета. Чуть позже, когда я закончил писать обработку по выводу в Ексель, кроме цвета были использованы еще другие функции ОЛЕ екселя и появилось желание поделиться найденными приемами, но мне подумалось, что выкладывать весь код обработки слишком громоздко, посему статья превратилась в обработку. Которую я и выложил. Если бы я мог удалять комментарий, я бы свой удалил, чтобы не вводить людей в заблуждение.
9. Руслан Латыпов (levran) 07.10.09 15:51
Вообще первоначальный замысел был сохранить соответствие цветов и номеров. Для себя и других. Подобного ресурса на инфостаре я не нашел, поэтому прошу пояснить что именно Вы считаете "захламлением"?
10. Альтаир (Altair777) 07.10.09 15:53
(8) > Сначала это была статья

:D
Под статьей я понимал именно статью, а не 5-6 фраз
11. Альтаир (Altair777) 07.10.09 15:58
Эх.. жалко нельзя еще один минус поставить.... ;)

57
ЛистЭксель.Cells(Сч,1).Interior.ColorIndex=Сч;
{D:\DOWNLOADS\1С\RABOTA_S_EXCEL.ERT(406)}: Microsoft Office Excel: Нельзя установить свойство ColorIndex класса Interior
12. Руслан Латыпов (levran) 07.10.09 15:59
(11) странно, если нельзя, то почему работает?
13. Альтаир (Altair777) 07.10.09 16:01
+(11)
Прикрепленные файлы:
14. Альтаир (Altair777) 07.10.09 16:02
15. Алексей Плутенко (Noy) 07.10.09 16:15
(14) и не будет. в палитре Екселя всего 56 цветов. об этом четко написано в справке к Екселю, даже все цвета нарисованы (в Екселе открываем Визуал - там справка - поиск "ColorIndex Property")

16. Альтаир (Altair777) 07.10.09 16:18
(15) наверно, автор об этом не знает.
В коде написано:

Для Сч=1 По 255 Цикл
	Сообщить(сч);
	ЛистЭксель.Cells(Сч,2).Value=Сч;	
	ЛистЭксель.Cells(Сч,1).Interior.ColorIndex=Сч;
КонецЦикла;
...Показать Скрыть
17. Алексей Плутенко (Noy) 07.10.09 16:20
15+ причем у автора на скриншоте тоже всего 56 цветов, а в коде счетчик идет до 255...
18. Альтаир (Altair777) 07.10.09 16:27
(17) У меня уже была мысль, что автор - это совсем не автор ;)
19. Алексей Плутенко (Noy) 07.10.09 16:36
(18) Ты слишком строг. Автор захотел поделиться "открытием", которое неважно оформил, за что получил от тебя минус. А ты начинаешь "наезжать"...
20. Альтаир (Altair777) 07.10.09 16:44
(19) Ладненько, больше не буду :-)
Но минус я поставил заслуженно, хоть и заблаговременно.
Интуиция...
21. Руслан Латыпов (levran) 07.10.09 21:03
22. GSoft. (GSoft) 08.10.09 10:50
Объем = глФРМ<<?>>(Товар.РеквОбъем);
{C:\TEMP\РАБОТА_С_EXCEL.ERT(336)}: Функция не обнаружена (глФРМ)
Продажи = глФРМ<<?>>(тзСводнаяТаблицаПоТовару.Продажи);
{C:\TEMP\РАБОТА_С_EXCEL.ERT(337)}: Функция не обнаружена (глФРМ)
Остаток = глФРМ<<?>>(тзСводнаяТаблицаПоТовару.Остаток);
{C:\TEMP\РАБОТА_С_EXCEL.ERT(338)}: Функция не обнаружена (глФРМ)
ОстатокВДнях = глФРМ<<?>>(тзСводнаяТаблицаПоТовару.ОстатокВДнях);
{C:\TEMP\РАБОТА_С_EXCEL.ERT(339)}: Функция не обнаружена (глФРМ)
23. Альтаир (Altair777) 08.10.09 11:48
(22) Автор, можно было бы часть функций из Глобальника в обработку добавить.
Там все равно говнокода много и так :-)
Или хотя бы указывайте, что это работает в таких-то и таких-то конфигурациях.
24. Piotr (Tolpinski) 14.10.09 07:52
Объем = глФРМ<<?>>(Товар.РеквОбъем);
{C:\! NEW\2009-10-14\РАБОТА_С_EXCEL.ERT(336)}: Функция не обнаружена (глФРМ)

Зачем использовать глобальные функции в универсальной обработке?
25. Александр Цегельников (markers) 14.10.09 08:45
Есть возможность переопределить любой индекс своим цветом, если интересно могу поделится
26. Руслан Латыпов (levran) 14.10.09 09:57
27. Александр Цегельников (markers) 14.10.09 12:23
Это делаем в начале работы с экселем
Цвета = Excel.ActiveWorkbook.Colors.Выгрузить(); // Получим все индексы цвета экселя
Цвета[51] = "14725528"; // Переопределим 51-й индекс цвета своим
МассивДляExcel = Новый COMSafeArray(Цвета,"VT_I4"); // Конвертируем в массив используемый в COM, в ковычках указан тип значений
Excel.ActiveWorkbook.Colors = МассивДляExcel; // Скормим экселю его же масив с переопределёнными элементами


А когда нам надо использовать переопределённый нами выше индекс пишем:
АктивнаяКнига.Cells(10, 5).Interior.Color = Цвета[51]; // Красим

А терь ответ на возможный вопрос "А почему не переопределённый индекс присваиваешь, а цвет?" Отвечаю, опытным путём установлено что если ты переопределяешь индекс и с таким цветом другой индекс уже есть, он не переопределяется... а когда мы задаём ячейкам именно цвет а не индекс, он сам автоматически находит и подставляет нужный индекс.
А теперь, как получить цифру цвета "14725528" ? Я не нашёл как сконвертировать из 1С в эксель цвет, поэтому пришлось написать прожку: http://infostart.ru/public/58687/
28. Александр Цегельников (markers) 14.10.09 12:37
Так же могу выложить полностью обработку свою которая не привязана к базе (заполняет тестовыми данными) где применена и раскраска и закачка картинок и автоматическое сжатие картинок путём добавление макроса, выполнение и удаление макроса (чтоб у клиентов не вопило). Если есть интерес, то скажите, выложу.
29. Сергей (UrbSI) 14.10.09 14:14
Хех. А мне кажется, что проще в 1С-ке заполнить табличную часть отчета(документа), затем, воспользовавшись атрибутами и методами области таблицы, раскрасить ее, а потом уж через меню "файл-сохранить как" сохранить как файл в формате еxcel. И будет красочно и красиво. :D
30. Александр Цегельников (markers) 19.10.09 06:06
(29) Несогласен! Если не смотреть на производительность то да, но вот если смотреть на неё и ещё если тебе надо сделать некоторые операции что через стандартные средства 1С никак не сделать, то очень даже лучше сразу формировать в эксель. Например у нас прайс формируется немного нестандартный (переделан стандартный), Например в нём есть поле "Код" с ведущими нулями и есть ссылка, если просто прогнать через стандартную в 1С, то у кода не будет нулей, и не будет ссылки, наш гореписатель (работал год назад) сделал так: Формировался прайс, сохранялся, открывался через ком, доделывалось нужное (ссылки, тип поля код) что не супер в плане производительности да и вообще всё было сделано очень криво, потому было решено написать формирование прайс-листа с нуля и сразу выгрузку в Excel, добавив поддержку таких фишек как добавление картинок. Конечно мне пришлось попарится и перерыть весь инет через разные поисковики, чтобы подготовить рыбу прайса которую наш 1С прогер наполнит данными. Кстати эту рыбу могу дать! Там перенос данных осуществляется через массив (а не поячеечно).
См. Приложение! В той рыбе нет привязке к ИБ, только подправьте пути.
Прикрепленные файлы:
ВыгрузкаВExcel.epf
31. Руслан Латыпов (levran) 24.10.09 23:18
32. Gal_B 16.09.15 10:58
Цвета, к слову сказать, не совпадают. Пришлось "методом тыка" подбирать, но это в принципе не страшно))
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа