2010-06-22 9 views
0

J'utilise le .Net 4.0 et Excel 2003tableur Excel requête pour le format de cellule .... (pourcentage)

Comment puis-je utiliser une connexion OLEDB pour récupérer le format de cellule d'une feuille de calcul Excel ... I Spécifiquement, vous voulez savoir si une colonne de cellule (ou la cellule elle-même) est dans un format de pourcentage numérique.

Je n'arrive pas à trouver cette information dans la méthode GetOleDbSchemaTable. EX: Mon application Web lit les chiffres d'une feuille de calcul Excel. Cela fonctionne bien; Cependant, si les nombres sont dans un format de pourcentage, excel l'affiche comme (fraction * 100) mais la valeur réelle est une fraction décimale (1/3 = .3333 ..) - Excel affiche comme 33.33% - (Notez la virgule décimale).

Par conséquent, je besoin d'un moyen de distinguer entre ce qui est un pourcentage & ce qui est de ne pas laisser mon webapp fonctionne correctement ...

Toutes les idées? Merci d'avance .....

Répondre

0

Vous pourriez être en mesure de sortir cette information avec OleDbConnection.GetSchema, mais je ne sais pas quelle information vous obtiendrez pour une feuille Excel avec cela. Documentation here.

+0

Aucune information ici .... – Guyanese4life

+0

@ Guyanese4life: Eh bien, il est assez rare, mais il vous dit que si vous appelez cette méthode, vous allez sortir un DataTable avec certaines données, ces données peuvent contenir les informations dont vous avez besoin (il serait connecté à une base de données mais je ne l'ai jamais essayé en étant connecté à Excel). –

+0

@ Guyanese4life: Voici un autre lien expliquant comment l'utiliser par rapport à Excel: http://davidhayden.com/blog/dave/archive/2006/05/31/2975.aspx –

-1

Pouvez-vous simplement lire la première ligne de données sous forme de chaîne et l'analyser en recherchant '%' dans la chaîne.

+0

-1 à en juger par la question de l'op, la valeur de la cellule n'est pas Ne pas contenir%. Le% est le formatage appliqué par Excel spécifié dans le formatage de cellule. – Graham

+0

Correct! Cela semble vrai. Les informations du schéma de table indiquent que le type de données de la colonne spécifiée est "5", ce qui correspond à un double ou un flottant (http://www.w3schools.com/ado/ado_datatypes.asp); Il ne donne pas le format de la cellule Excel (ou colonne) - qui est un pourcentage – Guyanese4life

+0

Eh bien, ça craint. Lorsque vous exportez une feuille de calcul Excel vers csv, le signe% est fourni avec. En fait ce qui est sauvé est exactement ce que vous voyez sur l'écran, même jusqu'au nombre si décimales. –

0

Recherchez la propriété NumberFormat de la cellule (plage) en question pour un signe%. De plus, si vous pouvez obtenir le type de format, alors vous cherchez un format qui commence par 'P', comme 'P1'.

EDIT: La seule façon que je peux voir est soit en utilisant XML ou Automation. Pour l'automatisation, vous devez utiliser l'assembly Interop. Espace de noms: Microsoft.Office.Interop.Excel, Interface: DisplayFormat, Propriété:NumberFormat.

+0

Il n'y a pas de propriétés de format de nombre. Gardez à l'esprit que cela est fait par une requête oledb .. Je n'ouvre pas une instance d'Excel. – Guyanese4life

+0

@Guy, je pense qu'ils sont gettable, mais vous devrez peut-être utiliser une fonction différente. J'ai également édité d'une autre manière, mais je n'ai pas non plus les détails sur la façon d'obtenir cette valeur. J'essaierai de faire des recherches quand je le pourrai, parce que je suis curieux de savoir comment faire. S'il vous plaît mettre à jour si vous trouvez la réponse. –

+0

@Guy, ok, plus d'infos. Je me rends compte que ce n'est toujours pas une réponse complète, mais j'espère que cela pourrait vous rapprocher. –

Questions connexes