Comment insérer une date dans une feuille de calcul Open XML?
Je suis en utilisant Microsoft Open XML SDK 2 et je vais avoir bien du mal à l'insertion d'une date dans une cellule. Je peux insérer les numéros sans problème par la mise en Cell.DataType = CellValues.Number
mais quand je fais la même chose avec une date (Cell.DataType = CellValues.Date
) Excel 2010 se bloque (2007).
J'ai essayé le réglage de la Cell.Text
de la valeur à de nombreux formats de date ainsi que Excel de la date/format numérique en vain. J'ai aussi essayé d'utiliser les styles, en supprimant l'attribut type, ainsi que de nombreux autres pizzas, j'ai jeté sur le mur...
Quelqu'un peut-il m'indiquer un exemple, l'insertion d'une date à une feuille de calcul?
source d'informationauteur Manuel
Vous devez vous connecter pour publier un commentaire.
Vous devez les convertir en
DateTime
àdouble
à l'aide de la fonctionToOADate
c'est à dire:ensuite définie comme
CellValue
N'oubliez pas de format de cellule à l'aide de
DateTime
mise en forme, sinon, vous verrezdouble
valeur, et non pas la date.J'ai utilisé le code fourni par Andrew J, mais le
DataType
CellValues.Date
produit endommagé xlsx fichier pour moi.La
DataType
CellValues.Number
a bien fonctionné pour moi (N'oubliez pas de mettreNumberFormatId
):Tout mon code:
Mon CellFormat de cette cellule dans la feuille de style ressemble:
Si vous souhaitez formater votre date d'une autre façon, voici une liste de tous par défaut d'Excel
NumberFormatId
'sSource de la liste: http://closedxml.codeplex.com/wikipage?title=NumberFormatId%20Lookup%20Table
Je sais que cette liste est à partir de ClosedXML, mais c'est la même chose dans OpenXML.
Lors de la création de nouveaux
SpreadsheetDocument
à partir de zéro, pourDate
mise en forme au travail, un minimum deStylesheet
doit être créé.Critiques sont ces quelques lignes:
Plein
Stylesheet
classe:Après
Stylesheet
est ajouté,DateTime
peut être mis en forme:Noter que
StyleIndex
valeur dépend de l'ordre deCellFormat
éléments dans leCellFormats
tableau ou leStylesheet
objet. Dans cet exempleNumberFormatId = 14
article sur le 2ème élément du tableau.Il y a 2 façons de stocker des dates dans OpenXml; par l'écriture d'un nombre (à l'aide de
ToOADate
) et le réglage de laDataType
àNumber
ou par l'écriture d'un ISO 8601 format date et réglage de laDataType
àDate
. Notez que par défaut,DataType
estNumber
donc, si vous allez avec la première option, vous n'avez pas à définir laDataType
.Quelle que soit la méthode que vous choisissez, vous aurez besoin de définir le style qu'Excel affiche à la fois les méthodes de la même manière. Le code suivant montre un exemple de l'écriture d'une date à l'aide de la
Number
format (avec et sans définition explicite de laDataType
) et en utilisant le format ISO 8601.Utilisation Partagée De La Chaîne:
Puis plus tard dans le code:
La suite travaillé pour nous:
Définir le Type de données à CellValues.Numéro, puis assurez-vous de formater la cellule avec le style de l'indice de la CellFormats. Dans notre cas, nous construisons une feuille de style dans la feuille de calcul, et StyleDate est un index dans la CellFormats dans la feuille de style.