Versuchsziele Überblick Aufgaben
Transcription
Versuchsziele Überblick Aufgaben
Hochschule Harz FB Automatisierung und Informatik 3. Labor: C# mit Office Grafische Nutzerschnittstellen mit .net Thema: Office Anbindung eines hexadezimalen Editors Versuchsziele • • Kenntnisse in der Anbindung an Office Speichern einer BIFF-Datei Überblick Erweitern Sie das vorhandene C#-Projekt um die Daten nach Excel bzw. nach Winword zu exportieren. Als Grundlage dient der Hex-Viewer aus dem ersten bzw. zweiten Labor. Aufgaben Rufen Sie das Projekt aus dem ersten/zweiten Labor auf. Alternativ ist die erste Musterlösung als Projekt auf meiner Homepage verfügbar. 1. Teilaufgabe: Erstellen der Menüeinträge Aufgaben: • Einfügen folgender Menüeinträge im Menü „Export“ o Export nach Winword o Export nach Excel o Export in eine BIFF-Datei • Erstellen der jeweiligen OnClick-Events 2. Teilaufgabe: Com-Schnittstellen einfügen Aufgaben: • Importieren der COM-Schnittstellen Winword und Excel • Einfügen des BIFF-Exportcodes (siehe Homepage) o Ändern bzw. überprüfen des Namespace !! 1 SaveDialog (nur Beispielcode) SaveFileDialog saveFileDialog1 = new SaveFileDialog(); saveFileDialog1.Filter = "java files (*.java)|*.java|All files (*.*)|*.*"; saveFileDialog1.FilterIndex = 1;// zählt von 1 ! saveFileDialog1.DefaultExt = ".txt"; saveFileDialog1.InitialDirectory = "c:\\daten"; saveFileDialog1.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Personal); saveFileDialog1.InitialDirectory = Environment.CurrentDirectory; if (saveFileDialog1.ShowDialog() == DialogResult.OK) { string sFilename = saveFileDialog1.FileName.ToString(); } Export nach BIFF und Aufruf von Excel using System.Diagnostics; // run CExport2EXCEL exportexcel = new CExport2EXCEL("bsp3.xls"); exportexcel.openFile(); exportexcel.Write(1, 2, "abcde"); // col row string // Beispiuiel für einen String, KEIN Datum erscheinen exportexcel.Write(1, 3, "01.01.2010"); exportexcel.Write(1, 4, "01/01/2010"); exportexcel.closeFile(); Process Prog = new Process(); Prog.StartInfo.FileName = "excel.exe"; Prog.StartInfo.Arguments = "bsp3.xls"; Prog.Start(); Einfügen der COM-Verweise (Winword und Excel) Abbildung 1 COM-Verweise ins Projekt hinzufügen Auswahl der Verweise nach Excel und Winword Markieren der beiden Einträge mittels Strg-Taste 2 Beispielcode für Excel-Com-Schnittstelle: Bitte beachten Sie, dass Excel mit 1 startet ! using Excel = Microsoft.Office.Interop.Excel; Methode: var xl = new Excel.Application(); xl.Workbooks.Add(); xl.Visible = true; xl.Cells[1, 1] = "Zahl1"; xl.Cells[1, 2] = "Zahl2"; // Row, Column xl.Cells[2, 1] = "123"; xl.Cells[2, 2] = "345"; xl.Cells[4, 1].Select(); 3 Range-Operation (Programmierersparnis): xl.Range["A1:J1"].Font.Name = "Verdana"; xl.Range["A1:J1"].Font.Color = Color.Red; xl.Range["A1:J1"].Font.Size = 14; xl.Range["A1:J1"].Font.Bold = true; xl.Range["A1:J1"].VerticalAlignment = Excel.XlVAlign.xlVAlignCenter; xl.Range["A1:J1"].HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter; xl.Range["A1:J1"].BorderAround( LineStyle: Excel.XlLineStyle.xlDash, Weight: Excel.XlBorderWeight.xlMedium ); Beispielcode für Winword-Com-Schnittstelle using Word = Microsoft.Office.Interop.Word; Methode: var word = new Word.Application(); word.Visible = true; Microsoft.Office.Interop.Word.Document doc = word.Documents.Add(); word.Selection.Font.Name = "Verdana"; word.Selection.Font.Color = Word.WdColor.wdColorBlue; word.Selection.Font.Size = 20; word.Selection.Font.Bold = 1; word.Selection.TypeText("Hier kommt eine Tabelle"); // Eingabetext word.Selection.TypeParagraph(); word.Selection.TypeParagraph(); word.Selection.Font.Name = "Arial"; word.Selection.Font.Color = Word.WdColor.wdColorBlack; word.Selection.Font.Size = 12; word.Selection.Font.Bold = 0; Word.Range tableLocation = doc.Range( word.Selection.Start, word.Selection.Start); Word.Table table = doc.Tables.Add( Range: tableLocation, NumRows: 3, NumColumns: 4); table.Borders.Enable = 1; // setzt den Tabellenrand // Header for (int col = 1; col <= 4; col++) { Word.Cell cell = table.Cell(1, col); cell.Range.Font.Bold = 1; cell.Range.Font.Size=14; } // Daten for (int row = 1; row <= 3; row++) { for (int col = 1; col <= 4; col++) { Word.Cell cell = table.Cell(row, col); cell.Range.Text = "Zahl: " + row * 100 + col; } } 4 Extras für Winword: table.Borders.Enable = 1; table.Borders.InsideLineWidth = Word.WdLineWidth.wdLineWidth225pt; table.Borders.InsideColor = Word.WdColor.wdColorRed; table.Borders.InsideLineStyle = Word.WdLineStyle.wdLineStyleDot; cell.Range.Font.Color = Word.WdColor.wdColorRed; 5