55
Leibniz Universität IT Services | Anja Aue C# - Einführung in die Programmiersprache „Ein- und Ausgabe von Daten“ *.cs *.doc *.txt Console Console *.txt

C# - Einführung in die Programmiersprache „Ein- und ... · PDF fileC# - Einführung | 26.06.12 Seite 2 Arbeiten mit Dateien, Verzeichnissen und Streams Der Namensraum System.IO

Embed Size (px)

Citation preview

Page 1: C# - Einführung in die Programmiersprache „Ein- und ... · PDF fileC# - Einführung | 26.06.12 Seite 2 Arbeiten mit Dateien, Verzeichnissen und Streams Der Namensraum System.IO

Leibniz Universität IT Services | Anja Aue

C# - Einführung in die Programmiersprache

„Ein- und Ausgabe von Daten“

*.cs

*.doc

*.txt

Console

Console

*.txt

Page 2: C# - Einführung in die Programmiersprache „Ein- und ... · PDF fileC# - Einführung | 26.06.12 Seite 2 Arbeiten mit Dateien, Verzeichnissen und Streams Der Namensraum System.IO

C# - Einführung | 26.06.12 Seite 2

Arbeiten mit Dateien, Verzeichnissen und Streams

Der Namensraum System.IO bietet verschiedenen Methoden zur Ein- und Ausgabe.

Eine Datei ist eine Sammlung von Daten. Die Dateiendung gibt über das Format der Daten Auskunft.

In Verzeichnissen werden Dateien strukturiert abgelegt. Streams schreiben oder lesen Daten. Strom von Daten.

Page 3: C# - Einführung in die Programmiersprache „Ein- und ... · PDF fileC# - Einführung | 26.06.12 Seite 2 Arbeiten mit Dateien, Verzeichnissen und Streams Der Namensraum System.IO

C# - Einführung | 26.06.12 Seite 3

Informationen zu Dateien und Verzeichnissen

string datei = "";

Console.WriteLine("Standard-Verzeichnistrenner: " +

Path.DirectorySeparatorChar);

Console.WriteLine("Alternativer Verzeichnistrenner: " + Path.AltDirectorySeparatorChar);

datei = Environment.GetFolderPath(Environment.SpecialFolder.Personal) +

Path.DirectorySeparatorChar + "StdOut.txt";

Console.WriteLine("Dateiname + Endung: " + Path.GetFileName(datei));

Console.WriteLine("Dateiname ohne Endung: " +

Path.GetFileNameWithoutExtension(datei));

Console.WriteLine("Dateiendung: " + Path.GetExtension(datei));

Page 4: C# - Einführung in die Programmiersprache „Ein- und ... · PDF fileC# - Einführung | 26.06.12 Seite 2 Arbeiten mit Dateien, Verzeichnissen und Streams Der Namensraum System.IO

C# - Einführung | 26.06.12 Seite 4

Weitere Informationen

Console.WriteLine("Aktuelles Arbeitsverzeichnis: " +

Environment.CurrentDirectory);

Console.WriteLine("Betriebssystemversion: " + Environment.MachineName);

Console.WriteLine("Benutzername: " + Environment.UserName);

Page 5: C# - Einführung in die Programmiersprache „Ein- und ... · PDF fileC# - Einführung | 26.06.12 Seite 2 Arbeiten mit Dateien, Verzeichnissen und Streams Der Namensraum System.IO

C# - Einführung | 26.06.12 Seite 5

Konsole

entspricht der MS Eingabeaufforderung.

wird in der Klasse System.Console beschrieben. bietet Methoden zum Einlesen und Ausgeben von Daten.

Page 6: C# - Einführung in die Programmiersprache „Ein- und ... · PDF fileC# - Einführung | 26.06.12 Seite 2 Arbeiten mit Dateien, Verzeichnissen und Streams Der Namensraum System.IO

C# - Einführung | 26.06.12 Seite 6

Ausgabe von Daten

System.Console.Write("Text") schreibt den Text in den runden Klammern in die Konsole. Die Ausgabe wird ohne Zeilenumbruch abgeschlossen.

Console.WriteLine("Text") schreibt den angegebenen Text in die Eingabeaufforderung. Die Ausgabe wird automatisch mit einem Zeilenumbruch abgeschlossen.

Page 7: C# - Einführung in die Programmiersprache „Ein- und ... · PDF fileC# - Einführung | 26.06.12 Seite 2 Arbeiten mit Dateien, Verzeichnissen und Streams Der Namensraum System.IO

C# - Einführung | 26.06.12 Seite 7

Verknüpfung von Text

Literale und Variablen können mit Hilfe des Pluszeichens verknüpft werden.

Andere Möglichkeit: In dem Literal werden Platzhalter für den variablen Text genutzt.

Diese Platzhalter bieten verschiedene Formatierungsmöglichkeiten.

Console.WriteLine("Buchstabe: " + intBuchstabe);

Console.WriteLine("Buchstabe: {0}", intBuchstabe);

Console.WriteLine("Buchstabe: {1} : {0}",strBuchstabe, intBuchstabe);

Page 8: C# - Einführung in die Programmiersprache „Ein- und ... · PDF fileC# - Einführung | 26.06.12 Seite 2 Arbeiten mit Dateien, Verzeichnissen und Streams Der Namensraum System.IO

C# - Einführung | 26.06.12 Seite 8

Mit Platzhaltern arbeiten

Die Elemente der Liste in den runden Klammern werden durch Kommata getrennt.

Es kann eine beliebige Anzahl von Variablen genutzt werden. Die Anzahl der Variablen entspricht der Anzahl der Platzhalter

in dem Literal.

Platzhalter werden durch die geschweiften Klammern in dem Literal gekennzeichnet. Die Nummern innerhalb der Klammern kennzeichnet die Position in der Liste.

Die erste Variable hat die Nummer 1 und so weiter.

Console.WriteLine("Buchstabe: {0}", intBuchstabe);

Console.WriteLine("Buchstabe: {1} : {0}",strBuchstabe, intBuchstabe);

Page 9: C# - Einführung in die Programmiersprache „Ein- und ... · PDF fileC# - Einführung | 26.06.12 Seite 2 Arbeiten mit Dateien, Verzeichnissen und Streams Der Namensraum System.IO

C# - Einführung | 26.06.12 Seite 9

Formatierung der Ausgabe-Daten

Console.WriteLine("Dezimalzahl: {0}", dblZahl);

Console.WriteLine("Dezimalzahl : {0:0}", dblZahl);

Console.WriteLine("Dezimalzahl : {0:00.000}", dblZahl);

Console.WriteLine("Dezimalzahl : {0:#0.000}", dblZahl);

Console.WriteLine("Dezimalzahl : {0,15:0.00}", dblZahl);

Platzhalter Formatierung{0 : 0} Anzahl der Stellen vor dem Komma

{0 : 00.000} Anzahl der Stellen vor und nach dem Komma

{0 : #0.000} Hash-Zeichen: Falls vorhanden ...

{0, 15 : 0.00} 15 Zeichen breite rechtsbündige Ausgabe.-15 Zeichen breite linksbündige Ausgabe.

Page 10: C# - Einführung in die Programmiersprache „Ein- und ... · PDF fileC# - Einführung | 26.06.12 Seite 2 Arbeiten mit Dateien, Verzeichnissen und Streams Der Namensraum System.IO

C# - Einführung | 26.06.12 Seite 10

Daten von der Konsole lesen

System.Console.ReadLine() liest eine Zeile von der Konsole ein. Eine Zeile wird durch <RETURN> abgeschlossen.

System.Console.Read() gibt ein Zeichen als int-Wert zurück. Der Wert -1 kennzeichnet das Ende der Eingabe.

System.Console.ReadKey(True) ruft die nächste gedrückte Zeichen- oder Funktionstaste ab. Falls der Methode True übergeben wird, wird das Zeichen in der Konsole angezeigt.

Page 11: C# - Einführung in die Programmiersprache „Ein- und ... · PDF fileC# - Einführung | 26.06.12 Seite 2 Arbeiten mit Dateien, Verzeichnissen und Streams Der Namensraum System.IO

C# - Einführung | 26.06.12 Seite 11

Standardeingabe und -ausgabe

Console.In beschreibt die Standardeingabe. Häufig wird am Bildschirm mit Hilfe der Tastatur eingegeben.

Console.Out beschreibt die Standardausgabe. Bei einer Konsolen-Anwendung wird der Bildschirm genutzt.

Console.Error beschreibt das Standardgerät für die Fehlerausgabe.

Mit Hilfe von Console.SetIn(), Console.SetOut() und Console.SetError() kann die Standardausgabe in eine Datei umgeleitet werden.

Page 12: C# - Einführung in die Programmiersprache „Ein- und ... · PDF fileC# - Einführung | 26.06.12 Seite 2 Arbeiten mit Dateien, Verzeichnissen und Streams Der Namensraum System.IO

C# - Einführung | 26.06.12 Seite 12

… in eine Datei umleiten

StreamWriter ausgabe = new StreamWriter(

Environment.GetFolderPath( Environment.SpecialFolder.Personal)

+ Path.DirectorySeparatorChar + "StdOut.txt");

Console.SetError(ausgabe);

try{

ergebnis = divident / divisor;

Console.SetOut(ausgabe);

Console.WriteLine("Berechnung: {0} / {1} = {2:###00.00}",

divident, divisor, ergebnis);

}

catch (FormatException){

Console.Error.WriteLine("Umwandlung nicht möglich");

}

Page 13: C# - Einführung in die Programmiersprache „Ein- und ... · PDF fileC# - Einführung | 26.06.12 Seite 2 Arbeiten mit Dateien, Verzeichnissen und Streams Der Namensraum System.IO

C# - Einführung | 26.06.12 Seite 13

Arbeiten mit einem Stream

Ein Stream-Objekt erzeugen.StreamWriter schreiben = new StreamWriter("datei.txt");

Auf die Daten lesend oder schreibend zugreifen,Console.Error.WriteLine("Umwandlung nicht möglich");

Datenpuffer leeren und das Stream-Objekt schließen.schreiben.Close();

Page 14: C# - Einführung in die Programmiersprache „Ein- und ... · PDF fileC# - Einführung | 26.06.12 Seite 2 Arbeiten mit Dateien, Verzeichnissen und Streams Der Namensraum System.IO

C# - Einführung | 26.06.12 Seite 14

StreamWriter ...

schreibt zeichenweise Text mit einer bestimmten Kodierung in die Datei.

var Stream BytesDatei

Page 15: C# - Einführung in die Programmiersprache „Ein- und ... · PDF fileC# - Einführung | 26.06.12 Seite 2 Arbeiten mit Dateien, Verzeichnissen und Streams Der Namensraum System.IO

C# - Einführung | 26.06.12 Seite 15

StreamReader...

liest zeichenweise den Text einer Datei mit einer bestimmten Kodierung ein. Standardmäßig wird UTF-8 genutzt.

var Stream BytesDatei

Page 16: C# - Einführung in die Programmiersprache „Ein- und ... · PDF fileC# - Einführung | 26.06.12 Seite 2 Arbeiten mit Dateien, Verzeichnissen und Streams Der Namensraum System.IO

C# - Einführung | 26.06.12 Seite 16

Stream-Objekt erzeugen

In diesen Beispielen wird ein Datenstrom zu einer Datei erzeugt.

Das neue Objekt bekommt als Start-Parameter einen Dateinamen übergeben.

StreamWriter schreiben = new StreamWriter("datei.txt");

StreamReader lesen = new StreamReader("datei.txt");

Page 17: C# - Einführung in die Programmiersprache „Ein- und ... · PDF fileC# - Einführung | 26.06.12 Seite 2 Arbeiten mit Dateien, Verzeichnissen und Streams Der Namensraum System.IO

C# - Einführung | 26.06.12 Seite 17

Stream-Objekt schließen

Der Datenstrom wird geschlossen. Aber das Objekt existiert noch. Der Zugriff auf einen

geschlossenen Stream erzeugt eine Exception.

schreiben.Close();

lesen.Close();

Page 18: C# - Einführung in die Programmiersprache „Ein- und ... · PDF fileC# - Einführung | 26.06.12 Seite 2 Arbeiten mit Dateien, Verzeichnissen und Streams Der Namensraum System.IO

C# - Einführung | 26.06.12 Seite 18

… auf die Standard-Ausgabe umleiten

TextWriter stdOut = Console.Out;

Console.SetOut(stdOut);

TextWriter ist eine abstrakte Klasse zum sequentiellen Schreiben von Unicode-Zeichen.

Der Variablen vom Typ TextWriter wird das Ausgabemedium mit Hilfe des Gleichheitszeichens zugewiesen.

Jeder StreamWriter ist auch ein TextWriter.

Page 19: C# - Einführung in die Programmiersprache „Ein- und ... · PDF fileC# - Einführung | 26.06.12 Seite 2 Arbeiten mit Dateien, Verzeichnissen und Streams Der Namensraum System.IO

C# - Einführung | 26.06.12 Seite 19

FileStream ...

öffnet einen Stream für eine Datei.

var Stream BytesDatei

File

var Stream BytesDatei

File

Page 20: C# - Einführung in die Programmiersprache „Ein- und ... · PDF fileC# - Einführung | 26.06.12 Seite 2 Arbeiten mit Dateien, Verzeichnissen und Streams Der Namensraum System.IO

C# - Einführung | 26.06.12 Seite 20

Datei zum Lesen öffnen

FileStream datei = null;

try{

if (File.Exists(this.fileName)) {

datei = new FileStream(this.fileName, FileMode.Open,

FileAccess.Read);

}

catch (Exception e){

MessageBox.Show(e.Message);

}

finally {

if (datei != null) {

datei.Close();

datei = null;

}

}

Page 21: C# - Einführung in die Programmiersprache „Ein- und ... · PDF fileC# - Einführung | 26.06.12 Seite 2 Arbeiten mit Dateien, Verzeichnissen und Streams Der Namensraum System.IO

C# - Einführung | 26.06.12 Seite 21

Stream-Objekt definieren

Stream-Objekte werden wie Variablen vom Standard-Datentyp definiert.

In diesem Beispiel wird nur die Objektvariable angelegt, aber das Objekt nicht erzeugt.

FileStream datei = null;

Page 22: C# - Einführung in die Programmiersprache „Ein- und ... · PDF fileC# - Einführung | 26.06.12 Seite 2 Arbeiten mit Dateien, Verzeichnissen und Streams Der Namensraum System.IO

C# - Einführung | 26.06.12 Seite 22

Stream-Objekt erzeugen

Das Schlüsselwort new erzeugt ein neues Objekt von einem bestimmten Typ.

Dem Konstruktor wird als erster Parameter ein Dateinamen übergeben. Der Pfad zur Datei kann absolut oder relativ angegeben werden.

Der zweite Parameter spezifiziert den Zugriff auf die Datei. In diesem Beispiel wird die Datei geöffnet.

Der dritte Parameter spezifiziert den Zugriff auf die Daten. In diesem Beispiel wird lesend zugegriffen.

datei = new FileStream(this.fileName,

FileMode.Open,

FileAccess.Read);

Page 23: C# - Einführung in die Programmiersprache „Ein- und ... · PDF fileC# - Einführung | 26.06.12 Seite 2 Arbeiten mit Dateien, Verzeichnissen und Streams Der Namensraum System.IO

C# - Einführung | 26.06.12 Seite 23

Existiert die Datei?

Falls die angegebenen Datei existiert, wird true zurückgeliefert.

if (File.Exists(this.fileName))

Page 24: C# - Einführung in die Programmiersprache „Ein- und ... · PDF fileC# - Einführung | 26.06.12 Seite 2 Arbeiten mit Dateien, Verzeichnissen und Streams Der Namensraum System.IO

C# - Einführung | 26.06.12 Seite 24

Stream-Objekt schließen

Falls ein FileStream existiert, wird dieser geschlossen.

Um Fehler zu vermeiden, wird die Objektvariable auf null gesetzt.

if (datei != null) {

datei.Close();

datei = null;

}

Page 25: C# - Einführung in die Programmiersprache „Ein- und ... · PDF fileC# - Einführung | 26.06.12 Seite 2 Arbeiten mit Dateien, Verzeichnissen und Streams Der Namensraum System.IO

C# - Einführung | 26.06.12 Seite 25

Daten lesen

datei = new FileStream(this.fileName, FileMode.Open,

FileAccess.Read);

StreamReader sr = new StreamReader(datei, Encoding.Default);

string line;

while ((line = sr.ReadLine()) != null)

{

zeilen.Add(line);

}

Page 26: C# - Einführung in die Programmiersprache „Ein- und ... · PDF fileC# - Einführung | 26.06.12 Seite 2 Arbeiten mit Dateien, Verzeichnissen und Streams Der Namensraum System.IO

C# - Einführung | 26.06.12 Seite 26

Stream-Objekt zum Lesen erzeugen

Als erster Parameter wird ein Objekt vom Typ FileStream angegeben. Aus dieser Datei werden Daten gelesen.

Als zweiter Parameter wird dem Objekt eine Kodierung übergeben. In diesem Beispiel werden die Daten mit der Standard-Kodierung gelesen. Als Standard wird die ANSI-Kodierung genutzt. Encoding wird in dem Namensraum System.Text definiert.

StreamReader sr = new StreamReader(datei, Encoding.Default);

Page 27: C# - Einführung in die Programmiersprache „Ein- und ... · PDF fileC# - Einführung | 26.06.12 Seite 2 Arbeiten mit Dateien, Verzeichnissen und Streams Der Namensraum System.IO

C# - Einführung | 26.06.12 Seite 27

Daten lesen

Mit Hilfe der Methode ReadLine() wird die Datei zeilenweise eingelesen. Die Methode liest Zeichen bis zum Zeilenumbruch ein. Sobald die Zeile null ist, ist das Ende des Streams erreicht.

Andere Möglichkeit: ReadToEnd(). Es werden alle Daten bis zum Ende des Streams eingelesen.

while ((line = sr.ReadLine()) != null)

Page 28: C# - Einführung in die Programmiersprache „Ein- und ... · PDF fileC# - Einführung | 26.06.12 Seite 2 Arbeiten mit Dateien, Verzeichnissen und Streams Der Namensraum System.IO

C# - Einführung | 26.06.12 Seite 28

Datei zum Schreiben erzeugen

FileStream datei = null;

try{

if (File.Exists(this.fileName)) {

datei = new FileStream(this.fileName,

FileMode.Create, FileAccess.Write); }

catch (Exception e){

MessageBox.Show(e.Message);

}

finally {

if (datei != null) {

datei.Close();

datei = null;

}

}

Page 29: C# - Einführung in die Programmiersprache „Ein- und ... · PDF fileC# - Einführung | 26.06.12 Seite 2 Arbeiten mit Dateien, Verzeichnissen und Streams Der Namensraum System.IO

C# - Einführung | 26.06.12 Seite 29

Stream-Objekt erzeugen

Das Schlüsselwort new erzeugt ein neues Objekt von einem bestimmten Typ.

Dem Konstruktor wird als erster Parameter ein Dateinamen übergeben. Der Pfad zur Datei kann absolut oder relativ angegeben werden.

Der zweite Parameter spezifiziert den Zugriff auf die Datei. In diesem Beispiel wird die Datei neu erzeugt.

Der dritte Parameter spezifiziert den Zugriff auf die Daten. In diesem Beispiel wird schreibend zugegriffen.

datei = new FileStream(this.fileName,

FileMode.Create,

FileAccess.Write);

Page 30: C# - Einführung in die Programmiersprache „Ein- und ... · PDF fileC# - Einführung | 26.06.12 Seite 2 Arbeiten mit Dateien, Verzeichnissen und Streams Der Namensraum System.IO

C# - Einführung | 26.06.12 Seite 30

Daten schreiben

datei = new FileStream(this.fileName, FileMode.Create,

FileAccess.Write);

StreamWriter sw = new StreamWriter(datei, Encoding.Default);

sw.Write(this.fileContent);

sw.Close();

Page 31: C# - Einführung in die Programmiersprache „Ein- und ... · PDF fileC# - Einführung | 26.06.12 Seite 2 Arbeiten mit Dateien, Verzeichnissen und Streams Der Namensraum System.IO

C# - Einführung | 26.06.12 Seite 31

Stream-Objekt zum Schreiben erzeugen

Als erster Parameter wird ein Objekt vom Typ FileStream angegeben. Aus dieser Datei werden Daten gelesen.

Als zweiter Parameter wird dem Objekt eine Kodierung übergeben. In diesem Beispiel werden die Daten mit der Standard-Kodierung gelesen. Als Standard wird die ANSI-Kodierung genutzt. Encoding wird in dem Namensraum System.Text definiert.

StreamWriter sw = new StreamWriter(datei, Encoding.Default);

Page 32: C# - Einführung in die Programmiersprache „Ein- und ... · PDF fileC# - Einführung | 26.06.12 Seite 2 Arbeiten mit Dateien, Verzeichnissen und Streams Der Namensraum System.IO

C# - Einführung | 26.06.12 Seite 32

Daten lesen

Die Daten in den runden Klammern werden in die Datei geschrieben.

Andere Möglichkeit: WriteLine(). Der geschriebene Block von Daten wird mit einem Zeilenumbruch abgeschlossen.

sw.Write(this.fileContent);

Page 33: C# - Einführung in die Programmiersprache „Ein- und ... · PDF fileC# - Einführung | 26.06.12 Seite 2 Arbeiten mit Dateien, Verzeichnissen und Streams Der Namensraum System.IO

C# - Einführung | 26.06.12 Seite 33

Exceptiontry {

datei = new FileStream(this.fileName, FileMode.Open, FileAccess.Read);

StreamReader sr = new StreamReader(datei, Encoding.Default);

string line;

while ((line = sr.ReadLine()) != null) {

zeilen.Add(line);

}

}

catch (EndOfStreamException e) {

Console.WriteLine("Fehlermeldung: {0}.", e.Message);

}

catch (Exception e) {

MessageBox.Show(e.Message);

}

finally{

if (datei != null) {

datei.Close();

datei = null;

}

}

Page 34: C# - Einführung in die Programmiersprache „Ein- und ... · PDF fileC# - Einführung | 26.06.12 Seite 2 Arbeiten mit Dateien, Verzeichnissen und Streams Der Namensraum System.IO

C# - Einführung | 26.06.12 Seite 34

Anweisungen immer ausführen

Das Schlüsselwort finally kennzeichnet einen Block von Anweisungen, der auch ausgeführt wird, wenn eine Ausnahme geworfen wurde.

Um Fehler zu vermeiden, wird hier die Datei geschlossen. Dieser Block steht immer am Ende einer try-catch-Anweisung. Der finally-Block ist optional.

finally{

if (datei != null) {

datei.Close();

datei = null;

}

}

Page 35: C# - Einführung in die Programmiersprache „Ein- und ... · PDF fileC# - Einführung | 26.06.12 Seite 2 Arbeiten mit Dateien, Verzeichnissen und Streams Der Namensraum System.IO

C# - Einführung | 26.06.12 Seite 35

Existiert eine Datei / Verzeichnis?

Mit Hilfe der Methode .Exists() in der try-Anweisung.

Mit Hilfe der passenden Ausnahme.

if (File.Exists(this.fileName))

catch (DriveNotFoundException){}

catch (DirectoryNotFoundException) {}

catch (FileNotFoundException){}

Page 36: C# - Einführung in die Programmiersprache „Ein- und ... · PDF fileC# - Einführung | 26.06.12 Seite 2 Arbeiten mit Dateien, Verzeichnissen und Streams Der Namensraum System.IO

C# - Einführung | 26.06.12 Seite 36

Interoperability in . NET

existiert mit C(ompound)O(bject)M(odel)-Anwendungen oder Win32 DLLs.

ist eine Brücke zu Windows-Komponenten, die nicht in der .NET – Welt definiert sind.

wird für Office mit Hilfe der Bibliothek Microsoft.Office.Interop hergestellt.

Page 37: C# - Einführung in die Programmiersprache „Ein- und ... · PDF fileC# - Einführung | 26.06.12 Seite 2 Arbeiten mit Dateien, Verzeichnissen und Streams Der Namensraum System.IO

C# - Einführung | 26.06.12 Seite 37

C# und Word im Web

http://www.c-sharpcorner.com/uploadfile/amrish_deep/wordautomation05102007223934pm/wordautomation.aspx

http://msdn.microsoft.com/de-de/library/microsoft.office.interop.word%28v=office.11%29.aspx

Page 38: C# - Einführung in die Programmiersprache „Ein- und ... · PDF fileC# - Einführung | 26.06.12 Seite 2 Arbeiten mit Dateien, Verzeichnissen und Streams Der Namensraum System.IO

C# - Einführung | 26.06.12 Seite 38

Beispiel: Schreiben in ein neues Word-Dokumente

Hinzufügung eines Verweises in dem C#-Projekt.

Öffnen der Word-Application. Erstellung eines neuen Dokuments. Text in das Dokument schreiben. Speicherung des neuen Dokuments. Schließen der Word-Application.

Page 39: C# - Einführung in die Programmiersprache „Ein- und ... · PDF fileC# - Einführung | 26.06.12 Seite 2 Arbeiten mit Dateien, Verzeichnissen und Streams Der Namensraum System.IO

C# - Einführung | 26.06.12 Seite 39

Verweise in einem Projekt ...

sind Referenzen auf eine Komponente.

werden im Ordner Verweise im Projektmappen-Explorer angezeigt.

werden in der Projektdatei „*.csproj“ abgelegt.

Page 40: C# - Einführung in die Programmiersprache „Ein- und ... · PDF fileC# - Einführung | 26.06.12 Seite 2 Arbeiten mit Dateien, Verzeichnissen und Streams Der Namensraum System.IO

C# - Einführung | 26.06.12 Seite 40

Verweis einem Projekt hinzufügen

Projekt – Verweis hinzufügen.

Die Registerkarte COM (Component Object Model) enthält Verweise auf Komponenten, die nicht innerhalb des .NET Frameworks entwickelt wurden.

Für Microsoft Word 2010 muss der Verweis Microsoft Word 14.0 Object Libraryhinzugefügt werden.

Page 41: C# - Einführung in die Programmiersprache „Ein- und ... · PDF fileC# - Einführung | 26.06.12 Seite 2 Arbeiten mit Dateien, Verzeichnissen und Streams Der Namensraum System.IO

C# - Einführung | 26.06.12 Seite 41

Word-Application nutzen

Microsoft.Office.Interop.Word.Application oWord = new

Microsoft.Office.Interop.Word.Application();

oWord.Visible = true;

Es wird ein Verweis auf die Word-Anwendung erzeugt.

Die Anwendung wird anschließend eingeblendet.

Page 42: C# - Einführung in die Programmiersprache „Ein- und ... · PDF fileC# - Einführung | 26.06.12 Seite 2 Arbeiten mit Dateien, Verzeichnissen und Streams Der Namensraum System.IO

C# - Einführung | 26.06.12 Seite 42

Missing.Value ...

wird bei Nichtsetzen eines optionalen Parameters einer Methode genutzt.

kennzeichnet einen nicht gesetzten Parameter.

Object oMissing = System.Reflection.Missing.Value;

Page 43: C# - Einführung in die Programmiersprache „Ein- und ... · PDF fileC# - Einführung | 26.06.12 Seite 2 Arbeiten mit Dateien, Verzeichnissen und Streams Der Namensraum System.IO

C# - Einführung | 26.06.12 Seite 43

Word-Dokument erstellen

Object oFileName = fileName;

Object oFileFormat = WdSaveFormat.wdFormatDocument;

Document oWordDoc = new Document();

oWordDoc = oWord.Documents.Add(ref oMissing, ref oMissing,

ref oMissing, ref oMissing);

Es wird eine Instanz von einem Word-Dokument erzeugt. Der Liste aller geöffneten Dokumente wird ein neues Dokument

mit Hilfe der Methode .Add() hinzugefügt.

Page 44: C# - Einführung in die Programmiersprache „Ein- und ... · PDF fileC# - Einführung | 26.06.12 Seite 2 Arbeiten mit Dateien, Verzeichnissen und Streams Der Namensraum System.IO

C# - Einführung | 26.06.12 Seite 44

Word-Dokument speichern und aktivieren

Object oFileName = fileName;

Object oFileFormat = WdSaveFormat.wdFormatDocument;

oWordDoc.SaveAs(ref oFileName, ref oFileFormat);

oWordDoc.Activate();

Die Methode .SaveAs() speichert ein Word-Dokument mit einem bestimmten Namen und in einem bestimmten Format.

Die Methode .Activate() aktiviert ein Word-Dokument. Das Dokument wird im Vordergrund angezeigt.

Page 45: C# - Einführung in die Programmiersprache „Ein- und ... · PDF fileC# - Einführung | 26.06.12 Seite 2 Arbeiten mit Dateien, Verzeichnissen und Streams Der Namensraum System.IO

C# - Einführung | 26.06.12 Seite 45

Schreiben von Daten

oParagraph = oWordDoc.Content.Paragraphs.Add(ref oMissing);

oParagraph.Range.Text = fileContent;

oParagraph.Range.Font.Name = "Arial";

oParagraph.Range.Font.Size = 14;

oParagraph.Format.SpaceAfter = 24;

oParagraph.Range.InsertParagraphAfter();

Die Eigenschaft .Content ist ein Verweis auf den Inhalt des Word-Dokuments.

Der Auflistung .Paragraphs wird ein einer neuer Absatz hinzugefügt. Der Absatz kann wie in Word formatiert werden.

Mit Hilfe von .InsertParagraphAfter() wird ein Absatz nach dem letzten vorhandenen Absatz eingefügt.

Page 46: C# - Einführung in die Programmiersprache „Ein- und ... · PDF fileC# - Einführung | 26.06.12 Seite 2 Arbeiten mit Dateien, Verzeichnissen und Streams Der Namensraum System.IO

C# - Einführung | 26.06.12 Seite 46

C# und Excel im Web

http://csharp.net-informations.com/excel/csharp-excel-tutorial.htm

http://www.codeproject.com/Articles/248531/Export-Excel-File-for-Csharp

http://msdn.microsoft.com/de-de/library/ms262200%28v=office.11%29

Page 47: C# - Einführung in die Programmiersprache „Ein- und ... · PDF fileC# - Einführung | 26.06.12 Seite 2 Arbeiten mit Dateien, Verzeichnissen und Streams Der Namensraum System.IO

C# - Einführung | 26.06.12 Seite 47

Beispiel: Lesen von Daten in einem Excel-Sheet

Hinzufügung eines Verweises in dem C#-Projekt.

Öffnen der Excel-Anwendung. Öffnen der Excel-Datei. Daten aus Tabellen lesen. Schließen der Excel-Datei. Schließen der Excel-Anwendung.

Page 48: C# - Einführung in die Programmiersprache „Ein- und ... · PDF fileC# - Einführung | 26.06.12 Seite 2 Arbeiten mit Dateien, Verzeichnissen und Streams Der Namensraum System.IO

C# - Einführung | 26.06.12 Seite 48

Verweise in einem Projekt ...

sind Referenzen auf eine Komponente.

werden im Ordner Verweise im Projektmappen-Explorer angezeigt.

werden in der Projektdatei „*.csproj“ abgelegt.

Page 49: C# - Einführung in die Programmiersprache „Ein- und ... · PDF fileC# - Einführung | 26.06.12 Seite 2 Arbeiten mit Dateien, Verzeichnissen und Streams Der Namensraum System.IO

C# - Einführung | 26.06.12 Seite 49

Verweis einem Projekt hinzufügen

Projekt – Verweis hinzufügen.

Die Registerkarte COM (Component Object Model) enthält Verweise auf Komponenten, die nicht innerhalb des .NET Frameworks entwickelt wurden.

Für Microsoft Excel 2010 muss der Verweis Microsoft Excel 14.0 Object Libraryhinzugefügt werden.

Page 50: C# - Einführung in die Programmiersprache „Ein- und ... · PDF fileC# - Einführung | 26.06.12 Seite 2 Arbeiten mit Dateien, Verzeichnissen und Streams Der Namensraum System.IO

C# - Einführung | 26.06.12 Seite 50

Excel-Anwendung öffnen

Microsoft.Office.Interop.Excel.Application appExcel = new

Microsoft.Office.Interop.Excel.Application();

appExcel.Quit();

Es wird eine Instanz von einem Excel-Dokument erzeugt. Mit Hilfe der Methode .Quit() wird die Anwendung

geschlossen.

Page 51: C# - Einführung in die Programmiersprache „Ein- und ... · PDF fileC# - Einführung | 26.06.12 Seite 2 Arbeiten mit Dateien, Verzeichnissen und Streams Der Namensraum System.IO

C# - Einführung | 26.06.12 Seite 51

Arbeitsmappe öffnen und schließen

Workbook xlWorkbook = null;

xlWorkbook = appExcel.Workbooks.Open(this.fileName);

if (xlWorkbook != null)

{

xlWorkbook.Close();

}

Die Liste Workbooks enthält alle geöffneten Arbeitsmappen in einer Excel-Anwendung.

Mit Hilfe der Methode .Open() wird eine Arbeitsmappe geöffnet.

Die Methode .Close() schließt eine Arbeitsmappe.

Page 52: C# - Einführung in die Programmiersprache „Ein- und ... · PDF fileC# - Einführung | 26.06.12 Seite 2 Arbeiten mit Dateien, Verzeichnissen und Streams Der Namensraum System.IO

C# - Einführung | 26.06.12 Seite 52

Zugriff auf ein Arbeitsblatt

xlWorkbook = appExcel.Workbooks.Open(this.fileName);

Worksheet xlWorksheet = null;

if (pSheet != "")

{

xlWorksheet = (Worksheet)xlWorkbook.Worksheets.get_Item(pSheet);

}

else

{

xlWorksheet = (Worksheet)xlWorkbook.Worksheets.get_Item(1);

}

Page 53: C# - Einführung in die Programmiersprache „Ein- und ... · PDF fileC# - Einführung | 26.06.12 Seite 2 Arbeiten mit Dateien, Verzeichnissen und Streams Der Namensraum System.IO

C# - Einführung | 26.06.12 Seite 53

Hinweise

Die Liste Worksheets enthält alle Arbeitsblätter in einer Excel-Arbeitsmappe.

Die Elemente in der Liste werden mit Hilfe der Registerkarten in Excel angezeigt.

Mit Hilfe der Methode .getItem() aktiviert mit Hilfe des Namens des Arbeitsblatt oder dem Index ein bestimmtes Blatt. Das erste Blatt hat den Index 1 und so weiter...

Page 54: C# - Einführung in die Programmiersprache „Ein- und ... · PDF fileC# - Einführung | 26.06.12 Seite 2 Arbeiten mit Dateien, Verzeichnissen und Streams Der Namensraum System.IO

C# - Einführung | 26.06.12 Seite 54

Mit Zellen arbeiten

Microsoft.Office.Interop.Excel.Range kunde = null;

kunde = (Microsoft.Office.Interop.Excel.Range)xlWorksheet.UsedRange;

for (rowsCount = 1; rowsCount <= kunde.Rows.Count; rowsCount++){

for (columnsCount = 1; columnsCount <= kunde.Columns.Count; columnsCount++){

if (kunde.Cells[rowsCount, columnsCount].Value2.ToString() == "Kunden"){

continue;

}

if (columnsCount == 1){

tmpKey = kunde.Cells[rowsCount, columnsCount].Value2.ToString();

tmpValue = "";

}

else{

tmpValue = kunde.Cells[rowsCount, columnsCount].Value2.ToString();

}

}

}

Page 55: C# - Einführung in die Programmiersprache „Ein- und ... · PDF fileC# - Einführung | 26.06.12 Seite 2 Arbeiten mit Dateien, Verzeichnissen und Streams Der Namensraum System.IO

C# - Einführung | 26.06.12 Seite 55

Hinweise

Das Objekt UsedRange beschreibt den genutzten Zellbereich in einem Arbeitsblatt.

Das Objekt Cells beschreibt eine Zelle in einem Arbeitsblatt. Eine Zelle wird eindeutig durch eine Zeilennummer und eine

Spaltennummer identifiziert. Die erste Spalte / Zeile hat die Nummer 1 und so weiter.

Die Eigenschaft Values2 gibt den Inhalt entsprechend der Formatierung zurück.