Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.01.29;
Скачать: CL | DM;

Вниз

Экспорт из DataSet в Excel   Найти похожие ветки 

 
Vick ©   (2003-12-31 11:44) [0]

Доброго всем дня и с наступающим НГ!!!

Может кто еще на начал праздновать ответит на вопрос такого плана: переношу данные из ДатаСета в Эксель с помощью потоков, переноситься вроде, корявенько конечно, но доработаем, теперь нужно с помощью этих же потоков задать формат ячейки (размещение в ней текста по центру, с переносом на по словам и т.п.), ее цвет и контур. У мну не получется :((( Где можно почитать как это наколдовать???

Заранее спасибки :)


 
Vlad ©   (2003-12-31 11:52) [1]

Лист Excel - это COM объект. Вот и работай с ним как с COM-объектом и не мучайся.


 
Vick ©   (2003-12-31 11:58) [2]


> Vlad


А мне нада через поток!!!!!


 
_T1000_ ©   (2003-12-31 12:37) [3]

Привет. С наступающим НГ.
Вот как я делаю ета.

//Создаьот ОЛЕ обект
function DInitObjNew(pFileName: pChar): boolean; cdecl;
begin
try
ExcelApp := CreateOLEObject("Excel.Application");
except
raise Exception.Create("Нету Excel");
Result := False;
Exit;
end;
ExcelApp.Visible := True;
ExcelApp.WorkBooks.Add.SaveAs(string(pFileName));
Result := True;
end;

//Видим или нет
procedure BVisible(flag: Boolean); cdecl;
begin
ExcelApp.Visible := flag;
end;

procedure DSetColumWidth(i: Integer; WidthCol: Double); cdecl;
begin
ExcelApp.WorkBooks[1].ActiveSheet.Columns[i].ColumnWidth := WidthCol;
end;

//Форматирует текст

procedure DSetFormatedString(I, J: LongInt; pVal: PChar; CellJustify, FontSize: Integer; FontStyle: TFontStyles; FontName: PChar); cdecl;
begin
ExcelApp.WorkBooks[1].ActiveSheet.Cells[I, J].Font.Name := String(FontName);
ExcelApp.WorkBooks[1].ActiveSheet.Cells[I, J].Font.Size := FontSize;
if (fsBold in FontStyle) then
ExcelApp.WorkBooks[1].ActiveSheet.Cells[I, J].Font.Bold := True;
if (fsItalic in FontStyle) then
ExcelApp.WorkBooks[1].ActiveSheet.Cells[I, J].Font.Italic := True;
if (fsUnderline in FontStyle) then
ExcelApp.WorkBooks[1].ActiveSheet.Cells[I, J].Font.Underline := True;
if (fsStrikeOut in FontStyle) then
ExcelApp.WorkBooks[1].ActiveSheet.Cells[I, J].Font.fsStrikeOut := True;

if CellJustify <> cjNoSetJustify then
case CellJustify of
cjLeft: ExcelApp.WorkBooks[1].ActiveSheet.Cells[I, J].HorizontalAlignment := xlHAlignLeft;
cjRight: ExcelApp.WorkBooks[1].ActiveSheet.Cells[I, J].HorizontalAlignment := xlHAlignRight;
cjCenter: ExcelApp.WorkBooks[1].ActiveSheet.Cells[I, J].HorizontalAlignment := xlHAlignCenter;
cjJustify: ExcelApp.WorkBooks[1].ActiveSheet.Cells[I, J].HorizontalAlignment := xlHAlignJustify;
end;

ExcelApp.WorkBooks[1].ActiveSheet.Cells[I, J] := string(pVal);
end;

procedure DSetBorders(I,J: PChar; LineStyleB, WeightB: Integer); cdecl;
var K1, K2:String;
begin
K1:=string(I);
K2:=string(J);
case LineStyleB of
0:ExcelApp.WorkBooks[1].ActiveSheet.Range[K1,K2].Borders.LineStyle := xlLineStyleNone;
1:ExcelApp.WorkBooks[1].ActiveSheet.Range[K1,K2].Borders.LineStyle := xlContinuous;
2:ExcelApp.WorkBooks[1].ActiveSheet.Range[K1,K2].Borders.LineStyle := xlDash;
3:ExcelApp.WorkBooks[1].ActiveSheet.Range[K1,K2].Borders.LineStyle := xlDashDot;
4:ExcelApp.WorkBooks[1].ActiveSheet.Range[K1,K2].Borders.LineStyle := xlDashDotDot;
5:ExcelApp.WorkBooks[1].ActiveSheet.Range[K1,K2].Borders.LineStyle := xlDot;
6:ExcelApp.WorkBooks[1].ActiveSheet.Range[K1,K2].Borders.LineStyle := xlDouble;
7:ExcelApp.WorkBooks[1].ActiveSheet.Range[K1,K2].Borders.LineStyle := xlSlantDashDot;
end;

case WeightB of
1:ExcelApp.WorkBooks[1].ActiveSheet.Range[K1,K2].Borders.Weight := xlHairline;
2:ExcelApp.WorkBooks[1].ActiveSheet.Range[K1,K2].Borders.Weight := xlThin;
3:ExcelApp.WorkBooks[1].ActiveSheet.Range[K1,K2].Borders.Weight := xlThick;
4:ExcelApp.WorkBooks[1].ActiveSheet.Range[K1,K2].Borders.Weight := xlMedium;
end;
end;

procedure DSetColorToRange(I,J:PChar;Color:TColor);cdecl;
var K1, K2:String;
begin
K1:=string(I);
K2:=string(J);
ExcelApp.WorkBooks[1].ActiveSheet.Range[K1,K2].Interior.Color:=Color;
end;

Надеюс смог памочь
Пример:

SetColumWidth(3,13.57);
SetFormatedString(4,4, PChar("A1"),0 ,10,[fsBold],PChar,"Arial"));
SetColorToRange(PChar("A1"), PChar("A2"), clRed);
SetBorders(PChar("A1"), PChar("A2"),1,2);

Даполнителнъе фунцъи можеш написат сматря хелп Visual Basic Editor в Eksele


 
Vick ©   (2003-12-31 12:41) [4]

ЛЮДИ!!!! Вы читать умеете??? В том что писать умеете я не сомневаюсь!!!! Поток нужно организовать!!! Какае биты и что в них писать???? Через ОЛЕ я тоже умею!!! :)


 
Соловьев ©   (2003-12-31 13:02) [5]

http://www.delphikingdom.com/helloworld/excelsm.htm
и все статьи со словом Excel


 
jack128 ©   (2004-01-01 11:43) [6]


> ЛЮДИ!!!! Вы читать умеете??? В том что писать умеете я не
> сомневаюсь!!!! Поток нужно организовать!!!

И в чем проблема? Копируй код в TExcelThread.Execute вот те и поток...


 
KSergey ©   (2004-01-03 10:56) [7]

Автору: о каких потоках речь? Уточните. А то общественность, похоже,путается...
Может, Stream имеется в виду? А это вообще как?



Страницы: 1 вся ветка

Текущий архив: 2004.01.29;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.013 c
1-93492
Карелин Артем
2004-01-12 12:54
2004.01.29
Минимизация модальных окон.


3-93334
Miwa
2004-01-04 13:57
2004.01.29
Каким образом можно к одной записи привязать разное количество


11-93411
tamerlan311
2003-05-11 15:36
2004.01.29
BAPDriveBox Version: 1.01 - bugs


9-93322
alxx
2003-07-15 12:13
2004.01.29
Точка на отрезке, ближайшая к данной.


1-93574
mixa
2004-01-17 04:43
2004.01.29
Как изменить дату на компьютере?