CarlosAG ExcelXMLWriter Zeilenumbruch

S

Sedon

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.
 
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.
 
Hi deepthroat,

Hi.

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

Gruß

das ist kein Problem - das ist die Exportfunktion:

Code:
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:
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.
 

Anhänge

  • DE0005558662_20111018.rar
    6,1 KB · Aufrufe: 12
Zuletzt bearbeitet:
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... :eek:).

Gruß
 
Zuletzt bearbeitet:
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ß
 
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.
 
Zurück