[C# en Excel] Trendlijn aan grafiek toevoegen

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

  • Jabbah
  • Registratie: Februari 2004
  • Laatst online: 12:11
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: 12:36
Krijg je niet meer informatie ivm die foutmelding ?

https://fgheysels.github.io/


  • Jabbah
  • Registratie: Februari 2004
  • Laatst online: 12:11
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
  • Nu online
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)

Eenmaal in ons leven hebben we de mensen gelukkig willen maken. Dat zullen wij onszelf nooit vergeven.


  • Jabbah
  • Registratie: Februari 2004
  • Laatst online: 12:11
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
  • Nu online
^^ Yep, vaak weet die macrorecorder je net even die ontbrekende regel te geven; maar goed, probleem is opgelost.:)

Eenmaal in ons leven hebben we de mensen gelukkig willen maken. Dat zullen wij onszelf nooit vergeven.

Pagina: 1