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