Horizontal Bar Chart

  • Hi ihr Coder,

    ich würde gerne eine horizontale BarChart erstellen wie unten im Bild (via Excel) zusehen.
    Vielleicht kann mir ja jemand helfen wenn er sowas schon mal gemacht hat.

    Lg Phil-IT

    Einmal editiert, zuletzt von philipp (11. Mai 2015 um 22:42)

  • Ist doch aber horizontal, oder ?

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

  • Da hilft meine ExcelChart UDF (siehe Signatur).

  • Ich hab ne Funktion geschrieben, die eine Chart erstellt (Gdi+). Ich geh jetzt erstmal ins Bett. Morgen guck ich mal, dass ich es änder, sodass die Graphic neugezeichnet wird (WM_Paint), wenn es nötig ist.
    Außerdem guck ich mal, ob ich das Horizontal auch hinzufüge und ne UDF daraus mache.

    Kannst ja schonmal ein Beispiel testen: Hab erstmal deine Daten als Beispiel genommen. (Balkenfarbe,etc. füg ich vielleicht auch noch hinzu.

    MfG Kanashius.

    EDIT: Verdammt... übersehen, dass es für Excel sein soll... (sollte besser lesen lernen :D)
    Naja. Vielleicht kann es nochmal jemand gebrauchen^^
    Ne UDF mach ich vielleicht trotzdem draus :)

  • Für den Download siehe den Link in meiner Signatur.

  • achso sorry water in der mobilen Ansicht sieht man die Signatur nicht! Dankeschön an euch beide, das von water kann ich aber mehr gebrauchen. Nur verstehe ich noch nicht genau wie ich das anwenden muss, kannst du mir da helfen? Wie erstellt man denn einfach eine einfache barchart? Wäre nett wenn du mir einen kleines Skript schreibst.

    LG Philipp

  • Schau Dir in der ZIP-Datei mal das Beispiel _XLChart_BarGroupSet.au3 an.

  • Okay nach langer Arbeit und ewigem hin und her hab ich nun ein gutes Ergebnis! danke für die Hilfe!!

    Eine kleine Frage bleibt, kann man den Abstand oben (für die Überschrift gedacht) weglassen? ansonsten würde ich das vielleicht mit GDI+ lösen..
    *Mit GDI+ gelöst, jetzt die Frage wie ich die Ressourcen wieder schließe, denn bei mir bleibt EXCEL.exe immer geöffnet:D

    Danke nochmal water für die tolle Unterstützung!

    Philipp

    Einmal editiert, zuletzt von philipp (12. Mai 2015 um 17:12)

  • Wie startest Du Excel. Poste mal den entsprechenden Teil Deines Skriptes.

  • Ich starte excel überhaupt nicht. Es wird nur ein OBJ erstellt:

    [autoit]

    Local $oExcel = ObjCreate("Excel.Application")

    [/autoit]

    und später dann halt der entsprechende XLChart Befehl

  • Genau so wird Excel gestartet.
    Poste mal Dein Skript, dann können wir Dir besser helfen.

  • Mein Skript:

    Spoiler anzeigen
    [autoit]


    #include <ExcelChart.au3>
    #include <GDIPlus.au3>
    #include <GDIPlusConstants.au3>

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Main("voltagedrop", "Stahl", "Bronze", "2,02", "1,77")
    Func Main($Name, $Head1, $Head2, $Value1, $Value2)
    Local $oExcel = ObjCreate("Excel.Application")
    $oExcel.Visible = 0
    $oExcel.WorkBooks.Add
    $oExcel.ActiveWorkbook.Sheets(1).Select()
    $oExcel.Activesheet.Cells(2, 1).Value = $Head1
    $oExcel.Activesheet.Cells(3, 1).Value = $Head2
    $oExcel.Activesheet.Cells(2, 2).Value = $Value1
    $oExcel.Activesheet.Cells(3, 2).Value = $Value2
    $oExcel.ActiveSheet.Name = $Name

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Local $asDataRange[3] = [2, "=" & $Name & "!R2C2:R3C2", "=" & $Name & "!R2C3:R3C3"]
    Local $asDataName[3] = [1, "=" & $Name & "!B1"]
    $aoCharts = _XLChart_ChartCreate($oExcel, 1, $xlColumnClustered, "A4:G12", "", "=" & $Name & "!R2C1:R3C1", $asDataRange, $asDataName, False, "", "", "", "")
    _XLChart_ChartSet($aoCharts, $xlBarClustered)
    _XLChart_BarGroupSet($aoCharts.ChartGroups(1), Default, -50)
    _XLChart_ChartExport($aoCharts, @DesktopDir & "\" & $Name & ".png", "PNG")

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    _GDIPlus_Startup()
    $hImage = _GDIPlus_ImageLoadFromFile(@DesktopDir & "\" & $Name & ".png")
    $iX = _GDIPlus_ImageGetWidth($hImage)
    $iY = _GDIPlus_ImageGetHeight($hImage)
    $hClone = _GDIPlus_BitmapCloneArea($hImage, 8, 51, 545, 122, $GDIP_PXF24RGB)
    _GDIPlus_ImageSaveToFile($hClone, @DesktopDir & "\" & $Name & ".jpg")
    _GDIPlus_ImageDispose($hClone)
    _GDIPlus_ImageDispose($hImage)
    _GDIPlus_ShutDown()
    FileDelete(@DesktopDir & "\" & $Name & ".png")

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    EndFunc

    [/autoit]
  • Check function _Excel_Close how to close Excel.

  • _Excel_Close hat nicht funktioniert. Jetzt andere Lösung:

    [autoit]


    $oExcel.Application.DisplayAlerts = 0
    $oExcel.Quit()

    [/autoit]

    Danke für die Hilfe water!


    Lg Phil!

  • Ich sehe grade, dass meine Antwort auf Englisch war. ich poste wohl zu viel im anderen Forum :)
    Hauptsache, es funktioniert!