über mich
mein motto
kontakte mich (())

Visual C# 2008 - Das Videotraining von Lars Keller

followme

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

recentcomments

Comment RSS

community

VSTO Taskforce Just Community .NET Developer Group Braunschweig

Bericht vom Office Community Day 2010

18. Juni 2010 | Geändert: 27. Juni 2010 | Community | Office (VSTO) Community Day | VSTO 1

Der zweite Office Community Day ist nun vorüber und auch dieses Mal war es ein voller Erfolg. Waren wir Teilnehmer des Office Community Day 2010noch letztes Jahr bei Microsoft Österreich in Wien zu Gast, wurde dieses Jahr der Office Community Day 2010 bei Microsoft Deutschland in Unterschleißheim von Mario Meir-Huber und mir ausgerichtet. Natürlich mit viel Hilfe von Tom Wendel (noch mal herzlichen Dank dafür !!!). Insgesamt waren knapp 20 Teilnehmer vor Ort (darunter wieder 1 Schweizer und 2 Österreicher), was mich besonders gefreut hat. Somit scheint der Office Community Day im deutschsprachigem Raum eine sehr interessante Veranstaltung zu sein. Wir hatten auch ein breites Spektrum von Teilnehmern. Vom Hobby-Entwickler bis zum Profi war alles vertreten, aber es waren auch Teilnehmer dabei, welche Endanwender waren und sich einfach von den umfangreichen Möglichkeiten der Office Anpassungen inspirieren lassen wollten! Mario Meir-Huber und Lars Keller

Es wurde viel besprochen! VSTO 4, COM Interop und .NET waren natürlich Hauptthema. .-) Dieses Jahr haben wir uns nicht nur rein auf die MS Office Entwicklung mit VSTO beschränkt, sondern die Veranstaltung um das Thema SharePoint erweitert. Beide Welten wachsen immer mehr zusammen, was wir auch in den Sessions demonstriert haben. Natürlich hatten wir auch viel Zeit für das Networken bei Brötchen, Kuchen und Kaffee einkalkuliert. Besonders gefreut haben wir uns, dass der eine oder andere Microsoft Mitarbeiter vorbeigeschaut hat.

Die Abendveranstaltung haben fast alle im Restaurant Culininari USH mit uns verbracht, wo viele der Session Themen noch mal vertieft, besprochen worden.

Besonderen Dank möchte ich noch mal Albert Weinert und Jörg Egretzberger aussprechen, welche spontan für den erkrankten Andi einsprangen und seine SharePoint/TDD Session übernahmen. Auch meinen VSTO MVP Kollegen Helmut Obertanner möchte ich für seine Unterstützung recht herzlich Danken! Danke Jungs! So etwas nenn ich Community!  Office Community Day 2010 Abendveranstaltung im Culinari USH

Mein weiterer Dank geht an die Sponsoren: Typemock, dotnetpro, Codeforce, AX Solutions GmbH, Microsoft Deutschland, Dorothea (für die CLIP-Goodies) und natürlich den Spenden der Teilnehmern! Danke! :)

Wie versprochen findet ihr unten aufgelistet die Materialien zu den Sessions (Alles liegt mir noch nicht vor, ich werde es nach und nach ergänzen).

 

 

Downloads:

 Tom Wendel bei der Sharepoint SessionJörg Erztberger und Albert Weinert in Action

Auf geht es zum Office Community Day 2010

14. Juni 2010 | Geändert: 14. Juni 2010 | Community | Office (VSTO) Community Day | VSTO 0

Morgen startet der zweite Office Community Day! Einen Tag lang sprechen wir über Office & Sharepoint Entwicklung. Nachdem wir im letzten Jahr in Wien waren, findet dieses Mal der Office Community Day in München bei Microsoft Deutschland statt.

Ich freue mich sehr auf das Event und die vielen Gespräche rund um die Office Entwicklung. Mal schauen, ob wir den Teilnehmerrekord vom letzten Jahr in Wien brechen können.

Alle Kurzentschlossende können gern vorbei schauen, alle weiteren Informationen findet ihr hier.

 

btw: Passend zu dem Tag wird auch das neue MS Office 2010 an Endanwender verkauft werden!

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: