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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.10.2009, 16:40   #1
monushka
Форумчанин
 
Аватар для monushka
 
Регистрация: 26.10.2007
Сообщений: 112
По умолчанию Форматирование таблицы в Excel программно

У меня есть StringGrid, у которого заранее неизвестно количество строк. Данные из него записываются в Excel. Нужно отформатировать по таким параметрам, как границы ячейки, шрифт, выравнивание... Делаю так:

Код:
E:=CreateOleObject('Excel.Application');
E.WorkBooks.Add;
E.Visible:=true;
E.ActiveSheet.PageSetup.Orientation:= 2;
E.ActiveWorkbook.WorkSheets[1].Columns[1].ColumnWidth:= 20;
E.ActiveWorkbook.WorkSheets[1].Columns[2].ColumnWidth:= 13;
E.ActiveWorkbook.WorkSheets[1].Columns[3].ColumnWidth:= 25;
E.ActiveWorkbook.WorkSheets[1].Columns[4].ColumnWidth:= 30;
E.ActiveWorkbook.WorkSheets[1].Columns[5].ColumnWidth:= 6;
E.ActiveWorkbook.WorkSheets[1].Columns[6].ColumnWidth:= 13;
E.ActiveWorkbook.WorkSheets[1].Columns[7].ColumnWidth:= 10;
E.ActiveWorkbook.WorkSheets[1].Columns[8].ColumnWidth:= 10;
E.WorkBooks[1].WorkSheets[1].Rows[1].Font.Bold := True;
for i:=1 to SG1.RowCount do begin
E.WorkBooks[1].WorkSheets[1].Rows[i].Font.Name := 'Times New Roman';
E.WorkBooks[1].WorkSheets[1].Rows[i].Font.Size := 11;
end;
E.ActiveWorkBook.WorkSheets[1].Range['A1:H1'].Select;
E.Selection.HorizontalAlignment:=-4108; //выравнивание по центру
E.Selection.Borders.LineStyle:=1;  //показываем границы ячеек
E.Selection.Borders.Weight:=2;   //стиль границ
E.Selection.WrapText:=true;      //перенос по словам
for i:=1 to SG1.RowCount do
for j:=1 to SG1.ColCount do
E.ActiveSheet.Cells[i,j].Value:=SG1.Cells[j-1,i-1];
E.ActiveSheet.Cells[SG1.RowCount+3,5]:='Итого: ';
E.ActiveSheet.Cells[SG1.RowCount+3,6]:=Edit1.Text;
Но для этого необходимо выделить диапазон ячеек. А как мне выделить диапазон ячеек, если размеры таблицы изначально неизвестны? Т.е. известно только количество столбцов, но неизвестно количество строк.

Код:
E.ActiveWorkBook.WorkSheets[1].Range['A1:H1'].Select;
На сколько я понимаю, в выражении [A1:H1] буквы означают столбцы, а цифры - строки. Пробовала делать цикл:

Код:
for i:=1 to SG1.RowCount do
E.ActiveWorkBook.WorkSheets[1].Range['A1:Hi'].Select;
Но это не работает... Помогите, пожалуйста!
If you wanna make the world a better place take a look at yourself and then make a change!
monushka вне форума Ответить с цитированием
Старый 29.10.2009, 06:36   #2
monushka
Форумчанин
 
Аватар для monushka
 
Регистрация: 26.10.2007
Сообщений: 112
По умолчанию

Неужели никто не сталкивался с подобной проблемой?
If you wanna make the world a better place take a look at yourself and then make a change!
monushka вне форума Ответить с цитированием
Старый 29.10.2009, 11:03   #3
monushka
Форумчанин
 
Аватар для monushka
 
Регистрация: 26.10.2007
Сообщений: 112
По умолчанию

Все, разобралась. Может кому надо будет, выкладываю:

Код:
for i:=1 to SG1.RowCount do begin
E.ActiveSheet.Rows[i].Font.Name := 'Times New Roman';
E.ActiveSheet.Rows[i].Font.Size := 10;
E.ActiveSheet.Range[E.ActiveSheet.Cells.Item[1,1], E.ActiveSheet.Cells.Item[i,8]].Select; //кол-во строк i, кол-во столбцов 8
E.Selection.HorizontalAlignment:=-4108; //выравнивание по центру
E.Selection.Borders.LineStyle:=1;  //показываем границы ячеек
E.Selection.Borders.Weight:=2;
end;
If you wanna make the world a better place take a look at yourself and then make a change!
monushka вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как программно снять пароль с книги Excel nFalcon Microsoft Office Excel 19 20.06.2013 00:21
Форматирование сводной таблицы eda Microsoft Office Excel 1 23.07.2009 11:16
Как программно обновить в BDE таблицы.... grenles БД в Delphi 4 26.03.2009 00:18
Программно связать таблицы Таня84 БД в Delphi 0 20.03.2007 18:43
форматирование таблицы zetrix Microsoft Office Excel 0 30.10.2006 19:44