Модераторы: MetalFan
  

Поиск:

Закрытая темаСоздание новой темы Создание опроса
> Delphi и Exel (рисование таблиц, закрашивание яче), Delphi и Exel (рисование таблиц) 
:(
    Опции темы
AJIeKcEu
  Дата 3.8.2006, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 26.10.2005
Где: Уфа

Репутация: нет
Всего: 0



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



Вот так можно загрузить, записать и сохранить в фаил Екселевский:

Код

const
     files1='C:\1.xls';

var
  dbCon, exelDB, Sheet : Variant;
  r:string;
begin

  dbCon := CreateOleObject('Excel.Application');
   exelDB := dbCon.Workbooks.Open(files1);
   Sheet := exelDB.ActiveSheet;

     r:=Sheet.Cells[3, 3]; //загрузка с ячейки
      exelDB.ActiveSheet.Cells[1, 1].Value := r;// запись в ячейку


     exelDB.Close(SaveChanges := True);
    dbCon.Workbooks.Close;
  dbCon.Quit;
  label1.Caption:=r;
end;




Скажите пожалуйста как реализовать....
PM MAIL WWW ICQ   Вверх
_hunter
Дата 3.8.2006, 14:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 2
Всего: 98



запиши в екселе макрос, выполняющий требуемын действия, и перенеси его на делфи...


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Albinos_x
Дата 3.8.2006, 17:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 15
Всего: 108





--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
AJIeKcEu
Дата 8.8.2006, 11:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 26.10.2005
Где: Уфа

Репутация: нет
Всего: 0



to Albinos_x 
Эт не то .

to _hunter 
 

я без макросов сделал..






)_______________________
таблицу рисовать я понял как...

Может кто знает как заливать ячейки в Exele через Delphi
PM MAIL WWW ICQ   Вверх
_hunter
Дата 8.8.2006, 11:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 2
Всего: 98



я знаю:
запиши в екселе макрос, выполняющий требуемын действия, и перенеси его на делфи...


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
AJIeKcEu
Дата 9.8.2006, 05:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 26.10.2005
Где: Уфа

Репутация: нет
Всего: 0



to _hunter 
а как это сделать... и перенести на делфи? (залить ячейки)
PM MAIL WWW ICQ   Вверх
Fedia
Дата 9.8.2006, 06:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 465
Регистрация: 2.8.2006
Где: первым встречаю р ассвет

Репутация: нет
Всего: 13



Цитата(AJIeKcEu @  8.8.2006,  11:03 Найти цитируемый пост)
Может кто знает как заливать ячейки в Exele через Delphi

Попробуй так:
Код

exelDB.ActiveSheet.Cells.Item[i,11].Interior.ColorIndex := 46

А на счет макросов тебе дело советуют. Раз научишься и куча вопросов по Excel-ю отпадет.


--------------------
Накануне решающей битвы
Я иду, и надеждою зыбкой
Озаряется эта дорога,
Я мечтаю увидеть улыбку
На лице победившего Бога…
PM MAIL ICQ   Вверх
_hunter
Дата 9.8.2006, 10:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 2
Всего: 98



AJIeKcEu, ты начни для начала... smile
да и код макроса мог бы сюда запостить...


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
AJIeKcEu
Дата 10.8.2006, 05:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 26.10.2005
Где: Уфа

Репутация: нет
Всего: 0



to Fedia 

ок санкс..  smile  подошло..


________________________________________
 smile  я в экселе еще не макросовал, да и как макросы через делфу запускать тож незнаю...

Пожскажите плиз, или линки дайте..
PM MAIL WWW ICQ   Вверх
Fedia
Дата 10.8.2006, 07:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 465
Регистрация: 2.8.2006
Где: первым встречаю р ассвет

Репутация: нет
Всего: 13



AJIeKcEu, 
1. в Excel: Сервис->Макрос->Начать запись.
2. Осуществляешь нужные действия (н-р: закрашиваешь ячейку).
3. Сервис->Макрос->Остановить запись.
4. Сервис->Макрос->Макросы -> Изменить.
5. Получаешь макрос:
Код

    With Selection.Interior
        .ColorIndex = 6
        .Pattern = xlSolid
    End With

6. Переводишь код VD в object pascal:
Код

exelDB.ActiveSheet.Cells.Item[i,11].Interior.ColorIndex := 6.

7. Иногда для перевода кода из макроса приходится перебирать возможные варианты и исключать из макроса лишний код (н-р: .Pattern = xlSolid).
ЗЫ: наверняка по поиску ты нашел бы более подробное описание.


--------------------
Накануне решающей битвы
Я иду, и надеждою зыбкой
Озаряется эта дорога,
Я мечтаю увидеть улыбку
На лице победившего Бога…
PM MAIL ICQ   Вверх
AJIeKcEu
Дата 10.8.2006, 10:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 26.10.2005
Где: Уфа

Репутация: нет
Всего: 0



ок.. санкс...  smile 



У меня возник такой вопрос...

Мне нужно создать Exel евский фаил в определенной директории (допустим с:/test) с именем 1 , с одной страницой
и записать в него данные (ну эт знаю как).
С проверкой, если нет файла с таким именем то создать , если есть то предупредить и другое имя..


Код

                 dbCon := CreateOleObject('Excel.Application');
                 dbCon.DisplayAlerts := false; // что б не выскакивало сообщение  о сохронении (что б автоматом сохранялось надо
                 dbCon.Workbooks.Add;// 3 странице, а для одной (-4167); не получается ерор выскакивает..

                  dbCon.Visible:=true;// что бдокумент виден был
                  dbCon.Workbooks.Close;
                  dbCon.Quit;



 smile 
PM MAIL WWW ICQ   Вверх
Fedia
Дата 10.8.2006, 12:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 465
Регистрация: 2.8.2006
Где: первым встречаю р ассвет

Репутация: нет
Всего: 13



AJIeKcEu, можно так:
Код

  if not FileExists('C:\text\1.xls') then
  dbCon.Workbooks.item[1].SaveAs('C:\text\1.xls') else
  if SaveDialog1.Execute then
  dbCon.Workbooks.item[1].SaveAs(SaveDialog1.FileName);



--------------------
Накануне решающей битвы
Я иду, и надеждою зыбкой
Озаряется эта дорога,
Я мечтаю увидеть улыбку
На лице победившего Бога…
PM MAIL ICQ   Вверх
AJIeKcEu
Дата 11.8.2006, 05:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 26.10.2005
Где: Уфа

Репутация: нет
Всего: 0



 smile to Fedia  санкс.. ок.

а как создать к 3 имеющимся страница ExelЯ еще одну, или удалить?)
PM MAIL WWW ICQ   Вверх
Fedia
Дата 11.8.2006, 06:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 465
Регистрация: 2.8.2006
Где: первым встречаю р ассвет

Репутация: нет
Всего: 13



Цитата(AJIeKcEu @  11.8.2006,  05:59 Найти цитируемый пост)
а как создать к 3 имеющимся страница ExelЯ еще одну, или удалить?)


Код

//удаляем 3-й
dbCon.WorkBooks[1].WorkSheets[3].Delete;
//добавляем новый
dbCon.WorkBooks[1].WorkSheets.Add();

ЗЫ: так макросами и не хочешь пользоваться ?


--------------------
Накануне решающей битвы
Я иду, и надеждою зыбкой
Озаряется эта дорога,
Я мечтаю увидеть улыбку
На лице победившего Бога…
PM MAIL ICQ   Вверх
  
Закрытая темаСоздание новой темы Создание опроса
Правила форума "Delphi: ActiveX/СОМ/CORBA"

Rrader
Girder

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Delphi
  • Вопросы по SQL и вопросы по базам данных, не связанные с Delphi, задавать здесь

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Rrader, Girder.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: ActiveX/СОМ/CORBA | Следующая тема »


 




[ Время генерации скрипта: 0.0604 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.