Warum wird die Formatvorlage für die Zelle index Rückgabe falscher CellFormat-Wert beim Parsen von excel-Zellen, die mit OpenXml SDK?
Betrachten ein Allgemeines format Zelle mit einem Wert von 39.95. Wenn ich Holen die CellFormat der Zelle es gibt falsche Zelle-format-
CellFormat thisCellFormat = ((CellFormat)cellFmts.ChildElements[(int)thisCell.StyleIndex.Value]);
int fmtId = Convert.ToInt32(thisCellFormat.FormatId.Value);
Den Wert fmtId zurückgegeben wird 1, und in einigen Fällen 38, wo er sein sollte 2 oder 39.
Diese Frage ist nur für Allgemeine Zellen formatieren, erhalte ich die korrekte id für die Anzahl Zellen formatieren.
Unten ist die Standard ECMA-376 Office Open XML-Dateiformate angegebenen Satz der impliziten Zelle Formate für Referenz-
ID Format-Code
0 Allgemeines
1 0
2 0.00
3 #,##0
4 #,##0.00
9 0%
10 0.00%
11 0.00 E+00
12 # ?/?
13 # ??/??
14 mm-dd-yy
15 d-mmm-yy
16 d-mmm
17 mmm-yy
18 h:mm AM/PM
19 h:mm:ss AM/PM
20 h:mm
21 h:mm:ss
22 m/d/yy h:mm
37 #,##0 ;(#,##0)
38 #,##0 ;Rot
39 #,##0.00;(#,##0.00)
40 #,##0.00;Rot
45 mm:ss
46 [h]:mm:ss
47 mmss.0
48 ##0.0 E+0
49 @
Antwort auf die Frage kommt, wie Tabellenkalkulations-Stile werden angewendet, um Zellen
Die Tabelle wird erstellt mit Excel, nicht OpenXML SDK. Und ich habe versucht, mit sehr einfachen Tabellenkalkulation mit nur einer Zelle, der das Allgemeine format mit einer decimal-Wert. Gibt noch die falsche FormatID
Was ist der Wert von
thisCellFormat.ApplyNumberFormat
?InformationsquelleAutor Thunderstruck | 2015-01-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den Formaten, die Sie reden, sind definiert als Stile und wenn Zelle angelegt Stil index gesetzt wird entsprechend mit style-index. Die
number format
eingebettet sind diese Stile durch die BezugnahmeNumberFormatId
Ex : Machen CellFormats im Open XML -, Hinweis-Unterschied
Nun
cellformat1
können verwendet werden für die Allgemeine Zellen-undcellformat2
kann verwendet werden, für die erzwungene string Zellen.So, wenn Sie versuchen, zu extrahieren format-code in eine Allgemeine Zelle, möglicherweise null zurückgeben, da
NumberFormatId
ist nicht gesetzt oder 0 wenn Zahlenformat eingestellt ist Typ.Dies erklärt, warum Sie die richtige id-Nummer formatierte Zellen, aber nicht für den Allgemeinen Zellen.
null oder 0 ist die NumberFormatID, dass er zu erwähnen, dass nicht die Zelle FormatID
Das Allgemeine format-Typ sind nicht spezifisch. Sie sind wie Standard. Ändern Sie die Zelle format mit der rechten Maustaste auf eine beliebige Zelle in excel .
InformationsquelleAutor Kavindu Dodanduwa