2010-12-05 5 views
7

Supposons que j'ai un champ avec une valeur de date dans un modèle Reporting Services, par ex. =CDate("2010.12.03"), j'applique le format "d" à cette cellule, qui, selon la description, "reflétera les paramètres régionaux du rapport". Je génère le rapport en utilisant la langue anglaise, la date est affichée comme 12/03/2010, ce qui est bien. Maintenant, quand j'exporte ce rapport à Excel, je n'ai aucune idée de ce que le _ arrive.Mise en forme et exportation de la date SSRS 2008 pour exceller dans la confusion

Premier scénario: les paramètres régionaux de l'ordinateur sont définis sur Anglais (États-Unis). Lorsque j'ouvre le document Excel, la valeur vue dans la cellule est 12/03/2010, comme prévu. Quand je clique dessus, je peux voir que la valeur réelle stockée dans la cellule est 2010.12.03, ce qui semble également raisonnable - un certain formatage est appliqué à la cellule, il n'est pas simplement exporté en tant que texte. Mais quand j'essaie de comprendre quel type de formatage est appliqué, en cliquant avec le bouton droit et en cochant Format Cells, je vois que le format est "General", c'est-à-dire none! Comment se peut-il ? C'est Excel 2010 en passant, mais le fichier lui-même est .xls, bien sûr.

Deuxième scénario, où cela devient plus intéressant: maintenant la région de l'ordinateur est définie par ex. Lituanie, où le format de date est 2010.12.03. J'ouvre le même document et je vois le 12.03.2010. Cela n'a tout simplement aucun sens. Exportant plusieurs fois j'ai rencontré que parfois la cellule est formatée comme [$-10409]m.d.yyyy dans Excel (sous la section Personnalisée). Qu'est-ce que c'est, que signifie le 10409? La partie la plus étrange de tous: si je ferme le document sans enregistrer, changez la région de l'ordinateur en anglais (États-Unis), rouvrez le document, le format est maintenant [$-10409]m/d/yyyy! Comment est-ce possible !?? Fondamentalement, la même chose se produit avec les nombres et avec les séparateurs de milliers/décimales - Excel utilise la région de l'ordinateur pour les formater, mais le format réel de la cellule peut être quelque chose comme [$-10409]#,##0.00;-#,##0.00 ou Général - encore, selon la région de l'ordinateur, direction du vent et de la température extérieure.

Ma question est donc, tout d'abord, ce que le _ _ se passe? Deuxièmement, comment le document Excel devrait-il se comporter selon les spécifications, c'est-à-dire que l'énoncé selon lequel un format «reflète les paramètres régionaux du rapport» dans le BIDS conçu, où j'ai choisi le format «d» ? Cela signifie-t-il que le format sera déterminé par la langue du rapport et que le résultat sera le même sur tous les ordinateurs du monde (ce qui est logique, puisque c'est ainsi que se comportent les autres formats, ex. pdf, il reste toujours le même)? Sinon, ce qui semble être partiellement le cas dans Excel, pourquoi la cellule de date exportée n'a pas le format de date régional, c'est-à-dire celui que vous utilisez normalement dans Excel, celui qui formate la date selon la région de l'ordinateur ?

S'agit-il d'une sorte de limitation d'Excel ou quoi? Pourquoi ne pouvons-nous pas avoir un comportement cohérent, c'est-à-dire soit rendre tout ce qui est sensible à la culture de l'ordinateur qui regarde le document ou non, pourquoi le comportement réel est-il quelque part entre les deux?

Répondre

2

Excel utilise un codage personnalisé pour la date et utilise les paramètres régionaux de l'appareil comme indication sur la façon de formater le contenu. L'encodage est archaïque, et a beaucoup de gotchas spécifiques et historiques. Cela signifie que les types de bogues que vous voyez se produisent souvent: vous avez des données exportées vers Excel, dont le formatage et le contenu sont ensuite tronqués une fois ouverts pour la première fois par l'application Excel. Le problème peut se situer n'importe où - peut-être que la bibliothèque qui exporte les données vers Excel ne gère pas bien certains des cas historiques les plus ésotériques, ou peut-être qu'Excel se complique en chemin.

J'ai déjà eu du succès avec l'exportation de dates sous forme de chaînes vers un fichier CSV, sans formatage, puis en les important dans Excel/en les ouvrant avec Excel.

0

Je triés ma date de mise en forme problème par:

  1. ajouter des champs calculés pour les dates:

    =IIF(IsNothing(Fields!Date_Delivery_Confirmed.Value),nothing,DateSerial(DatePart("yyyy",Fields!Date_Delivery_Confirmed.Value), DatePart("m",Fields!Date_Delivery_Confirmed.Value),DatePart("d",Fields!Date_Delivery_Confirmed.Value))) 
    
  2. ensemble Textbox cellulaire comme dateformat

  3. comment je me sers * dateformats (localisée) J'ai vérifié mon ordinateur portable de serveur et rapport sont mis à la bonne langue

  4. J'ai des éléments alignés verticalement dans le rapport afin que (les trous visuels) ne crée pas de colonnes vides supplémentaires lors de l'exportation vers Excel. Parce que 2 colonnes excel fusionnées à 1 date-cellule n'obtiendront jamais un format autre que "format général"

Questions connexes