Schreiben in Excel

manuk

Grünschnabel
Hallo.

Ich bin noch ziemlicher Anfänger was C# angeht. Ich versuche gerade von einem gegebenen Pfad aus alle Unterverzeichnisse auszulesen und diese in ein Excel-File zu schreiben. Mein derzeitiger Versuch schaut wie folgt aus:

Code:
private void bsearch_Click(object sender, System.EventArgs e)
		{
			if(tlaufwerk.Text=="")
			{
				MessageBox.Show("Sie müssen ein Laufwerk angeben");
			}
			else
			{
				try  
				{
					excel = new Microsoft.Office.Interop.Excel.Application();
					string fileName = Path.Combine(Application.StartupPath, "Einkommensberechnung.xls");
					object  missing  = Type.Missing;
					wb = (Microsoft.Office.Interop.Excel.Workbook)(excel.Workbooks.Add(Missing.Value));
					sheet = (Microsoft.Office.Interop.Excel.Worksheet) wb.ActiveSheet;

				
				}
				catch (Exception ex) 
				{
					MessageBox.Show("Error: " + ex.ToString());
				}
				laufwerk = tlaufwerk.Text;
				String akt = Application.StartupPath.ToString();
				
				String temp = limitDateTime.ToShortDateString();
				temp.Replace(".","_");
				temp= temp.Replace(".","_");
				akt=akt+"\\"+temp+"_"+laufwerk.Substring(0,1)+".txt";
						

				DirBrowser(laufwerk);
				
								
				excel.Visible=true;
				excel.UserControl =true;
				MessageBox.Show("Finished");
			}
			
		}

		private void DirBrowser(string path)
		{
			DirectoryInfo dir = new DirectoryInfo(path);
			FileInfo[] files = dir.GetFiles();
			foreach (FileInfo file in files)
			{
								  CheckLastWriteTime(path,file);
				
			}

			foreach (DirectoryInfo subdir in dir.GetDirectories())
				DirBrowser(subdir.FullName);
		} 
		
		private void CheckLastWriteTime(String path, FileInfo file)
		{
						fileDateTime = file.LastWriteTime;
			//groesse = file.Length;
			if (limitDateTime >= fileDateTime)
			{
				
				sheet.Cells[i,1]=path+"\\"+file.Name;
				
			}
			
		}

Am Ende von CheckLastWriteTime bekomme ich folgende Exception:

An unhandled exception of type 'System.Runtime.InteropServices.COMException' occurred in mscorlib.dll

Additional information: Exception from HRESULT: 0x800A03EC.

Leider habe ich keine Ahnung warum ich diese Fehlermeldung bekomme. Hab auch nicht wirklich was im Internet gefunden.

Mfg Manu

//EDIT: Bin selber auf meinen Fehler drauf gekommen. Habe i mit 0 initialisiert.
Danke für alles.
 
Zuletzt bearbeitet:
Statt
Code:
path+"\\"+file.Name
solltest du grundsätzlich
Code:
Path.Combine(path, file.Name)
verwenden.

Statt
Code:
sheet.Cells[i,1]
probiere mal
Code:
sheet.Cells[i,1].Value

Desweiteren scheinst du alles global deklariert zu haben (Zähler etc.), das wäre auch nicht immer zu bevorzugen.
 
Hallo.

Danke für die Hinweise.

Path.Combine ist eine geniale Funktion. Danke für den Hinweis.

sheet.Cells[i,1].Value=i.ToString();
Funktioniert leider nicht. Bekomme folgende Meldung:
'object' does not contain a definition for 'Value'


Mit freundlichen Grüßen

Manu
 
Hmm ... dachte mir, da gibt es eine Value-Eigenschaft. Hab ich wohl verwechselt. Geht ohne Value.

Kann es sein, dass es die von dir angegebene Zelle gar nicht gibt? Auf welchem Wert steht i?
 
Hallo.

Entschuldige bitte die späte Antwort.
Die Zelle müsste es schon geben, da dass Programm funktioniert, also die Datensätze in die Exceltabelle geschrieben werden.

i wird bei mir am Beginn auf 1 initialisiert.

Du hast bei deiner ersten Antwort gemeint, dass es keine gute Idee wäre, alle Variablen global zu deklarieren. Damit gebe ich dir recht.
Ist es sinnvoller diese direkt bei den Funktionsaufrufen hinzuzuschreiben. Eine sinnvolle Klassenstruktur fällt mir bei diesem Programm nicht ein.

Danke für alles

Manu
 

Neue Beiträge

Zurück