ü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

Der OBA Day 2011 findet am 04.11.11 statt

26. September 2011 | Geändert: 26. September 2011 | VSTO | Community | MS Office | msdn | Office (VSTO) Community Day 0

Zum dritten Mal veranstalten Mario Meir-Huber und ich den Office Business Applikation (OBA) Day 2011 (ehemals Office Community Day). An diesem Tag beschäftigen wir uns mit allen Themen rund um die MS Office Entwicklung. Themen sind VSTO, SharePoint und Office 365. Als Referenten sind dieses Mal dabei Thorsten Hans, Helmut Obertanner, Tom Wendel, Andreas Aschauer, Mario Meir-Huber und ich. :-)
Des Weiteren ist viel Zeit für das Netzwerken und den Erfahrungsaustausch gegeben.

Der OBA Day ist eine kostenlose Veranstaltung, damit wir Euch aber Catering, Snacks etc. bieten können, bitten wir die Teilnehmer um eine Spende. Wie hoch die Spende ist und ob Du spenden möchtest, bestimmt du dabei selber.

Termin: 04.11.2011
Ort: Microsoft Deutschland, Unterschleißheim
Anmeldung: http://oba-day.de/2011/08/29/registrierung/
Twitter-HashTag: #obaday11

Ich möchte mich auch noch ausdrücklich bei unseren bisherigen Sponsoren bedanken: CodeForce, H&D International Group und Microsoft Deutschland GmbH
Interesse den OBA Day als Sponsor zu unterstützen, dann melde Dich bitte bei mir.

Weitere Informationen zum OBA Day findet Ihr hier: http://www.oba-day.de

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   
    }
 }

VSTO 4: Wie erweitere ich den Backstage für Outlook 2010

27. Mai 2010 | Geändert: 12. Juni 2010 | MS Office | msdn | MVP | VSTO 0

Mit Einführung von MS Office 2010 gibt es einige Neuerungen in der VSTO Entwicklung. Ich möchte in diesem Post zeigen, wie einfach der neue Backstage Bereich in Outlook 2010 angepasst werden kann.

Was ist überhaupt der “Backstage Bereich”?

Backstage Bereich in Outlook 2010

Der Backstage Bereich wurde in allen Office Applikationen eingeführt. In diesem hat der Entwickler die Möglichkeit, Konfigurationsdaten zu visualisieren und/oder zur Bearbeitung zur Verfügung zu stellen.

Ich habe vor kurzem ein VSTO 4 Add-In geschrieben, in dem ich den Backstage genau dafür eingesetzt habe. Ich benötige für mein Add-In Benutzerdaten damit sich der Benutzer mit einer Telefonanlage verbinden kann. Früher hätte ich dafür einen Dialog mit der gesamten Verwaltung erstellt. Dabei musste ich immer schauen, wie integrieren ich diesen Dialog in Outlook, so dass der Benutzer diesen auch findet und ich wenig “Ärger” damit habe. Genau dieses Problem ist nun aus der Welt.

Wie erweitere ich den Backstage Bereich?

Leider steht die Erweiterung des Backstage Bereiches nicht im Visual Studio Ribbon Designer zur Verfügung, sondern muss über den XML Weg gemacht werden. In Visual Studio 2010 muss dafür eine neue Ribbon1.xml und Ribbon1.cs Datei angelegt werden.  Nun kann beim Öffnen der XML Datei der <backstage> Tag ausgewählt werden:

<?xml version="1.0" encoding="UTF-8"?>
 
	
		
			
				
					
						
						
						
						

Innerhalb des Backstage-Tag können verschiedene Bereiche deklariert werden. In meinem Beispiel habe ich einen Tab <tab> erstellt und innerhalb dieses Tabs eine <firstColumn>. In diesen Bereich erstelle ich ein Label, ein Button und zwei editBoxen. Die Daten sollen automatisch in der Registry abgespeichert und wieder geladen werden. Damit dies passiert, müssen verschiedene Callback Methoden definiert werden.

Mit der Funktion getText lese ich den Text aus der Registry aus und zeige ihn in der editBox an. Änderungen in der editBox bekommt man nur mit, wenn der Callback onChange implementiert wird. Damit nicht für jeden Callback eine eigene Methode geschrieben werden muss, kann ein tag vergeben werden. Anhand dieses Tags kann im CodeBehind heraus´gefunden werden, welches Control gerade angesprochen werden soll.

public  string GetConfig(IRibbonControl control)
{
	if  (control.Tag == "ebPhoneIP")
	{
		return _phoneIp;
	}
	else if (control.Tag == "ebPhoneExtension")
	{
		return _phoneExtension;
	}
	return String.Empty;
}

Eine typische Callback Methode erwartet als Parameter ein IRibbonControl. Das Control liefert einen control.Tag, den man zum Vergleich heranziehen kann. Die Signatur des onChange-Callback übergibt die Änderungen der editBox als String:

public void OnChangeConfig(IRibbonControl control, string text)
{
	if (control.Tag == "ebPhoneIP")
		_phoneIp = text;
	else if (control.Tag == "ebPhoneExtension")
		_phoneExtension = text;
}

Dies ist nur ein einfaches Beispiel für die Backstage Erweiterung. Im Backstage Bereich können Combox-Boxen, Bilder, Style-Elemente etc. benutzt und somit komplexere Einstellungsmöglichkeiten für das Add-In hinterlegt… oder die neuste Twitter-Message dargestellt werden. ;-)

 

Weiterführende Links:

 

 

Ich bin zum Twitter-Chat bei @MicrosoftTalk eingeladen worden!

27. Mai 2010 | Geändert: 27. Mai 2010 | .NET Developer Group Braunschweig | Community | INETA | msdn | MVP 0

Ich bin am 31.05.2010 von 10-11 Uhr Gast beim Microsoft Twitter-Chat “@MicrosoftTalk”. Hier die original News:

Am kommenden Montag, 31. Mai, findet auf dem Microsoft Twitter-Kanal „@Microsoft Talk“ mal wieder ein Community-Chat statt. Zu Gast ist diesmal Lars Keller, seines Zeichens Leiter der .NET Developer Group Braunschweig und „Most Valuable Professional“ für „VSTO Development“. Das Thema des rund einstündigen Online-Events lautet „Wie sieht eigentlich das Microsoft Community-Engagement aus?“. Los geht’s um 10 Uhr.

http://www.microsoft.com/germany/community/archiv.mspx?xd=/germany/community/components/data/Guidenews.xml&dt=description

Auf diesem Twitter-Kanal wurden bereits Achim Berg (ehemaliger Geschäftsführer MS Deutschland) und Donald Farmer (SQL Server 2008 R2) interviewt.

Dies ist mein erster Twitter-Chat! Ich muss zugeben, den Begriff “Twitter-Chat” hörte ich zum ersten Mal, als ich gefragt wurde, ob ich für den Chat zur Verfügung stehe. Ich bin sehr gespannt was mich erwartet.

Also wenn das kein Grund ist, sich bei Twitter anzumelden, dann weiß ich es auch nicht! ;-)

Mein eigenes Twitter-Profile findet Ihr hier: http://twitter.com/larskeller