Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.01.2013, 22:57   #1
spirit-ua
Форумчанин
 
Аватар для spirit-ua
 
Регистрация: 04.06.2009
Сообщений: 351
По умолчанию Экспорт данных в Excel с заливкой

Всем Привет!

Нужно сделать экспорт данных из StringGrid в Эксель, делаю так:
Код:
var
    ExcelApp, Workbook, Range, Cell1, Cell2, ArrayData  : Variant;
    //TemplateFile : String;
    BeginCol, BeginRow, i, j : integer;
    //RowCount, ColCount : integer;
 begin
    ExcelApp := CreateOleObject('Excel.Application');
 
    ExcelApp.Application.EnableEvents := false;
    Workbook := ExcelApp.WorkBooks.Add;
 
    ArrayData := VarArrayCreate([1, StringGrid1.RowCount, 1, StringGrid1.ColCount], varVariant);
    for i := 1 to StringGrid1.RowCount do
       for j := 1 to StringGrid1.ColCount do
          ArrayData[i,j] := StringGrid1.Cells[j,i];
 
    BeginCol := 1; BeginRow := 1;
    Cell1 := WorkBook.WorkSheets[1].Cells[BeginRow, BeginCol];
    Cell2 := WorkBook.WorkSheets[1].Cells[BeginRow  + StringGrid1.RowCount - 1, BeginCol + StringGrid1.ColCount - 1];
 
    Range := WorkBook.WorkSheets[1].Range[Cell1, Cell2];
    Range.Value := ArrayData;
    ExcelApp.Visible := true;
 end;
все нормально, но у меня StringGrid "раскрашен", причем с разным начертанием и стилем текста который тоже "цветной"...
Свойства текста (стиль, начертание, цвет и т.д.), а также цвет заливки КАЖДОЙ ячейки я храню в отдельном массиве, отсюда вопрос:
- имея все эти данные (свойства текста и заливку) каждой ячейки в массиве есть возможность скопом применить к области ячеек в Экселе, аналогично вот этому "Range.Value := ArrayData;" ???

Дело в том что у меня в StringGrid около 100 строк и 400 колонок (критика по поводу такого кол. колонок уместна но в данном случае по другому никак) и каждая ячейка в StringGrid залита "своим" цветом со своим стилем текста и если красить и делать манипуляцию с текстом для каждой отдельной ячейки в Экселе это занимает много времени (на моей машине около 5 мин.), отсюда и данный вопрос

Помогите...
Мне разрешено открывать только одну страницу - about :blank. Сперва было скучно, но потом я втянулся. Теперь у меня там живет 2 виртуальных друга, и я слышу голоса из розетки!
spirit-ua вне форума Ответить с цитированием
Старый 24.01.2013, 02:17   #2
beegl
instagram
Участник клуба
 
Аватар для beegl
 
Регистрация: 24.05.2008
Сообщений: 1,451
По умолчанию

компонент EMS Advanced Excel Report v1.9.1.1 FullSource
есть пример
Вложения
Тип файла: rar EMS Advanced Excel Report.rar (1,000.7 Кб, 58 просмотров)
beegl вне форума Ответить с цитированием
Старый 24.01.2013, 13:54   #3
spirit-ua
Форумчанин
 
Аватар для spirit-ua
 
Регистрация: 04.06.2009
Сообщений: 351
По умолчанию

Цитата:
Сообщение от beegl Посмотреть сообщение
компонент EMS Advanced Excel Report v1.9.1.1 FullSource
есть пример
пример посмотрел но что и как?

там "сетка" DBGrig, а у мена StringGrid, роль играет? плюс у меня заливка ячеек разная...

Подскажите на пальцах как пользоваться компонентом
Мне разрешено открывать только одну страницу - about :blank. Сперва было скучно, но потом я втянулся. Теперь у меня там живет 2 виртуальных друга, и я слышу голоса из розетки!
spirit-ua вне форума Ответить с цитированием
Старый 24.01.2013, 15:32   #4
beegl
instagram
Участник клуба
 
Аватар для beegl
 
Регистрация: 24.05.2008
Сообщений: 1,451
По умолчанию FlexCelVCL v3.4 for D5-XE3 FullSourcе

вот тоже хороший пак, для создания отчетов, много примеров
(архив упаковал 7-Zip)
Вложения
Тип файла: rar FlexCelVCL.rar (1.66 Мб, 49 просмотров)
beegl вне форума Ответить с цитированием
Старый 24.01.2013, 16:04   #5
spirit-ua
Форумчанин
 
Аватар для spirit-ua
 
Регистрация: 04.06.2009
Сообщений: 351
По умолчанию

Цитата:
Сообщение от beegl Посмотреть сообщение
вот тоже хороший пак, для создания отчетов, много примеров
(архив упаковал 7-Zip)
Вопрос: сетку заполнять и заливать нужно в этих компонентах или через ЭТИ компоненты можно сделать экспорт в эксель своей сетки с заливкой?
Мне разрешено открывать только одну страницу - about :blank. Сперва было скучно, но потом я втянулся. Теперь у меня там живет 2 виртуальных друга, и я слышу голоса из розетки!
spirit-ua вне форума Ответить с цитированием
Старый 24.01.2013, 16:11   #6
beegl
instagram
Участник клуба
 
Аватар для beegl
 
Регистрация: 24.05.2008
Сообщений: 1,451
По умолчанию

и то и другое можно
beegl вне форума Ответить с цитированием
Старый 24.01.2013, 16:27   #7
spirit-ua
Форумчанин
 
Аватар для spirit-ua
 
Регистрация: 04.06.2009
Сообщений: 351
По умолчанию

Цитата:
Сообщение от beegl Посмотреть сообщение
и то и другое можно
извиняюсь за назойливость но хоть на пальцах какой компонент использовать чтоб нему прикрутить сетку и импортнуть ее в эксель с заливкой, а еще лучше пару строчек кода, плиз...
Мне разрешено открывать только одну страницу - about :blank. Сперва было скучно, но потом я втянулся. Теперь у меня там живет 2 виртуальных друга, и я слышу голоса из розетки!
spirit-ua вне форума Ответить с цитированием
Старый 30.01.2013, 22:10   #8
spirit-ua
Форумчанин
 
Аватар для spirit-ua
 
Регистрация: 04.06.2009
Сообщений: 351
По умолчанию

Решил вопрос так:
1. Экспортирую массив с заливкой (значения, названия цветов) в Эксель
2. Программно создаю макрос который заливает ячейки согласно их содержимого и запускаю его (есть минус - нужно разрешать ActiveX в самом Экселе чтоб "левое" приложения могло ковыряться в самом Экселе, ну и макросы соответственно)
3. Очищаю ячейки ("по ходу" это лишнее)
4. Экспортирую поверх заливки нужные данные

Все про все 40 тис. ячеек - в среднем 6 сек. по времени... вуаля...

Критика уместна... Может есть способы почище?
Мне разрешено открывать только одну страницу - about :blank. Сперва было скучно, но потом я втянулся. Теперь у меня там живет 2 виртуальных друга, и я слышу голоса из розетки!
spirit-ua вне форума Ответить с цитированием
Старый 30.01.2013, 22:20   #9
beegl
instagram
Участник клуба
 
Аватар для beegl
 
Регистрация: 24.05.2008
Сообщений: 1,451
По умолчанию

spirit-ua, стандартными компонентами оформили проект?
beegl вне форума Ответить с цитированием
Старый 30.01.2013, 22:34   #10
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

spirit-ua, +1. Не плохо. Смущает 6 сек. Можно пойти другим путем - сделать шаблон-заготовку в формате XML-таблица. Главно в нем заголовок и разметка колонок. Заливка не важна. Работать с ним как с XML-файлом без всякого присутствия экселя. Программно наплодить в нем тучу строк с данными и с указанием для ячеек нужной заливки и записать в файл. Эксель потом, если надо, стартовать используя, например, ShellExecute с передачей имени файла. Кода пожалуй побольше, но скорость на порядок лучше, и ни каких ActiveX
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Экспорт данных из Excel в Word Micklazz Microsoft Office Excel 5 28.03.2012 13:13
Экспорт данных из Excel в Word MSusik Microsoft Office Excel 9 15.11.2010 09:41
Импорт/Экспорт данных Excel на C# МаксимFr Помощь студентам 0 15.09.2010 21:13
Экспорт данных из accessa в excel Tolyopa Общие вопросы C/C++ 0 18.05.2010 00:32
Экспорт данных в Excel boakineo Общие вопросы .NET 1 08.01.2010 19:01