2009-06-30 8 views
0

Je dois créer un classeur Excel plus ou moins complexe contenant plus de 30 feuilles de calcul, chacune utilisant les informations de plusieurs tables de base de données pour dessiner dynamiquement plusieurs tableaux par feuille, avec formage. J'ai utilisé C# dans le passé, bien que je ne suis pas familier avec son utilisation dans Excel. Toute recommandation concernant la mise en forme dynamique et la mise en forme de cellules à partir d'une base de données serait d'une grande aide.Produire des feuilles de calcul Excel plus complexes à l'aide de C#

Merci d'avance.

Répondre

2

Visual Studio Tools pour Office (VSTO) est votre ami :) Je l'utilise tout le temps pour créer des feuilles de calcul complexes. C'est beaucoup mieux que d'importer à partir de CSV ou d'utiliser une connectivité DB farfelue.

Voici quelques liens

Ceci est très facile à faire, mais il y a quelques bizarreries. Je trouve très efficace d'utiliser l'enregistreur Excell MACRO pour enregistrer des actions, puis regarder la source et ré-implanter en C#. Le modèle d'objet est exactement le même entre VB et C#. VSTO fait partie de Visual Studio 2008. J'ai regardé sur la page du produit, mais je ne peux pas déterminer si elle est livrée avec VS2008 C# Express Edition. Le plus facile à faire est simplement de le télécharger et de voir :)

+0

Merci pour votre réponse! J'utilise Visual Studio 2005 prof mais impossible de trouver/télécharger VSTO 2005. La suggestion que vous avez faite sera-t-elle toujours utile? Très désolé de ne pas être plus précis dans ma question. –

+0

Y a-t-il un éditeur visuel pour cela ou, est-ce que les plages de codage dur sont le seul moyen de positionner des cellules et des plages Excel. –

0

Votre question semble que vous comprenez déjà la technologie impliquée, donc cette réponse est limitée à la mise en page & mise en page.

J'ai fait quelque chose de très similaire il y a 10 ans. Cela fait un moment, mais voici ce que j'ai compris.

  1. Mettre tout calculé & informations sommaires sur le dessus. (y compris les totaux de la «ligne du bas»)
  2. Diagrammes de base sur les cellules totalisées au sommet des feuilles, car elles ne bougent pas.
  3. Mettez tous les diagrammes, résumés, etc sur leur propre feuille.
  4. Si des calculs sont nécessaires, rendez chaque étape du processus disponible afin que l'utilisateur puisse les parcourir. Cela vous évitera de passer d'innombrables heures à prouver que votre code est calculé selon les spécifications, si vous ne le faites pas, vos calculs de «boîte noire» seront constamment remis en question.
  5. Si elles ne veulent pas voir les données brutes, seulement les calculs, pensez à les pousser vers une feuille cachée.
  6. Stockez un classeur de modèle avec votre application, puis copiez-le simplement pour pouvoir faire tout le formatage en XL et non en code.

Une chose que vous voulez vraiment éviter est de garder une trace des différents emplacements de cellules. Vous voulez pousser des valeurs dans des cellules qui sont toujours au même endroit.

+0

Merci encore pour votre réponse, le principal domaine que j'ai diffuculty est le positionnement des plages, par exemple si j'ai une table qui peut être de 5 à 500 lignes de profondeur, quelle est la meilleure façon d'incrémenter à travers chaque ligne et spécifier la position de départ de la table qui commencerait en dessous? –

+0

"Quelle est la meilleure façon d'incrémenter chaque ligne et de spécifier la position de départ de la table qui commencerait en dessous" - Vous n'avez peut-être pas encore vu ma dernière édition, mais ce que je veux faire c'est NE PAS faire. Les conseils dans ma réponse devraient vous aider à éviter cela. –

+0

Merci encore pour votre réponse, j'apprécie cela. Pourriez-vous fournir un lien vers des sites concernant l'utilisation d'un modèle et d'un code Excel? –

0

Je trouve une fonctionnalité très efficace et souvent sous-utilisée dans Excel est la requête Web.

Si vous pouvez présenter vos données dans un site Web, vous pouvez préconstruire votre classeur Excel avec des requêtes Web configurées pour collecter les données du site Web à la demande, présentées sous forme de tableaux dans les pages Web appropriées.

Vous pouvez ajouter des paramètres de chaîne de requête pour transmettre des arguments à la page Web. Vous pouvez définir l'actualisation automatique, la préservation du formatage, etc. Les tableaux croisés dynamiques peuvent faire référence aux données. lignes de VBA, par exemple.

Il s'agit souvent d'une solution beaucoup plus simple que VSTO si elle peut répondre aux exigences. Une autre option consisterait à utiliser un ensemble de génération de fichier Excel tiers.

+0

Malheureusement, je suis obligé d'utiliser uniquement Excel dans ce projet, mais je suis sûr que quelqu'un d'autre trouvera cette information utile. Ce que je veux savoir, c'est, y a-t-il une manière établie de construire et positionner des tables serveral, chacune de qui pourrait être de différentes tailles et formating en utilisant C# si VSTO ou un site Web ne sont pas utilisables? –

+0

Pourquoi VSTO n'est-il pas utilisable? –

Questions connexes