Autor Beitrag
leni
Hält's aus hier
Beiträge: 3



BeitragVerfasst: So 05.06.16 09:54 
Hallo,
ich versuche seit einigen Tagen folgendes Problem, leider erfolglos zu lösen. :?
(Ich programmiere C# mit Visual Studio.)
Ziel ist es eine ausgewählte cs. Datei in Word zu speichern. Das klappt mittlerweile auch schon.
Nun sollen "unnötige Befehle" wie z.B die "using-Befehle" nicht in die Word Datei übernommen werden.
Wie kann ich das Programmtechnisch verwirklichen, ohne das ich "von Hand" das Word Dokument durchsuchen muss und ungewünschte Programmzeilen rauslöschen muss?
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4764
Erhaltene Danke: 1052

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: So 05.06.16 11:28 
Hallo und :welcome:

wie überträgst du denn die CS-Datei nach Word?
Und was genau sind denn bei dir "unnötige Befehle", d.h. soll die Übertragung nach Word für Code-Beispiele sein?
Bei "using"-Deklarationen kannst du ja einfach jede Zeile überprüfen, ob diese mit diesem Wort anfängt (vorher am besten die Zeile "trimmen").
Oder gibt es bei dir noch mehr Zeilen, die entfallen sollen?
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4700
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: So 05.06.16 11:32 
Warum überträgst du nicht einfach nur die Zeilen aus der cs Quelle nach Word die du haben willst? Da irgendwas in Word zu machen scheint sinnfrei.

Wenn du genaue Sourcecode Formatierung beibehalten willst wird dir nicht viel mehr übrig bleiben als eine eigene Art des Parsen zu schreiben(bevor das an Word übergeben wird). Ansonsten wenn das nicht relevant ist kannst du die .cs Datei per CodeDomParser lesen und nur die Teile wieder schreiben die du haben willst.

Was ist der Sinn davon Sourcecode (außer mal ein paar gezielt ausgewählte einzelne Zeilen zu erklärenden Zwecken in einer Doku) in Word darzustellen?
leni Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: So 05.06.16 12:50 
Zitat:

wie überträgst du denn die CS-Datei nach Word?


Beim Klick auf einen Button öffnet sich ein Fenster mit allen bisher Programmierten Projekten, daraus wähle ich dann das gewünschte Projekt und die gewünschte .cs Datei diese wird dann in einer Listbox angezeigt und in Word übertragen.

Mit diesem Befehl übertrage ich die Datei Zeile für Zeile in Word, da ich nur einen string übertragen kann:


ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
        string zeile;

                WordprocessingDocument Doc = WordprocessingDocument.Create("Eileen.docx", WordprocessingDocumentType.Document); 
                Doc.AddMainDocumentPart();   
                Doc.MainDocumentPart.Document = new Document();     
                Doc.MainDocumentPart.Document.Body = new Body(); 

                for (int i = 0; i < Inhalt.Count; i++) 
                {
                    zeile = Inhalt[i];
                    Doc.MainDocumentPart.Document.Body.Append(new Paragraph(new Run(new Text(zeile)))); 
                }

                Doc.Close();        
                MessageBox.Show("Done");


Zitat:
Oder gibt es bei dir noch mehr Zeilen, die entfallen sollen?

Ich hatte mit überlegt Kommentare auch raus zu nehmen aber die sollten ja im Normalfall sinnvoll sein. Deshalb wollte ich eig nur das raus nehmen was sowieso generell bei dem öffnen eines neuen Projektes ect. schon da steht.
Eigentlich sollten es dann auch nicht alle "using Befehle" sein aber lieber alle rausgenommen als eine halbe Seite using Befehle da stehen zu haben 8)


Zitat:
.cs Datei per CodeDomParser lesen und nur die Teile wieder schreiben die du haben willst


Das sagt mir jetzt leider nichts da ich noch nicht so lange bzw sehr viel damit gearbeitet habe. :oops:

Zitat:
Was ist der Sinn davon Sourcecode in Word darzustellen?


Es soll im Endefekt eine Vereinfachnung sein um gewünschte Dateien schneller ausdrucken zu können, ohne das ich erst alles umformatieren muss.
Zugriff soll quasi über .exe auf dem Desktop erfolgen, Datei einfach auswählen und diese soll dann sofort druckbar sein. :)

Moderiert von user profile iconChristian S.: Quote- durch C#-Tags ersetzt
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4700
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: So 05.06.16 13:27 
Das Framework enthält bereits einfache Parser/Compiler für csharp mit dem du eine Sourcecode Datei zerlegen kannst um nur die Einzelteile rauszunehmen die dich interessieren.

Zitat:
Zugriff soll quasi über .exe auf dem Desktop erfolgen, Datei einfach auswählen und diese soll dann sofort druckbar sein. :)


Ich hielt ja schon das übertragen von Sourcecode nach Word für eher unsinnig. Ihn auszudrucken schlägt das natürlich spielend ;)
Hab mal eben das File Menu von Visual Studio geöffnet und tatsächlich da gibt es ein Print Command. Ich benutze VS zeigt circa 20 Jahren aber das der Drucken kann ist mir neu.
Was will man mit ausgedrucktem Code?
papa69
ontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 79
Erhaltene Danke: 23

Win 10, Ubuntu
C#, Java, C
BeitragVerfasst: So 05.06.16 13:54 
Hallo,

bevor du deine Zeilen in die listbox überträgst, könntest du diese in einem string-Array "zwischenspeichern" und dann darüber iterieren und die "Überflüssigen" Zeilen gar nicht erst der listbox hinzufügen

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
...

for (int i = 0; i < textArray.Length; i++)
{
  if (!textArray[i].StartsWith("using"))
    listbox.Items.Add(textArray[i]);
}
...


Das würde aber nur funktionier, wenn du keine Zeilennummern anzeigst.

_________________
Daniel Bauer
... fatal ist nur, wenn sich das Licht am Ende des Tunnels als entgegenkommender ICE entpuppt ...
leni Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Di 07.06.16 16:08 
Super vielen vielen Dank für die Hilfe mit dem Quellcode etwas abgeändert hat es super geklappt und ich habe jetzt alle using Zeilen und alle Zeilen in denen nichts steht drausen.
Das einzige was jetzt aufgetaucht ist, das zu lange Quellcodezeilen in dem WORD Dokument umgebrochen werden und von beginn an geschrieben werden was natürlich nicht so schön aussieht.
ausblenden C#-Quelltext
1:
2:
3:
4:
if (temp.Length > 60)
{
    temp = temp.Insert(60"                         ");
}

Ich habe versucht hiermit eine die Zeile nach dem umbruch einzurücken, leider Funktioniert das nicht.
Habt Ihr auch hier eine Idee?

Zitat:
Was will man mit ausgedrucktem Code?

Gute Frage, als Sicherung evtl?
Aber da ich noch in der Schule bin, um ihn an alle zu verteilen. :wink:

Moderiert von user profile iconTh69: Quote- durch C#-Tags ersetzt