1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
|
Procedure TForm1.CreerFichierXLS(DataMTO: TDataMTO; DataHoule: TDataHoule);
var
Classeur: _WorkBook;
FeuilleActive: _WorkSheet;
Graph: _Chart;
CollSerie : SeriesCollection;
RangeX, RangeY, Range: ExcelRange;
Axe: Axis;
serie: ExcelXP.Series;
i, j: integer;
Procedure TraceGraphExcel(Classeur:_WorkBook; RangeX, RangeY, RangeYY: ExcelRange; TitrePage, TitreGraph, TitreAxeDroit, TitreAxeGauche: String);overload;
var
FeuilleActive: _WorkSheet;
Graph: _Chart;
CollSerie : SeriesCollection;
Axe: Axis;
serie: ExcelXP.Series;
i, j: integer;
begin
//Ajout d'une feuille au classeur
Graph:=Classeur.Sheets.Add(emptyParam, emptyParam, 1, xlChart, 0) as _Chart;
Graph.Name:=TitrePage;
//creation d'un chart de type ligneXY
Graph.ChartType:=xlXYScatter;
//affectation au graph des valeurs de vitesse
CollSerie:=Graph.SeriesCollection(EmptyParam,0) as SeriesCollection;
//Première serie
Serie:=CollSerie.NewSeries;
Serie.FormulaLocal:='=SERIE(;'+rangeX.Address[true,true,xlA1,True,false]
+';'+rangeY.Address[true,true,xlA1,True,false]+';1)';
Serie.ChartType:=xlXYScatter;
Serie.Border.Color:=RGB(0,0,255);
Serie.Border.Weight:=3;
Serie.MarkerStyle:=0;
//Seconde serie
Serie:=CollSerie.NewSeries;
Serie.FormulaLocal:='=SERIE(;'+rangeX.Address[true,true,xlA1,True,false]
+';'+rangeYY.Address[true,true,xlA1,True,false]+';1)';
Serie.ChartType:=xlXYScatter;
Serie.AxisGroup:=xlSecondary;
Serie.MarkerStyle:=8;
Serie.Border.LineStyle:=0;
Serie.MarkerForegroundColor:=RGB(255,0,0);
Serie.MarkerBackgroundColor:=RGB(255,0,0);
//Mise en forme
//[...]
end;
begin
//Demarrage de Excel
ExcelApplication1.connect;
//Ouverture du classeur
ExcelApplication1.SheetsInNewWorkbook[0]:=1;
Classeur:=ExcelApplication1.Workbooks.Add(emptyParam, 0);
//cache Excel
ExcelApplication1.Visible[0]:=false;
//Activation de la première feuille
FeuilleActive:= Classeur.Worksheets[1] as _WorkSheet;
FeuilleActive.Name:='Mesures';
//Definition des labels des colonnes et remplissage des cellules
//[...]
//=========================================Creation du graphique du vent moyen
//Selection des valeurs pour construire le graph
RangeX:=FeuilleActive.Range[FeuilleActive.Cells.item[2, 1], FeuilleActive.Cells.item[DataMTO.NbMesures, 1]];
RangeY:=FeuilleActive.Range[FeuilleActive.Cells.item[2, 2], FeuilleActive.Cells.item[DataMTO.NbMesures, 2]];
Range:=FeuilleActive.Range[FeuilleActive.Cells.item[2, 3], FeuilleActive.Cells.item[DataMTO.NbMesures, 3]];
TraceGraphExcel(Classeur, RangeX, Range, RangeY, 'Vent_Moyen', 'Vent moyen', 'Vitesse ('+ DataMTO.UniteVent +')', 'Direction (°)');
//==========================================Creation du graphique du vent maxi
//Selection des valeurs pour construire le graph
RangeY:=FeuilleActive.Range[FeuilleActive.Cells.item[2, 4], FeuilleActive.Cells.item[DataMTO.NbMesures, 4]];
Range:=FeuilleActive.Range[FeuilleActive.Cells.item[2, 5], FeuilleActive.Cells.item[DataMTO.NbMesures, 5]];
TraceGraphExcel(Classeur, RangeX, Range, RangeY, 'Vent_Maximal', 'Vent maximal', 'Vitesse ('+ DataMTO.UniteVent +')', 'Direction (°)');
//========================================Creation du graphique de l'agitation
//Selection des valeurs pour construire le graph
RangeY:=FeuilleActive.Range[FeuilleActive.Cells.item[2, 16], FeuilleActive.Cells.item[DataMTO.NbMesures, 16]];
Range:=FeuilleActive.Range[FeuilleActive.Cells.item[2, 17], FeuilleActive.Cells.item[DataMTO.NbMesures, 17]];
//Control de progession
Form3.ProgressBar1.Position:=round(13/(13+Nbcouches)*20+80);
TraceGraphExcel(Classeur, RangeX, RangeY, Range, 'Agitation', 'Agitation', 'Hauteur ('+DataHoule.UniteHoule+')', 'Direction (°)');
//Sauver la chose
Classeur.SaveAs(copy(OpenDialog1.FileName, 0,Length(OpenDialog1.FileName)-3)+'XLS',EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,
xlNoChange,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,0);
//rend Excel visible
ExcelApplication1.Visible[0]:=true;
end; |
Partager