Форум: "Базы";
Текущий архив: 2004.01.29;
Скачать: [xml.tar.bz2];
ВнизЭкспорт из 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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.008 c