über mich
mein motto

Visual C# 2008 - Das Videotraining von Lars Keller

followme

Get your 'feeds' on Follow me on Twitter Currently no podcasts available

recentposts

recentcomments

Comment RSS

community

Community Leader / Insider Program VSTO Taskforce Just Community .NET Developer Group Braunschweig

VSTO 4: SparkLines per Code erstellen

10. Juni 2010 | Geändert: 11. Juni 2010 | MS Office | msdn | MVP | VSTO 0

Mit dem neuen Excel 2010 wurden die SparkLines eingeführt, welche sich mit der neuen VSTO 4 Version programmieren lassen.

Was ist ein SparkLine und wie sieht dieses aus?

 SparkLines sind kleine Diagramme, die in einer einzelnen Excelzelle abgebildet werden.

SparkLines SparkColumnStacked100

 

 

 

 

 

Das Diagramm ist in der Spalte D zu erkennen und ist als SparkColumnStacked100 dargestellt.

sparkline_menu

SparkLines können ganz einfach über das entsprechende SparkLine-Tab optisch angepasst werden.


Doch wie erstelle ich diese per Code?

Das ist relativ einfach. Alles was dafür benötigt wird, ist ein Range-Objekt. Ein Range-Objekt ist ein definierter Bereich, welcher aus Zellen besteht. Es ist dabei egal, ob es aus mehreren Zellen oder nur aus einer Zelle besteht.

 Range sparklineRange = sheet.get_Range("D1");
SparklineGroup sparkline = sparklineRange.SparklineGroups.Add(XlSparkType.xlSparkColumnStacked100, "A1:C1");

Nachdem das Range-Objekt definiert wurde, wird diesem eine SparkLineGroups hinzugefügt. Eine SparkLine benötigt die Darstellungsart und die Datenquelle, aus welcher das Diagramm generiert werden soll. Die Darstellungsart kann aus drei verschiedenen Diagrammarten (Linien-, Säulen- oder Gewinn/Verlust-Diagramm) gewählt werden.

 sparkline.SeriesColor.ThemeColor = XlThemeColor.xlThemeColorAccent3;
sparkline.Points.Highpoint.Visible = true;
sparkline.Points.Firstpoint.Visible = true;
sparkline.Points.Negative.Visible = true;

 

Das SparkLine kann auch bspw. in der Graphenfarbe verändert werden. Alles was dafür getan werden muss, ist eine der entsprechenden XlThemeColor-Werte auszuwählen. Als ein weiteres optisches Detail kann festgelegt werden, dass die negativsten, ersten, letzten, etc. Werte eines SparkLines farblich gekennzeichnet werden.

So einfach lassen sich die SparkLines mit VSTO 4 programmieren. Zum Schluss ist hier ein komplettes lauffähiges Beispiel:

using System;
using Microsoft.Office.Interop.Excel;
using Office = Microsoft.Office.Core;
namespace ExcelWorkbook1
{
    public partial class Tabelle1    
    {
        private void Tabelle1_Startup(object sender, EventArgs e)
        {
            Worksheet sheet = Globals.ThisWorkbook.ActiveSheet as Worksheet;
            SetRow(sheet, 1, 1, 4, 6);
            SetRow(sheet, 2, 4, 1, 9);
            SetRow(sheet, 3, 1, -5, 3);
            Range sparklineRange = sheet.get_Range("D1");
            SparklineGroup sparkline = sparklineRange.SparklineGroups.Add(XlSparkType.xlSparkColumnStacked100, "A1:C1");
            sparkline.SeriesColor.ThemeColor = XlThemeColor.xlThemeColorAccent3;
            sparkline.Points.Highpoint.Visible = true;
            sparkline.Points.Firstpoint.Visible = true;
            sparkline.Points.Negative.Visible = true;
            sparklineRange.Copy(sheet.get_Range("D2:D3"));
        }

        private void Tabelle1_Shutdown(object sender, EventArgs e)
        {
        }

        private void SetRow(Worksheet sheet, int row, params int[] values)
        {
            for (int x = 0; x < values.Length; x++)
            {
                sheet.Cells[row, x + 1] = values[x];
            }
        }   
        #region VSTO Designer generated code
        ///  
        ///  Required method for Designer support - do not modify
        ///  the contents of this method with the code editor.  
        ///  
        private void InternalStartup()
        {
            Startup += Tabelle1_Startup;  
            Shutdown += Tabelle1_Shutdown;
        }       
        #endregion   
    }
 }
kick it on dotnet-kicks.de

Kommentar schreiben


(Zeigt dein Gravatar icon)

biuquote
  • Kommentar
  • Live Vorschau
Loading