2009-04-01 13 views
0

Un projet sur lequel je travaille requiert des valeurs d'une application C# pour mettre à jour 6 valeurs dans une feuille Excel. Cette feuille Excel remplit ensuite une plage nommée d'articles et de prix, pilotée par un certain nombre de formules VLOOKUP et de feuilles de calcul dans le même fichier Excel.Données ne renvoyant pas les valeurs d'Excel (valeurs des formules)

Les deux colonnes de la plage sont nommées 'Article' & 'Prix'. 'Item' est une colonne d'éléments concaténés de formules sur une feuille de calcul, et ceux-ci apparaissent bien dans le DataTable. Toutefois, aucune des valeurs de la colonne "Prix" (toutes les valeurs numériques des formules VLOOKUP) n'apparaissent dans le DataTable. Lors du chargement du DataTable en C#, je peux voir que les types de chaînes et les doubles des deux colonnes sont bien. Si je remplace une des valeurs dérivées de formule par une valeur codée en dur le DataTable est correct, donc je suppose que le DataTable lui-même fonctionne comme prévu.

Si j'ouvre le fichier Excel après que les valeurs y soient passées, je peux voir que les valeurs d'entrée sont allées bien et les formules ont calculé correctement. Donc, la seule chose que je peux penser est à l'origine du problème, c'est que les formules ne sont pas recalculées après que les valeurs y soient passées.

Existe-t-il un moyen d'ouvrir un fichier Excel en C# et de l'amener à recalculer toutes les formules?

+0

Quel pilote utilisez-vous pour ouvrir la feuille Excel? OLEDB ou ODBC? – jdecuyper

+0

Désolé, OLEDB pour la requête de mise à jour (en ajoutant les valeurs à la feuille) et pour la requête de sélection qui remplit le DataTable – lazygamer

Répondre

1

Qu'à cela ne tienne,

Remplacée la mise à jour OLEDB avec un Excel Interop, ouvrir le fichier Excel avec l'Interop permet aux formules recalculent.

Questions connexes