Benutzer mit den meisten Antworten
Tabelle als XLS anzeigen: Wie kann ich einen Zeilenumbruch in einer TableCell erzeugen

Frage
-
Hallo Leute
Ich möchte eine HtmlTable als XLS-Datei öffnen - soweit funktioniert das problemlos. Wenn ich aber in einer Zelle mehrere Zeilen anzeigen will, geht das nicht.
Wie kann ich in einer Zelle den Text mit Zeilenumbruch darstellen?
So mach ich's:
Response.Clear() Response.ContentType = "application/vnd.ms-excel" Response.AddHeader("Content-Disposition", String.Format("attachment; filename={0}.xls", filename)) Response.ContentEncoding = System.Text.Encoding.GetEncoding(28591) Dim tr As New HtmlTableRow Dim td As New HtmlTableCell td.InnerHtml = "Zeile 1" & vbCrLf & "Zeile 2" tr.Controls.Add(td) tb.Controls.Add(tr) Dim sb As New StringBuilder Dim tw As New StringWriter(sb) Dim hw As New HtmlTextWriter(tw) tb.RenderControl(hw) Response.Write(sb.ToString)
Antworten
-
Hallo StefanDass der Zeilenumbruch mit <br /> geht und nicht mit rowspan hab ich ja geschrieben.Da scheint mir, dass du dir selber widersprichst;Das von dir gewünschte ist mit einem Umbruch innerhalb einer Zelle nicht umsetzbar.Aber wie auch immer, dank userem kurzen Schriftwechsel bin ich auf die Lösung gekommen: Ich setze eine <texarea> ins <tr> und dann kann ich beliebig Zeilenumbrüche schrieben.
Was Du machen kannst, ist mit rowspan und ggfs. auch colspan zu arbeiten.
Besten Dank
André- Als Antwort markiert Robert BreitenhoferModerator Montag, 29. November 2010 12:21
Alle Antworten
-
Hallo André,
Ich möchte eine HtmlTable als XLS-Datei öffnen - soweit funktioniert das problemlos. Wenn ich aber in einer Zelle mehrere Zeilen anzeigen will, geht das nicht.
Wie kann ich in einer Zelle den Text mit Zeilenumbruch darstellen?
Zeilenumbrüche in HTML werden mit <br /> bzw. <br> dargestellt.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community -
Hallo Stefan
Danke für die schnelle Antwort
Ja, <br/> hab ich auch eingesetzt nur, und das ist das Problem, dann wird der Zeilenumbruch nicht im <td> gesetzt sondern über die
ganze Zeile und das ist nicht das Resultat, welche ich angezeit haben möchte.
Der Zeilenumbruch sollte in einer Zelle erscheinen.
Das Beispiel unten funktioniert nicht:
Dim tr As New HtmlTableRow
Dim td As New HtmlTableCell
td.InnerHtml = "Zeile 1" & "<br /> & "Zeile 2"
tr.Controls.Add(td)
tb.Controls.Add(tr) -
Hallo André,
Ja, <br/> hab ich auch eingesetzt nur, und das ist das Problem, dann wird der Zeilenumbruch nicht im <td> gesetzt sondern über die
wo auch sonst? In HTML (und eigentlich auch sonst überall außer vielleicht bei Excel^^) passen sich die Zeilenhöhen an die höchsten Zellen an. Wenn eine Zelle also 1000 Pixel hoch ist, sind alle anderen auch so hoch.
ganze Zeile
und das ist nicht das Resultat, welche ich angezeit haben möchte.
Das ist aber das, was normal ist.Der Zeilenumbruch sollte in einer Zelle erscheinen.
Doch. Es funktioniert genau so wie es soll. Dass das evtl. nicht das ist, was Du willst, ist eine ganz andere Sache.
Das Beispiel unten funktioniert nicht:
Das von dir gewünschte ist mit einem Umbruch innerhalb einer Zelle nicht umsetzbar. Was Du machen kannst, ist mit rowspan und ggfs. auch colspan zu arbeiten. Damit kannst Du verschiedene Zellen miteinander verbinden. In deinem Fall wäre das bspw. sowas:
<tr> <td rowspan="2">Wert 1<br />Wert 2</td> <td>Wert Abc</td> </tr> <tr> <td>Wert Xyz</td> </tr>
Damit hast Du dann in der ersten Spalte eine Zelle, die sich über zwei Zeilen erstreckt, in der zweiten Spalte zwei ganz normale Zellen.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community -
Lieber Stefan, Danke für deine Antwort.
Vermutlich reden wir nicht von der selben Sache
Dass dein Beispiel richtig funktioniert bezweifle ich nicht.
Was ich per VB erreichen will kann ich so dokumentieren:
<tr> <td>Z1<br />z2</td><td>Sp2</td> </tr> <tr> <td>Z1<br />z2</td><td>Sp2</td> </tr>
Mit andern Worten ein Zeilenumbruch ist auch ohne rowspan möglich, und genau so möchte ich die Tabelle als XLS an den Benutzer senden. In der ersten Spalte einen Mehrzeiligen Text und in den restlichen Einzeiligen.
Besten Dank
p.s.
André
In meinem ersten Posting siehst du auch, wie ich die Tabelle nach XLS umsetzen will. Dort vermute ich, liegt auch die Lösung des Problems. -
Hi,
Vermutlich reden wir nicht von der selben Sache
Dass dein Beispiel richtig funktioniert bezweifle ich nicht.
Was ich per VB erreichen will kann ich so dokumentieren:
...
und was soll da anders sein als bei der HTML Ausgabe, die
td.InnerHtml = "Zeile 1" & "<br />" & "Zeile 2"
erzeugt?
Damit kommt genau <td>Zeile 1<br />Zeile 2</td> raus, also das, was Du geschrieben hast.
Dass der Zeilenumbruch mit <br /> geht und nicht mit rowspan hab ich ja geschrieben.Ggfs. solltest Du einfach mal einen Screenshot in Excel machen und den hier posten. Evtl. sieht man dann, was Du meinst.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community -
Hallo StefanDass der Zeilenumbruch mit <br /> geht und nicht mit rowspan hab ich ja geschrieben.Da scheint mir, dass du dir selber widersprichst;Das von dir gewünschte ist mit einem Umbruch innerhalb einer Zelle nicht umsetzbar.Aber wie auch immer, dank userem kurzen Schriftwechsel bin ich auf die Lösung gekommen: Ich setze eine <texarea> ins <tr> und dann kann ich beliebig Zeilenumbrüche schrieben.
Was Du machen kannst, ist mit rowspan und ggfs. auch colspan zu arbeiten.
Besten Dank
André- Als Antwort markiert Robert BreitenhoferModerator Montag, 29. November 2010 12:21
-
Hallo André,
Da scheint mir, dass du dir selber widersprichst;
Nö. Ein Zeilenumbruch wird immer mit <br /> erzeugt. Da das angeblich nicht das ist, was Du willst, habe ich eine Alternative aufgezeigt, die mit rowspan arbeitet. Aber das hat mit dem Umbruch nichts zu tun sondern lediglich mit deiner "Anforderung"
dann wird der Zeilenumbruch nicht im gesetzt sondern über die ganze Zeile und das ist nicht das Resultat, welche ich angezeit haben möchte.
Wobei ich keine Ahnung habe, was daran verkehrt sein soll (Rest siehe unten)Aber wie auch immer, dank userem kurzen Schriftwechsel bin ich auf die Lösung gekommen: Ich setze eine <texarea> ins <tr> und dann kann ich beliebig Zeilenumbrüche schrieben.
Was auch immer das bringen soll. Leider verstehe ich nicht, was Du eigentlich für ein Problem hattest und warum die gezeigten Lösungen für dich keine Lösungen sein sollten. Da es aber wohl nicht so wichtig zu sein scheint, lassen wir es halt gut sein. Wobei mich der Screenshot eines Excelbeispiels der gewünschten Ausgabe schon interessiert hätte. Aber wenn Du das nicht posten magst, muss ich wohl damit leben.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community -
Hallo Stefan
Klar, Hier der Code:
td.InnerHtml = "Text1<br/>Text2" tr.Controls.Add(td) tb.Controls.Add(tr)
- Bearbeitet André Derron Dienstag, 16. November 2010 17:23 d
-
Hallo André,
Wie kann ich hier einen Screenshot mit senden?
Grafiken hochladen kannst Du hier leider nicht. Du könntest die Grafik aber bspw. bei einem Freehoster hochladen und dann hier verlinken. Wichtig ist, dass Du in Excel ein Beispiel zeigst, wie es genau aussehen soll.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community -
So, Guten Morgen Stefan
Hier der Link: http://www.potaufeu.ch/pic/xls.gif
Besten Dank und freundlichen Gruss
André
-
Hallo André,
Hier der Link: http://www.potaufeu.ch/pic/xls.gif
aaaaaahhh, jetzt kommen wir der Sache schon näher. Ich meld mich nachher nochmal dazu und schaue, dass ich dir ein Beispiel an die Hand geben kann.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community -
Hallo Stefan
Ich meld mich nachher nochmal dazu und schaue, dass ich dir ein Beispiel an die Hand geben kann.
Die Sache scheint mir nicht so einfach zu sein.
Hab einfach keine Ahnung wie...
Möglicherweise geht das gar nicht bzw. ich muss den Code-Abschnitt (siehe Unten) ändern.Dim sb As New StringBuilder Dim tw As New StringWriter(sb) Dim hw As New HtmlTextWriter(tw) tb.RenderControl(hw) Response.Write(sb.ToString)
Nochmals besten Dank
Gruss, André