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

Обмен - Загрузка и выгрузка в Excel

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

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

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

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

 

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

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

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

См. также

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

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

:D
Под статьей я понимал именно статью, а не 5-6 фраз
11. Альтаир (Altair777) 639 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) 196 07.10.09 15:59 Сейчас в теме
(11) странно, если нельзя, то почему работает?
13. Альтаир (Altair777) 639 07.10.09 16:01 Сейчас в теме
+(11)
Прикрепленные файлы:
14. Альтаир (Altair777) 639 07.10.09 16:02 Сейчас в теме
15. Алексей Плутенко (Noy) 1058 07.10.09 16:15 Сейчас в теме
(14) и не будет. в палитре Екселя всего 56 цветов. об этом четко написано в справке к Екселю, даже все цвета нарисованы (в Екселе открываем Визуал - там справка - поиск "ColorIndex Property")

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

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

Зачем использовать глобальные функции в универсальной обработке?
25. Александр Цегельников (markers) 186 14.10.09 08:45 Сейчас в теме
Есть возможность переопределить любой индекс своим цветом, если интересно могу поделится
26. Руслан Латыпов (levran) 196 14.10.09 09:57 Сейчас в теме
27. Александр Цегельников (markers) 186 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) 186 14.10.09 12:37 Сейчас в теме
Так же могу выложить полностью обработку свою которая не привязана к базе (заполняет тестовыми данными) где применена и раскраска и закачка картинок и автоматическое сжатие картинок путём добавление макроса, выполнение и удаление макроса (чтоб у клиентов не вопило). Если есть интерес, то скажите, выложу.
29. Сергей (UrbSI) 74 14.10.09 14:14 Сейчас в теме
Хех. А мне кажется, что проще в 1С-ке заполнить табличную часть отчета(документа), затем, воспользовавшись атрибутами и методами области таблицы, раскрасить ее, а потом уж через меню "файл-сохранить как" сохранить как файл в формате еxcel. И будет красочно и красиво. :D
30. Александр Цегельников (markers) 186 19.10.09 06:06 Сейчас в теме
(29) Несогласен! Если не смотреть на производительность то да, но вот если смотреть на неё и ещё если тебе надо сделать некоторые операции что через стандартные средства 1С никак не сделать, то очень даже лучше сразу формировать в эксель. Например у нас прайс формируется немного нестандартный (переделан стандартный), Например в нём есть поле "Код" с ведущими нулями и есть ссылка, если просто прогнать через стандартную в 1С, то у кода не будет нулей, и не будет ссылки, наш гореписатель (работал год назад) сделал так: Формировался прайс, сохранялся, открывался через ком, доделывалось нужное (ссылки, тип поля код) что не супер в плане производительности да и вообще всё было сделано очень криво, потому было решено написать формирование прайс-листа с нуля и сразу выгрузку в Excel, добавив поддержку таких фишек как добавление картинок. Конечно мне пришлось попарится и перерыть весь инет через разные поисковики, чтобы подготовить рыбу прайса которую наш 1С прогер наполнит данными. Кстати эту рыбу могу дать! Там перенос данных осуществляется через массив (а не поячеечно).
См. Приложение! В той рыбе нет привязке к ИБ, только подправьте пути.
Прикрепленные файлы:
ВыгрузкаВExcel.epf
31. Руслан Латыпов (levran) 196 24.10.09 23:18 Сейчас в теме
32. Gal_B 16.09.15 10:58 Сейчас в теме
Цвета, к слову сказать, не совпадают. Пришлось "методом тыка" подбирать, но это в принципе не страшно))
Оставьте свое сообщение