myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
» Regeln
» Wie poste ich richtig?
» Forum-FAQ

Mitglieder
» Liste / Suche
» Wer ist wo online?

Ressourcen
» openbook: Visual C#
» openbook: OO
» Microsoft Docs

Team
» Kontakt
» Übersicht
» Wir über uns

» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » Office-Technologien » Im Excel nach Variablen suchen und den dazugehörenden Wert in eine .txt Datei schreiben
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

Im Excel nach Variablen suchen und den dazugehörenden Wert in eine .txt Datei schreiben

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
phil1987
myCSharp.de-Mitglied

Dabei seit: 23.11.2018
Beiträge: 2


phil1987 ist offline

Im Excel nach Variablen suchen und den dazugehörenden Wert in eine .txt Datei schreiben

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo Liebe Kollegen,

Ich bin hier neu bzw. neu in c#. Wegen meiner Arbeit bin ich gezwungen mein Projekt in c# zu programmieren. Ich bin leider ein wenig überfordert. Ich hoffe ihr könnt mir ein wenig helfen.

Nun zu meinem Problem. Ich habe 2 Dateien. Eine Notepad Datei und eine Excel Datei. Die Notepad Datei habe ich erfolgreich ins c# eingelesen. Nun möchte ich auch mein Excel Sheet einlesen und Werte vom Excel ins Notepad überschreiben/replacen.

Ich bekomme von einem Program eine Output Datei (Notepad - Datei)
Die Formatierung lautet wie folgt: [Einheit Optional] Variable = Wert -> siehe:


[mm]p0=45
[mm]param1=36.42199010819
[mm]param2=56
param9=56
[degrees]p3=453
[degrees]p4=134
[mm]p5=56
p6=1
p7=1


Dann habe ich noch mein Excel Sheet:

XML-Code:
p3    p2    p9    param9    param2    param1    p9    p23    param1    p3
32    2    23    55    1        4,333333333    -6,666666667    -17,66666667    -14,95753715
2    3    78    103,6666667    141,6666667    179,6666667    217,6666667    255,6666667    293,6666667    331,6666667
-28    4    133    152,3333333    282,3333333        431    518    605    678,2908705
-58    5    188    201    423    179,6666667    644,3333333    780,3333333    916,3333333    1024,915074
-88    6    243    249,6666667    563,6666667        857,6666667    1042,666667    1227,666667    1371,539278
-118    7    298    298,3333333    704,3333333    179,6666667    1071    1305    1539    1718,163482

In der erste Zeile stehen immer die Variablen darunter dann die dazugehörenden Werte.

Nun möchte ich mittels C# die einzelnen Variablen Namen im Excel durchgehen und schauen ob diese in der Notepad Datei vorhanden sind. Wenn diese Variable in beiden Dateien vorhanden sind möchte ich den Wert vom Excel übernehmen und sie in Notepad Datei überschreiben. Und das möchte ich für alle Variabllen und Werte mittel Schleife machen.

C#-Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Runtime.InteropServices;
using Excel = Microsoft.Office.Interop.Excel;

namespace ConsoleApplication3
{
    class Program
    {
        static void Main(string[] args)
        {

            string[] lines = System.IO.File.ReadAllLines(@"C:\Users\Z003DUKJ\Desktop\notepad.txt");
            int stop = 1;



        }
    }
}


Dateianhang:
unknown notepad.txt (124 Byte, 6 mal heruntergeladen)

Dieser Beitrag wurde 3 mal editiert, zum letzten Mal von phil1987 am 23.11.2018 15:50.

23.11.2018 14:45 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Palladin007 Palladin007 ist männlich
myCSharp.de-Mitglied

Dabei seit: 03.02.2012
Beiträge: 1.258
Entwicklungsumgebung: Visual Studio 2017
Herkunft: NRW


Palladin007 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Bei Excel wird's schwierig, besonders wenn Du noch Anfänger bist.
Ich kann dir keine vollständige Anleitung bieten, aber einige Stichpunkte, nach denen Du suchen kannst. Wenn Du damit dann nicht weiter kommst, kannst Du ja wieder fragen.

Bezüglich der TXT:

Ich würde eine Klasse schreiben, die eine Zeile darstellen kann und die drei Inhalte Name, Wert und Einheit beinhaltet. Wenn Du die TXT-Datei dann einliest, kannst Du mit einfachen String-Operationen (z.B. Split) jede Zeile parsen und ein Objekt dazu erzeugen. Für komplexere Dinge könnte sich auch der Blick in Richtung Regex lohnen, allerdings ist der Einstieg schwer.

Bezüglich Excel:

Wenn es CSV ist (Excel kann CSV), dann such eine CSV-Library raus, davon gibt's genug. Das ist bedeutend einfacher, als direkt mit Excel zu hantieren. Viele können dir das auch direkt in Objekte Parsen und als Liste ausgeben.

Ist es kein CSV, kannst Du alternativ mit ODBC eine Datenbank-"Verbindung" mit einer Excel-Datei herstellen und dann mittels SQL suchen. Das könnte der einfachste Weg sein, allerdings hab ich gehört, dass ODBC gerne etwas hackelig sein soll, eigene Erfahrungen habe ich keine.

Wenn es OpenXml ist, dann gibt's auch Frameworks, die das können. Das offizielle Framework für OpenXml würde ich nicht anfassen, das ist ein Krampf. Stattdessen empfehle ich dir das Framework ClosedXml. Die Dokumentation könnte besser sein, aber der Aufbau und die Benennung ist so gut gewählt, dass das meiste super intuitiv und selbsterklärend von der Hand geht.
So oder so weiß ich aber nicht, ob diese Frameworks eine vollständige Suche unterstützen, im Zweifel musst Du also jede Zelle einzeln durch gehen und prüfen.
23.11.2018 14:56 Beiträge des Benutzers | zu Buddylist hinzufügen
phil1987
myCSharp.de-Mitglied

Dabei seit: 23.11.2018
Beiträge: 2

Themenstarter Thema begonnen von phil1987

phil1987 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

@Palladin007 ich glaube ich werde es nicht kapieren...

Ich als Techniker habe schon Lösungen im Kopf kann es aber nicht auf c# übertragen...

Bezüglich .txt ich glaube diese Vorgehensweise ist für mich zu kompliziert. Ich würde lieber in der jeweiligen Zeile nach Strings suchen und dann den Wert nach dem = Zeichen mit dem Excel Wert ersetzen/überschreiben. Des weiteren weiß ich ....Was ist "CSV"? Bzw. welche Referenzen muss ich für das Excel laden? Ka ich weiss nicht wie das lösen kann...

Jedenfalls Danke für deine Antwort.
23.11.2018 15:49 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
emuuu
myCSharp.de-Mitglied

avatar-4078.jpg


Dabei seit: 04.02.2011
Beiträge: 255


emuuu ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Benutze  EPPlus, damit kannst du Excel-Dateien Problemlos öffnen und die einzelnen Tabellen/Zellen problemlos durchlaufen und bearbeiten/durchsuchen/sonstwas.

Beste Grüße
emuuu



P.S.

Zitat von phil1987:
Bezüglich .txt ich glaube diese Vorgehensweise ist für mich zu kompliziert

C#-Code:
foreach(var line in File.ReadAllLines(stringToFile))
{
var parts = line.Split('\t');
}

Wenn du eine Excel-Tabelle in eine txt-Datei (oder csv, im Prinzip egal) packst kannst du die so auslesen. (\t steht hier für die Escape-Sequenz des Tab, da Excel die standardmäßig so ins Clipboard packt)
line repräsentiert dabei jede Zeile der Tabelle und parts ist ein string-Array wobei [0] die erste Spalte ist und [n] die letzte. Also nicht besonders kompliziert.

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von emuuu am 23.11.2018 16:01.

23.11.2018 15:57 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als ein Jahr.
Der letzte Beitrag ist älter als ein Jahr.
Antwort erstellen


© Copyright 2003-2020 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 04.06.2020 22:34