Daten aus txt-File in Worksheet importieren

astaluego

Erfahrenes Mitglied
Hallo pipl!

Wisst ihr, wie ich auf einfachem Wege Daten aus einem Textfile in ein bestehendes Worksheet importieren kann?
Ich habe zwar die Lösung aus dem Hause Microsoft versucht ( walkthrough ) aber in meinem xls-File tut sich trotzdem nichts. :(
Jetzt mache ich ein neues Workbook daraus aber ich möchte es in meinem anderen Workbook haben und zwar in diesem Sheet in welchem schon die oberste Zeile mit Daten gefüllt ist.
 
Zuletzt bearbeitet:
Hallo,

den Source habe ich in einem Buch gefunden - vielleicht hilft er Dir weiter

Code:
using System;
using System.IO;
using System.Reflection;
using System.Windows.Forms;

namespace Excel_Arbeitsmappen_erweitern
{
	class Start
	{
		[STAThread]
		static void Main(string[] args)
		{
			// Für die wiederholte Ausführung der Demo die Datei zunächst aus einem
			// Original umkopieren
			if (File.Exists(Path.Combine(Application.StartupPath, "Einkommensberechnung.xls")))
				File.Delete(Path.Combine(Application.StartupPath, "Einkommensberechnung.xls"));
			File.Copy(Path.Combine(Application.StartupPath, "Einkommensberechnung_Orig.xls"),
				Path.Combine(Application.StartupPath, "Einkommensberechnung.xls"));
			
			// Excel-Instanz erzeugen und sichtbar schalten
			Excel.Application excel = new Excel.ApplicationClass();
			excel.Visible = true;

			// Arbeitsmappe öffnen
			object missing = Missing.Value;
			string fileName = Path.Combine(Application.StartupPath, "Einkommensberechnung.xls");
			Excel.Workbook workbook = excel.Workbooks.Open(fileName, missing, missing, missing,
				missing, missing, missing, missing, missing, missing, missing, missing, missing, 
				missing, missing);

			// Arbeitsblatt 'Einkommensberechnung' referenzieren
			Excel.Worksheet worksheet = (Excel.Worksheet)workbook.Worksheets["Einkommensberechnung"];

			// Suchen der ersten Zeile, die in der ersten Spalte keine Daten mehr enthält
			int row = 0;
			Excel.Range range = null;
			do
			{
				row++;
				range = (Excel.Range)worksheet.Cells[row, 1];
				if (range.Value2 == null)
					break;
			} while (true);

			// Die erste Zelle der letzten Datenzeile referenzieren
			range = (Excel.Range)worksheet.Cells[row - 1, 1];

			// Alternative: Ausgehend von der Zelle A1 die letzte Zelle suchen, die noch Daten enthält
			// Excel.Range range = worksheet.get_Range("A1", missing).get_End(Excel.XlDirection.xlDown);
			
			// Eine Zeile einfügen
			range.EntireRow.Insert(missing, missing);

			// Die erste Zelle in der aktuellen Zeile referenzieren (zur Sicherheit)
			range = (Excel.Range)range.EntireRow.Cells[1, 1];

			// Die Daten der aktuellen Zeile in die neue oben kopieren
			range.get_Offset(-1, 0).Value2 = range.Value2;
			range.get_Offset(-1, 1).Value2 = range.get_Offset(0, 1).Value2;

			// Daten in die aktuelle Zeile einfügen
			range.Value2 = 2004;
			range = range.get_Offset(0, 1);
			range.Value2 = 185000;

			// Eine weitere Zeile einfügen, Daten kopieren und neue Daten einfügen
			range.EntireRow.Insert(missing, missing);
			range = (Excel.Range)range.EntireRow.Cells[1, 1];
			range.get_Offset(-1, 0).Value2 = range.Value2;
			range.get_Offset(-1, 1).Value2 = range.get_Offset(0, 1).Value2;
			range.Value2 = 2005;
			range = range.get_Offset(0, 1);
			range.Value2 = 221000;

			// Arbeitsmappe speichern 
			workbook.Save();

			// Excel beenden
			excel.Quit();

			Console.WriteLine("Beenden mit Return");
			Console.ReadLine();
		}
	}
}


Ciao,
Thorsten


==========================================
aktuelles Projekt: MyFotoAlbum
 
danke für dein engagement thorsten. hat mir sehr geholfen!

hier der code zum kopieren aus einem anderen sheet (und workbook)
Ich habe aus Platzgründen das Öffnen der beiden Workbooks ausgelassen.
Code:
         Excel.Range range = null;
         Excel.Range rangeF = null;
         // Suchen der ersten Zeile, die in der ersten Spalte keine Daten mehr enthält
         int rowF = 0;
         do
         {
            rowF++;
            rangeF = (Excel.Range)oSheetF.Cells[rowF, 1];
            if (rangeF.Value2 == null)
               break;
         } while (true);     
    
         /* das zu kopierende Sheet (oSheetF) wird Zeile für Zeile durchgegangen
          * und im range des zu speihernden Sheets (oSheet) gespeichert
          */
         for(int i = 1; i <= rowF; i++)
         {
            rangeF = (Excel.Range) oSheetF.Cells[i,1];  // Auswahl der Zelle in Spalte 1 (reicht)
            range = (Excel.Range) oSheet.Cells[(i+1),1];
            rangeF.EntireRow.Copy(range);                    
         }
oSheet.Cells[(i+1),1]; ich erhöhe hier nur um eins,weil ich in der Tabelle noch einen Header gemacht habe, ansonsten wäre hier nur i.
grizzle ana
 
Zuletzt bearbeitet:
Zurück