Mahlzeit,
ich bin gerade dabei ein kleines Tool in C# zu schreiben, mit dem man eine Tabelle auf einem Excelarbeitsblatt umgestaltet.
Hintergrund: eine Software A speichert Daten im Excelformat. Diese werden von einer weiteren Software B eingelesen/weiterverarbeitet. Software A wird gegen eine andere C ausgetauscht, diese hat die gleiche Funktion, die Excelausgabe hat die die gleichen Informationen, nur anders aufbereitet.
Dieses kleine workaround möchte ich nutzen, um mit C# die Officeprogrammierung kennenzulernen. C# nutze ich schon etwas länger, nur noch nicht so.
Nun zum Problem: in Zeile 53 will ich einfach einen Wert überprüfen um dann weiter zu entscheiden. Das klappt nicht..."Problem festgestellt und muss beendet werden. Vielleicht kann mir da einer von euch weiterhelfen
Des Weiteren finde ich es komisch/unpraktisch das es Visualstudio "egal" ist, ob da ".value.ToString()", "[row,spalte].Text" oder "[row,spalte] = " steht. Erst bei Programmausführung wird ein Fehler sichtbar
ich bin gerade dabei ein kleines Tool in C# zu schreiben, mit dem man eine Tabelle auf einem Excelarbeitsblatt umgestaltet.
Hintergrund: eine Software A speichert Daten im Excelformat. Diese werden von einer weiteren Software B eingelesen/weiterverarbeitet. Software A wird gegen eine andere C ausgetauscht, diese hat die gleiche Funktion, die Excelausgabe hat die die gleichen Informationen, nur anders aufbereitet.
Dieses kleine workaround möchte ich nutzen, um mit C# die Officeprogrammierung kennenzulernen. C# nutze ich schon etwas länger, nur noch nicht so.
Nun zum Problem: in Zeile 53 will ich einfach einen Wert überprüfen um dann weiter zu entscheiden. Das klappt nicht..."Problem festgestellt und muss beendet werden. Vielleicht kann mir da einer von euch weiterhelfen
Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using xl = Microsoft.Office.Interop;
using System.Diagnostics;
using System.Runtime.InteropServices;
using System.IO;
/*Änderungen bei Excel 2007: Es muss die COM-Bibliothek Microsoft Excel 12.0 Object Library verwendet werden.
Änderungen bei Excel 2010: Es muss die COM-Bibliothek Microsoft Excel 14.0 Object Library verwendet werden.*/
namespace ADIS_zu_AQS
{
class Program
{
static void Main(string[] args)
{
StringBuilder xl_Pfad;
// string testpfad = @"C:\Dokumente und Einstellungen\g.reinholz\Desktop\ExportADIS.xlsx";
if (args.Count() > 0)
{
Console.WriteLine("Folgende Datei wurde ausgewaehlt: " + args[0]);
}
else
{
Console.WriteLine("Nichts passiert");
}
xl_Pfad = new StringBuilder(args[0]);
// xl_Pfad = new StringBuilder(testpfad);
Console.WriteLine(Environment.NewLine + "StringBuilder: "+xl_Pfad);
StringBuilder sheetName = new StringBuilder("Tabelle1");
xl.Excel.Application xlApp = new xl.Excel.Application();
xlApp.Visible = true;
xl.Excel.Workbook xlWbk = xlApp.Workbooks.Open(xl_Pfad.ToString());
xl.Excel.Worksheet xlSht = xlWbk.Sheets[sheetName.ToString()];
int startRow = 1;
int lastRow = RowCount(xlSht, 1);
Console.WriteLine("LastRow: "+lastRow);
//Spalten umbenennen
int[] obligatoryColumns = new int [39];
for (int row = startRow; row < lastRow; row++)
{
foreach (int spalte in obligatoryColumns)
{
if(xlSht.Cells[row,spalte].value.ToString()=="Betreiber")
{
xlSht.Cells[row, spalte] = "ma";
}
}
}
Console.ReadKey();
}
static int RowCount(xl.Excel.Worksheet sheet, int column)
{
xl.Excel.Range xlRange = sheet.Cells[sheet.Rows.Count, column];
return xlRange.get_End(xl.Excel.XlDirection.xlUp).Row;
}
}
}
Des Weiteren finde ich es komisch/unpraktisch das es Visualstudio "egal" ist, ob da ".value.ToString()", "[row,spalte].Text" oder "[row,spalte] = " steht. Erst bei Programmausführung wird ein Fehler sichtbar