Microsoft Excel

Herbers Excel/VBA-Archiv

ArrayPrint in eine Excelcelle

Betrifft: ArrayPrint in eine Excelcelle von: Andi
Geschrieben am: 23.03.2016 12:07:08

Hallo Zusammen,
ich möchte ein C# ArrayPrinter verwenden.
Der Print Output sähe so aus.

┌──────────┬─────────┬──────────────────────────┬────────────────┬─────┬───────┐
│Identifier│ Type│ Description│ CPU Credit Use│Hours│Balance│
├──────────┼─────────┼──────────────────────────┼────────────────┼─────┼───────┘
│ i-1234154│ t2.small│ This is an example.│ 3263.75│ 360│
├──────────┼─────────┼──────────────────────────┼────────────────┼─────┘
│ i-1231412│ t2.small│ This is another example.│ 3089.93│
└──────────┴─────────┴──────────────────────────┴────────────────┘

Kopiert man diese abgebildete Tabelle in eine Excelzelle, wird die Tabelle falsch abgebildet.

Wie stelle ich die Excel Zelle ein?

Danke
Gruss Andi


  

Betrifft: AW: ArrayPrint in eine Excelcelle von: fcs
Geschrieben am: 23.03.2016 13:35:47

Hallo Andi,

für wenige Einfüge-Aktionen kann man den eingefügten Text wie folgt bereinigen.
Excel Jeanie HTML

 AB
1SchrittBeschreibung
21C# ArrayPrinter in Excel einfügen
32Das Zeichen ¦in einer Zelle markieren und kopieren per Strg+C
43Alle Zellen mit dem eingefügten Text aus C# ArrayPrinter markieren
54Via Menu Daten -->Datentools --> Text in Spalten den entsprechenden Assistenten starten
65Als Datentyp "getrennt" wählen, dann weiter
76Als Trennzeichen "andere" wählen und das kopierte Zeichen via Strg+V einfügen, dann weiter
87.1Unter Optionen "weitere" klicken und als Dezimalzeichen den Punkt" und als 1000er-Zeichen das Komma einstellen, dann OK
97.2Unter Datenvorschau die 1. Spalte markieren und als Spaltenformat "überspringen" wählen
107.3Unter Datenvorschau die letzte Spalte (ohne Daten) markieren und als Spaltenformat "überspringen" wählen
117.4Fertig stellen
128Die Daten werden jetzt in Spalten dargestellt ohne Rahmenlinien, aber mit Leezeilen zwischen den Datenzeilen
139Alle Zellen in der Spalte "Identifier" markieren
1410Via Menü Start --> Bearbeiten --> Suchen --> Inhalte auswählen --> Option "leere Zellen" --> OK alle leeren Zellen selektieren
1511Via Menü Start --> Zellen --> Löschen --> Blattzeilen löschen die Leerzeilen entfernen.


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4.8



Falls du häufiger diese Inhalte aus C# nach Excel übertragen willst, dann solltest du "einfach" einen Textstring mit Trennzeichen (am besten TAB) und Zeilenschaltungen generieren. Dieser läßt sich dann in Excel einfacher händeln. Oder du erzeigst eine Textdatei und importierst diese in Excel.

Gruß
Franz

vorher
Excel Jeanie HTMLTabelle2

 A
1+------------------------------------------------------------------------------+
2¦Identifier¦ Type¦ Description¦ CPU Credit Use¦Hours¦Balance¦
3+----------+---------+--------------------------+----------------+-----+-------+
4¦ i-1234154¦ t2.small¦ This is an example.¦ 3263.75¦ 360¦
5+----------+---------+--------------------------+----------------+-----+
6¦ i-1231412¦ t2.small¦ This is another example.¦ 3089.93¦
7+----------------------------------------------------------------+


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4.8



Nachher
Excel Jeanie HTMLTabelle2

 ABCDEF
1Identifier Type Description CPU Credit UseHoursBalance
2 i-1234154 t2.small This is an example.3263,75360 
3 i-1231412 t2.small This is another example.3089,93  


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4.8




  

Betrifft: AW: ArrayPrint in eine Excelcelle von: Andi
Geschrieben am: 23.03.2016 14:34:04

Hallo Franz,
Danke für deinen Beitrag.
Die Daten für den Excel Bericht ziehe ich über eine Oracle Procedure (P/SQL).
P/SQL liefert mir einen Zeiger Datentyp (ref Cursor).
Nun habe ich meine Oracle Datenbank Tabelle um eine Spalte mit dem Datentyp VARCHAR2(4000 BYTE) erweitert. In das Feld werden Berichte im XML Format geschrieben bzw. gespeichert.
Das heißt, das XML muss lesbar für Excel gewandelt werden.
Aber nicht aufteilen in Excel Zeilen und Spalten, sondern in eine einzelne Excel Zelle.
1. Schritt Den XML Knoten Tabelle in ein Array parsen
2. Schritt Das Array in einen Print String umwandeln
3. Schritt Excelzelle den Print String zuweisen

Problem ist, das die Excel Zelle kein Text UT-8 Format kann.

Die von mir gepostete Beispieltabelle wird auf dem Front End Herber Editor richtig dargestellt,
aber die Herber Vorschau und Forum stellt die Tabelle nicht richtig dar.

Gleichen Effekt habe ich mit der Excel Zelle. Im Notepade wird die Tabelle sauber dargestellt,
aber in der Excelzelle nicht.

Woran liegt das?


Gruss Andi






  

Betrifft: AW: ArrayPrint in eine Excelcelle von: fcs
Geschrieben am: 23.03.2016 16:40:38

Hallo Andi,

probiere mal folgendes:
1. ändere den Font der Zelle in die du den Text-Tring einfügen wilst in Courier New oder eine andere Schriftart mit fester Zeichenbreite.

2. Ändere die Spaltenbreite der Zelle so, die Zeilen ohne Umruch dargestellt werden können

3. Lasse Zeilenümrüche in der Zelle zu.

4. Füge den Text in die Zelle ein. Zelle doppelklicken, dann mit Strg+V
Wenn es per Makro erfolgen soll, dann weise der Value-Eigenschaft den Text zu

Es kann aber sein, dass Excel die Zeilenümbrüche nicht korrekt darstellt. Dies müßte im Text jeweils Zeichen 10 (Chr(10) sein. ggf. im Text Zeichen 13 durch Zeichen 10 ersetzen.

Gruß
Franz


  

Betrifft: AW: ArrayPrint in eine Excelcelle von: Andi
Geschrieben am: 29.03.2016 09:25:37

Hallo Franz,
die von Dir beschriebene Methode ergibt ein leserliches Format.
Vielen Dank.

Gruss Andi


Beispiel zum Testen

Sub Test()

Dim strInput As String

strInput = _ "+------------------------------------------------------------------------- _ -----+" & Chr(10) & _ "¦Identifier¦ Type¦ Description¦ CPU Credit Use¦Hours¦Balance¦" & Chr(10) & _ "+----------+---------+--------------------------+----------------+-----+-------+" & Chr(10) & _ "¦ i-1234154¦ t2.small¦ This is an example.¦ 3263.75¦ 360¦" & Chr(10) & _ "+----------+---------+--------------------------+----------------+-----+" & Chr(10) & _ "¦ i-1231412¦ t2.small¦ This is another example.¦ 3089.93¦" & Chr(10) & _ "+----------------------------------------------------------------+"

ThisWorkbook.Sheets(1).Cells(3, 3).Font.Name = "Courier New" ThisWorkbook.Sheets(1) _ .Cells(3, 3).Font.Size = 10 ThisWorkbook.Sheets(1).Cells(3, 3).Value = strInput

End Sub




  

Betrifft: Frage ist beantwortet von: fcs
Geschrieben am: 29.03.2016 23:01:24

und zu ...