2017-08-08 6 views
0

J'ai vu quelques questions (comme this one) demandant ici si une cellule dans Excel peut être formatée par NPOI/POI comme si formatted by Excel. Comme la plupart d'entre vous, je dois gérer des problèmes avec Currency et DateTime. Ici laissez-moi demander comment le formatage peut être réalisé comme s'il avait été formaté par Excel? (Je vais répondre à cette question moi-même pour montrer comment le faire.)NPOI: Obtenir le format monétaire comme si formaté par Excel

Réglage: Windows 10, Anglais, Région: Taiwan format Excel: XLSX (version 2007 et versions ultérieures)

(Désolé diverses modifier . de cette question comme je l'ai appuyé sur la touche « Entrée » au moment inattendu)

Répondre

2

Si vous formatez une cellule Monnaie, vous avez 4 choix: Excel Currency Format

le format interne de chaque style est comme suit:

  1. -NT $ 1,234.10
    < numFmt formatCode = "" NT $ "#, ## 0.00" numFmtId = "164" />

  2. [RED] NT 1,234.10 $
    < numFmt formatCode = "" NT $ "#, ## 0.00; [Red]" NT $ "#, ## 0.00" numFmtId = "164" />

  3. -NT 1,234.10 $
    < numFmt formatCode = "" NT $ "#, ## 0.00 _); ("NT $" #, ## 0.00) "numFmtId =" "/>

  4. [RED] 1,234.10 $ -NT
    < numFmt formatCode = "" NT $ "#, ## 0.00 _) [Rouge] (" NT $ "#, ## 0.00)" numFmtId = » "/>

Remarque: Il existe une paire de guillemets (") avant et après NT $.

(Pour obtenir le format interne de XLSX, juste dézipper Les informations de style est disponible dans < Décompressez dir > \ xl \ styles.xml Vérifiez ce answer si vous avez besoin de plus amples informations..)

(Pour votre information: Dans formatCode, le '0' représente un chiffre, le '#' représente aussi un chiffre, mais n'apparaîtra pas si le nombre n'est pas assez grand, donc tout nombre inférieur à 1000 n'aura pas la virgule à l'intérieur. Dans le format 3, '1,75' apparaît comme 'NT $ 1,75' Le dernier est un espace.)

(FYI: numFmtId, pour le cas 1 et le cas 2, le r défini par l'utilisateur. Pour le cas 3 et 4, le numéro 7 et 8 sont build-in style.)

Pour les développeurs utilisant POI/NPOI, vous pouvez savoir si vous formatez votre colonne de monnaie à l'aide Build In Format en utilisant 0x7 ou 0x8, vous pouvez obtenir le troisième ou quatrième choix. Vous ne pouvez pas obtenir le premier ou le deuxième choix.

Pour obtenir le premier choix, vous construisez sur le style 0x7 "$#,##0.00);($#,##0.00)". Vous devez ajouter le symbole monétaire et la paire de guillemets en face d'elle.

styleCurrency.DataFormat = workbook.CreateDataFormat().GetFormat("\"NT$\"#,##0.00"); 

Appliquez ce format à une cellule avec numéro. Une fois que vous ouvrez le fichier de résultat Excel, faites un clic droit pour vérifier la mise en forme, vous verrez le premier choix.

S'il vous plaît n'hésitez pas à commenter cet article.