Форум: "Начинающим";
Текущий архив: 2007.04.29;
Скачать: [xml.tar.bz2];
ВнизРабота с Excel Найти похожие ветки
← →
Neket (2007-04-12 12:25) [0]Подскажите пожалуйста где можно почитать про полноценную работу с Excel документом с помощью DELPHI. В частности интересует как програмно создать объедененную ячейку. Раскрасить её. Нарисовать табличку и т.д.
P.S.
Заодно интересует. Как можно создавать Excel документ в Delphi со встроенный VB скриптом.
← →
Megabyte © (2007-04-12 13:33) [1]
> Подскажите пожалуйста где можно почитать про полноценную работу с Excel документом с помощью DELPHI. В частности интересует как програмно создать объедененную ячейку. Раскрасить её. Нарисовать табличку и т.д.
1) Все команды VBA(макросы в Excel) создаются с помощью "записать макрос" в самом Excel и интерпретируются под Дельфи(ну там = заменить на := ).
2)В Дельфи c Excel работаешь как с COM-сервером.
Где почитать, не скажу, могу образец кода дать?
← →
Neket (2007-04-12 14:02) [2]
> Где почитать, не скажу, могу образец кода дать?
Давай.
← →
Megabyte © (2007-04-12 14:34) [3]
var
otchet, WorkBook, Sheet: Variant;
...
otchet := CreateOleObject("Excel.Application"); //объект
otchet.SheetsInNewWorkbook := 1;
WorkBook := otchet.WorkBooks.Add; //рабочий док-т Excel
Sheet:= WorkBook.WorkSheets[1]; //страница
//установки заголовка отчета
Sheet.Cells[1, 2].font.size := 15;
Sheet.Cells[2, 2].font.size := 13;
Sheet.Cells[1, 2].font.bold := true;
Sheet.Cells[2, 2].font.italic := true;
Sheet.Cells[1, 2].Value := HeaderOtchet;
Sheet.Cells[2, 2].Value := date;
Sheet.columns[2].ColumnWidth := 25;
Sheet.columns[4].NumberFormat := "@";
Sheet.columns[5].NumberFormat := "@";
//окантовка названий полей
for i := 1 to fOtchetDataSet.FieldCount do //fOtchetDataSet - Набор Данных
begin
Sheet.Cells[4, i+1].font.size := 12;
Sheet.columns[i+2].ColumnWidth := 15;
Sheet.columns[i+2].HorizontalAlignment := xlleft;
for j := 1 to 4 do
Sheet.Cells[4, i+1].Borders[j].LineStyle := 1;
end;
//вывод названий полей
for i := 0 to fOtchetDataSet.FieldCount-1 do
begin
//установки строки названий
Sheet.Range["c4"].Rowheight := 20;
Sheet.Cells[4, i+2].font.bold := true;
//заполнение названий полей
Sheet.Cells[4, i+2].Value := fOtchetDataSet.Fields.Fields[i].FieldName;
end;
fOtchetDataSet.First;
//2-й цикл выгрузки данных в Excel
For i := 1 to fOtchetDataSet.RecordCountFromSrv do
begin
for k := 0 to fOtchetDataSet.FieldCount-1 do
begin
Sheet.Cells[i+4, k+2] := fOtchetDataSet.FieldList.Fields[k].Value;
if fOtchetDataSet.FieldList.Fields[1].Value = "???" then
begin
for j := 1 to fOtchetDataSet.FieldCount do
Sheet.Cells[i+4, j+1].font.bold := true;
end;
end;
fOtchetDataSet.Next;
end;
Workbook.SaveAs(OtchetFullName, xlNormal, "", "", false, false);
...
WorkBook.close;
otchet := Unassigned;
← →
Neket (2007-04-12 15:06) [4]Спасибо... Очень помог.
← →
Neket (2007-04-12 16:49) [5]Ещё вопросик возник.
XL:= CreateOleObject("Excel.Application");
XL.Workbooks.Add;
XL.Range["A1:AE1"].Select;
XL.Selection.Borders.Weight:=2;
Тем самым мы окрашиваем все стороны прямоугольника всех ячеек тонкой линией. А как горизонтальные линии окрасить тонкой линиией а вертикальные толстой?
← →
Megabyte © (2007-04-12 17:39) [6]
//окантовка названий полей
...
for j := 1 to 4 do
Sheet.Cells[4, i+1].Borders[j].LineStyle := 1;
j := от 1 до 4, четыре стороны ячейки.
свойство LineStyle - тип линии.
← →
Neket (2007-04-12 17:50) [7]Аааааа вот он как... А я блин уже час мучаюсь. Не могу понять. Спасибо
← →
Neket (2007-04-13 09:34) [8]Ещё вопросик возник.
А как задать формат ячейки так, чтобы текст в ней был не слева на право на снизу вверх.
← →
Megabyte © (2007-04-13 09:58) [9]Хз. Если знаешь, как сделать в самом Excel, то запиши макрос и посмотри..
← →
Rezya (2007-04-13 10:01) [10]В Excel это задается через формат ячеек->Выравниване->Ориентация текста.
Ну и там его поворачиваешь на тот угол который необхдимо.
← →
TIF © (2007-04-13 10:05) [11]Ну и там его поворачиваешь на тот угол который необхдимо.
да, в отличие от ворда
← →
Neket (2007-04-13 10:08) [12]Да Rezya но это нада сделать програмно. А как? я не знаю :-)
← →
Neket (2007-04-13 10:32) [13]Все разобрался...
Кому интересно то это делается так.
XL.Range["J7","BF7"].Select;
XL.selection.Orientation:=xlUpward;
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.04.29;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.042 c