[C# en Excel] Trendlijn aan grafiek toevoegen

Pagina: 1
Acties:
  • 142 views sinds 30-01-2008
  • Reageer

  • Jabbah
  • Registratie: Februari 2004
  • Laatst online: 23-04 08:43
Ik gebruik C# om een Excel sheet met waardes te openen en om van deze waardes een grafiek te maken. Tot zover gaat dit prima.
code:
1
2
3
Excel.Chart xlChart = (Excel.Chart)xlWb.Charts.Add(missing, missing, missing, missing);
xlChart.SetSourceData(xlWs2.get_Range("D1", "AN1"), Excel.XlRowCol.xlRows);
xlChart.ChartType = Excel.XlChartType.xlLineMarkers;

Nu wil ik door deze grafiek een trendlijn trekken. Dit is me in Visual Basic 6.0 wel gelukt, maar in C# loop ik tegen problemen aan. De code die ik tot nu toe heb is:
code:
1
2
3
Excel.SeriesCollection sc = (Excel.SeriesCollection)xlChart.SeriesCollection(Type.Missing);
Excel.Series series = sc.Item(sc.Count);
Excel.Trendline tl = (Excel.Trendline)series.Trendlines(1);

Bij de laatste regel gaat het fout: "Methode Trendlines van klasse Series is mislukt."

Op internet vind ik geen bruikbare code. MSDN is ook vrij summier.

De grote vraag is dus: Hoe voeg ik een trendlijn toe?

  • whoami
  • Registratie: December 2000
  • Laatst online: 16:58
Krijg je niet meer informatie ivm die foutmelding ?

https://fgheysels.github.io/


  • Jabbah
  • Registratie: Februari 2004
  • Laatst online: 23-04 08:43
Ja, wel iets meer, maar daar kan ik niet veel mee:


An unhandled exception of type 'System.Runtime.InteropServices.COMException' occurred in mscorlib.dll

Additional information: Methode Trendlines van klasse Series is mislukt.

en:

Unhandled Exception: System.Runtime.InteropServices.COMException (0x800A03EC): Methode Trendlines van klasse Series is mislukt.
at System.RuntimeType.ForwardCallToInvokeMember(String memberName, BindingFlags flags, Object target, Int32[] aWrapperTypes, MessageData& msgData)
at Excel.Series.Trendlines(Object Index)

  • GX
  • Registratie: Augustus 2000
  • Laatst online: 14-05-2025

GX

Nee.

Ik ken Excel+C# dan verder niet, maar volgens MSDN is er voor Office 2003 geen Trendlines child Object/Property/watdanook voor het Series object.

edit:
|:(, maar wel een methode


Na het lezen van de manual daarvan; Heb je 1) wel trendlines toegevoegd? (S.Trendlines.add()) en 2) Roep je wel de juiste index aan?

[ Voor 42% gewijzigd door GX op 24-10-2005 16:38 ]


  • onkl
  • Registratie: Oktober 2002
  • Laatst online: 15:27
Heb je de meest basale truc al gebruikt: de macro-recorder? :P
Hoe simplisties het moge klinken, vaak geeft'ie een leuke tip (als je je door bakken baggercode heen kan werken)

  • Jabbah
  • Registratie: Februari 2004
  • Laatst online: 23-04 08:43
Voor de volledigheid hier de oplossing:
code:
1
2
3
4
5
Excel.Series series =
    (Excel.Series)xlApp.ActiveChart.SeriesCollection(1);
((Excel.Trendlines)series.Trendlines(Type.Missing)).Add(
    Excel.XlTrendlineType.xlExponential, 2, missing, missing,
    missing, missing, true, missing, missing);


@onkl: De macro-recorder werkt natuurlijk, maar ik had juist problemen om deze om te schrijven naar C#. Met bovenstaande code werkt het.

  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Maar onkl bedoeld dat je de macro-recorder kunt gebruiken om voor jou een voorbeeld te maken van wat jij wilt doen met Excel.

[ Voor 3% gewijzigd door jelmervos op 25-10-2005 10:27 ]

"The shell stopped unexpectedly and Explorer.exe was restarted."


  • onkl
  • Registratie: Oktober 2002
  • Laatst online: 15:27
^^ Yep, vaak weet die macrorecorder je net even die ontbrekende regel te geven; maar goed, probleem is opgelost.:)
Pagina: 1