1Danke
ERLEDIGT
NEIN
NEIN
ANTWORTEN
12
12
ZUGRIFFE
1423
1423
EMPFEHLEN
-
26.11.09 12:12 #1Sedon Tutorials.de Gastzugang
Hallo,
ich schriebe zur Zeit einen Exporter der Daten mit einer bestimmten Formatierung in Excel expotieren soll. (C#, CarlosAG ExcelXMLWriter)
Das klappt auch soweit ganz gut. Ich habe jetzt nur ein Problem. Ich möchte einen Zeilenumbruch in einer Zelle haben(eine bestimmte Zelle an einer bestimmten stelle). Das bekomme ich leider schon nicht hin.
Dann gibt es noch ein zweites Problem. Um die Formatierung passend hinzubekommen (muss platzsparend sein) muss ich die breite der Strings messen und bei einem Zeilenumbruch könnte sogar das noch probleme geben. Aber das würd ich denke ich schon irgendwie hinbekommen wichtig ist erstmal nur wie ich denn den Zeilenumbruch hinbekomme(also mit \r\n funktionierts nicht)
Danke schonmal im voraus für die Antworten.
-
21.07.10 18:39 #2Psycho667 Tutorials.de Gastzugang
Ja, das würde ich auch gerne wissen, habe dasselbe Problem.
-
21.07.10 22:52 #3
- Registriert seit
- Jul 2004
- Ort
- Deutschland
- Beiträge
- 95
Hallo,
vielleicht Hilft dir das weiter.
http://www.carlosag.net/Tools/ExcelX...Generator.aspx
Grüsse
-
Hallo allerseits,
da ich aktuell das selbe Problem habe und der Generator mein Problem leider nicht gelöst hat, muß ich das Thema leider doch noch einmal aufwärmen.
Hat jemand eine Lösung für Zeilenumbrüche innerhalb einer Zelle?
Natürlich habe ich die Eigenschaft 'WrapText' auf true gesetzt.
Ich habe schon verschiedene Versionen versucht, nach '\r\n': \n; Char(10); Char(13);
Bevor ich die Datei speichere stehen die Zeilenumbrüche ('\n') in der entsprechenden Zelle drinnen - nach dem Öffnen der gespeicherten Datei aber nicht.
Hoffentlich hat jemand noch 'ne Idee, mir gehen sie nämlich langsam aus...
Gruß,
93C.
-
18.10.11 13:13 #5
- Registriert seit
- Jun 2005
- Beiträge
- 8.168
Hi.
Zeig doch mal eine generierte Datei und evtl. etwas Code.
GrußIf at first you don't succeed, try again. Then quit. No use being a damn fool about it.
-
Hi deepthroat,
das ist kein Problem - das ist die Exportfunktion:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93
private void ExportDataTableToExcel(DataTable dtExcel, string fileName) { //Add a workbook string _fileName = fileName; CarlosAg.ExcelXmlWriter.Workbook book = new CarlosAg.ExcelXmlWriter.Workbook(); // Specify which Sheet should be opened and the size of window by default book.ExcelWorkbook.ActiveSheetIndex = 1; book.ExcelWorkbook.WindowTopX = 100; book.ExcelWorkbook.WindowTopY = 200; book.ExcelWorkbook.WindowHeight = 7000; book.ExcelWorkbook.WindowWidth = 8000; // Some optional properties of the Document book.Properties.Author = Environment.UserName; book.Properties.Title = "Excel Export"; book.Properties.Created = DateTime.Now; //Add styles to the workbook WorksheetStyle s31 = book.Styles.Add("s31"); s31.Font.FontName = "Tahoma"; s31.Font.Size = 8; s31.Font.Color = "#000000"; s31.Alignment.Horizontal = StyleHorizontalAlignment.Automatic; s31.Alignment.Vertical = StyleVerticalAlignment.Center; s31.Alignment.WrapText = true; s31.Borders.Add(StylePosition.Bottom, LineStyleOption.Continuous, 1); s31.Borders.Add(StylePosition.Left, LineStyleOption.Continuous, 1); s31.Borders.Add(StylePosition.Right, LineStyleOption.Continuous, 1); s31.Borders.Add(StylePosition.Top, LineStyleOption.Continuous, 1); s31.NumberFormat = "@"; // Add styles for header of the Workbook WorksheetStyle style = book.Styles.Add("HeaderStyle"); style.Font.FontName = "Tahoma"; style.Font.Size = 12; style.Font.Color = "#CCCCFF"; style.Font.Bold = true; style.Alignment.Horizontal = StyleHorizontalAlignment.Center; style.Alignment.Vertical = StyleVerticalAlignment.Center; style.Borders.Add(StylePosition.Bottom, LineStyleOption.Continuous, 1); style.Borders.Add(StylePosition.Left, LineStyleOption.Continuous, 1); style.Borders.Add(StylePosition.Right, LineStyleOption.Continuous, 1); style.Borders.Add(StylePosition.Top, LineStyleOption.Continuous, 1); style.Interior.Pattern = StyleInteriorPattern.ThinDiagCross; style.Interior.Color = "#5252FF"; // Add a Worksheet Worksheet sheet = book.Worksheets.Add("Datenexport " + sIsinCode); // Add 8 columns with defined widths sheet.Table.Columns.Add(new WorksheetColumn(70)); // ISINCOD sheet.Table.Columns.Add(new WorksheetColumn(90)); // QSTAMP sheet.Table.Columns.Add(new WorksheetColumn(50)); // BID sheet.Table.Columns.Add(new WorksheetColumn(50)); // ASK sheet.Table.Columns.Add(new WorksheetColumn(70)); // BIDSIZE sheet.Table.Columns.Add(new WorksheetColumn(70)); // ASKSIZE sheet.Table.Columns.Add(new WorksheetColumn(70)); // ERRCODE sheet.Table.Columns.Add(new WorksheetColumn(400)); // DESCRIPTION //Add row with some properties WorksheetRow row = sheet.Table.Rows.Add(); row.Index = 0; row.Height = 20; row.AutoFitHeight = false; //Add header text for the columns foreach (DataColumn col in dtExcel.Columns) { WorksheetCell wcHeader = new WorksheetCell(col.ColumnName, "HeaderStyle"); row.Cells.Add(wcHeader); } foreach (DataRow dtRow in dtExcel.Rows) { //Add row to the excel sheet row = sheet.Table.Rows.Add(); //row.Height = 30; row.AutoFitHeight = true; //Loop through each column foreach (DataColumn col in dtExcel.Columns) { WorksheetCell wc = new WorksheetCell(); wc.Data.Type = DataType.String; wc.StyleID = "s31"; wc.Data.Text = dtRow[col.ColumnName].ToString().Replace("\r\n", "\n"); row.Cells.Add(wc); } } //Save the work book book.Save(_fileName); }
Im Anhang ist die generierte Excel-Datei. Die Spalte "H" enthält die besagten Zeilenumbrüche.
Die Zelle "H4" müßte so aussehen:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
Variante Benutzer - QMusr_Perf_RMK22001 v11 Quali Anforderungen aktiviert! PERF_MQV: *** RefMKT: *** Xetra verf?gbar! Quote: --- Quote --- IsinCode: *** Bid Price: *** Ask Price: *** Xetra im Status=TRADE| Auf- & Abschl?ge in cent! Bid cent: ***, Ask cent: *** Offset cent: *** Bid / Ask nach Auf-, Abschlag und Offset! [ Bid : ***, Ask : *** ] Calculating quality requirements... --- Spread --- ref. mkt. available and open relevant spreads: static spread (***) sqp spread (***) ref. mak. spread (***) + addition to ref. mkt. spread (***) MR calculated spread (***) reduced by quality factor (***) QR calculated Spread (***) CurrentSpread: ***%, MaxSpread: ***% --- MQV --- MQV (3000) in Euro divided by (***) MR calculated MQV (***) increased by quality factor (***) QR calculated MQV (***) CurrentQuoteVol: 0 / 0, MQV: *** Calculating quality requirements finished! neue Quote: --- Quote --- IsinCode: *** Bid Price: *** Ask Price: *** Roundfaktor=1 Keine limitierte Nachfrage oder Angebot im Bereich --> f_GetTaxeInCrossedOrderBook abgebrochenstart include OB (***)... Value not reached, using Quote Limit Bid: *** using Quotesize Bid: *** start include OB (***)... Value not reached, using Quote Limit Ask: *** using Quotesize Ask: *** Quote mit OB-ber?cksichtigung: --- Quote --- IsinCode: *** Bid Price: *** Ask Price: *** starting post calculation... post calculation finished!
Die Details habe ich mal ausgeblendet.
Danke für Deine Hilfe!
93C.Geändert von 93Current (18.10.11 um 13:51 Uhr)
-
18.10.11 14:05 #7
- Registriert seit
- Jun 2005
- Beiträge
- 8.168
Hi.
Probier mal die Zeilenumbrüche durch \edit: "& # 1 0 ;" (ohne die Leerzeichen) zu ersetzen. Wie sieht dann die generierte Datei aus? Sind diese Zeichen noch drin? (ich befürchte nicht...
).
GrußGeändert von deepthroat (18.10.11 um 14:07 Uhr) Grund: das Forum ersetzt Zeichenreferenzen... WTF *grrr*
If at first you don't succeed, try again. Then quit. No use being a damn fool about it.
-
Hi,
ich habe dann in den Zellen an besagten Stellen genau diese Zeichenketten drinnen... Leider.
Gruß!
93C.
-
18.10.11 15:04 #9
- Registriert seit
- Jun 2005
- Beiträge
- 8.168
wie ich befürchtet hatte..

Excel benötigt aber anscheinend diese Zeichen, alles andere wird ignoriert. (was eigentlich Unsinn ist, aber naja)
Man müßte die WorksheetCell Klasse anpassen. Diese läßt sich allerdings nicht gut erweitern (_data ist private). Insbesondere wird dort ein XmlWriter verwendet, so das man die WriteCharEntity Methode verwenden könnte um & #10; Zeichen in die Ausgabe zu kriegen und zu verhindern, dass dort das & durch & amp; ersetzt wird.
Evtl. schreibst du an den Carlos und bittest ihn das Problem zu berichtigen?
GrußIf at first you don't succeed, try again. Then quit. No use being a damn fool about it.
-
Hi deepthroat,
ich hatte schon befürchtest, daß Du meine Vermutung bestätigst - habe ihm schon eine Email geschickt - Mist! Ich danke Dir auf jeden Fall für Deine Hilfe!
Grüße,
93C.
-
Hallo nochmal,
leider ist er aktuell nicht erreichbar, weder über seine Kontaktadresse auf seiner Webseite noch über seine in Paypal angegebene...
Gruß,
93C.
-
19.10.11 13:48 #12
- Registriert seit
- Jun 2005
- Beiträge
- 8.168
Hi.
Dann ist wohl deine einzige Chance die Datei zu berichtigen nachdem sie generiert wurde.
Schreib das Workbook z.B. in einen MemoryStream.
Den Stream liest du in einen XmlTextReader. Immer wenn du auf ein Cell Element mit StyleID = s31 triffst, liest du dessen Data Element und ersetzt alle \n durch & #10; - alles andere schreibst du unverändert in eine Datei.
Eine andere Möglichkeit wäre einen XSL Stylesheet mit output method=text zu verwenden und ebenfalls alle //Cell[@StyleID='s32']/Data Element zu übersetzen. (dabei müßtest du allerdings ebenfalls per Hand die Spezialzeichen & < > durch Zeichenentitäten ersetzen)
GrußGeändert von deepthroat (19.10.11 um 13:58 Uhr)
If at first you don't succeed, try again. Then quit. No use being a damn fool about it.
-
Hi,
das ist eine sehr gute Idee für einen Workaround
Werde ich versuchen!
Danke & Gruß,
93C.
Ähnliche Themen
-
Zeilenumbruch
Von Wadlschrat im Forum PHPAntworten: 1Letzter Beitrag: 10.01.08, 17:38 -
XSL-Zeilenumbruch
Von PHPbubu im Forum XML TechnologienAntworten: 1Letzter Beitrag: 22.09.07, 10:03 -
Zeilenumbruch
Von Silvercreast im Forum .NET Windows FormsAntworten: 0Letzter Beitrag: 05.05.06, 10:20 -
Zeilenumbruch
Von StonE12 im Forum PHPAntworten: 2Letzter Beitrag: 25.01.05, 15:43 -
Zeilenumbruch <br>
Von DeeJay-Luke im Forum PHPAntworten: 20Letzter Beitrag: 09.02.04, 14:27





Zitieren

Login





