tutorials.de Buch-Aktion 05/2012
Like Tree1Danke
  • 1 Beitrag von deepthroat
ERLEDIGT
NEIN
ANTWORTEN
12
ZUGRIFFE
1423
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Sedon 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.
     

  2. #2
    Psycho667 Tutorials.de Gastzugang
    Ja, das würde ich auch gerne wissen, habe dasselbe Problem.
     

  3. #3
    napstermania napstermania ist offline Mitglied Silber
    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
     

  4. #4
    93Current 93Current ist offline Mitglied
    Registriert seit
    Mar 2008
    Beiträge
    15
    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.
     

  5. #5
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    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.

  6. #6
    93Current 93Current ist offline Mitglied
    Registriert seit
    Mar 2008
    Beiträge
    15
    Hi deepthroat,

    Zitat Zitat von deepthroat Beitrag anzeigen
    Hi.

    Zeig doch mal eine generierte Datei und evtl. etwas Code.

    Gruß
    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.
    Angehängte Dateien Angehängte Dateien
    Geändert von 93Current (18.10.11 um 13:51 Uhr)
     

  7. #7
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    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.

  8. #8
    93Current 93Current ist offline Mitglied
    Registriert seit
    Mar 2008
    Beiträge
    15
    Hi,

    ich habe dann in den Zellen an besagten Stellen genau diese Zeichenketten drinnen... Leider.

    Gruß!
    93C.
     

  9. #9
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.168
    Zitat Zitat von 93Current Beitrag anzeigen
    ich habe dann in den Zellen an besagten Stellen genau diese Zeichenketten drinnen... Leider.
    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.

  10. #10
    93Current 93Current ist offline Mitglied
    Registriert seit
    Mar 2008
    Beiträge
    15
    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.
     

  11. #11
    93Current 93Current ist offline Mitglied
    Registriert seit
    Mar 2008
    Beiträge
    15
    Hallo nochmal,

    leider ist er aktuell nicht erreichbar, weder über seine Kontaktadresse auf seiner Webseite noch über seine in Paypal angegebene...

    Gruß,
    93C.
     

  12. #12
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    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)
    93Current bedankt sich. 
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  13. #13
    93Current 93Current ist offline Mitglied
    Registriert seit
    Mar 2008
    Beiträge
    15
    Hi,

    das ist eine sehr gute Idee für einen Workaround

    Werde ich versuchen!

    Danke & Gruß,
    93C.
     

Ähnliche Themen

  1. Zeilenumbruch
    Von Wadlschrat im Forum PHP
    Antworten: 1
    Letzter Beitrag: 10.01.08, 17:38
  2. XSL-Zeilenumbruch
    Von PHPbubu im Forum XML Technologien
    Antworten: 1
    Letzter Beitrag: 22.09.07, 10:03
  3. Zeilenumbruch
    Von Silvercreast im Forum .NET Windows Forms
    Antworten: 0
    Letzter Beitrag: 05.05.06, 10:20
  4. Zeilenumbruch
    Von StonE12 im Forum PHP
    Antworten: 2
    Letzter Beitrag: 25.01.05, 15:43
  5. Zeilenumbruch <br>
    Von DeeJay-Luke im Forum PHP
    Antworten: 20
    Letzter Beitrag: 09.02.04, 14:27

Stichworte