Définir la valeur de la cellule à l'aide d'Excel interop
Ok, donc je suis en train de définir la valeur d'une cellule excel bibliothèque d'interopérabilité. Je suis en mesure de le faire avec les éléments suivants:
sheet.Cells[row, col] = value;
mais il est très lent pour combien j'en suis. Donc, je vais essayer d'aller dans cette voie:
Range excelRange = sheet.UsedRange;
excelRange.Cells.set_Item(row, col, value);
Le code s'exécute, mais aucune donnée n'est mis dans la cellule. Toutes les suggestions sur ce que je suis absent? Merci!
Combien de cellules parlons-nous?
Est-il une valeur "valeur"? Est la "valeur" de droit type de sorte qu'il peut être adapté dans la Cellule?
Est-il une valeur "valeur"? Est la "valeur" de droit type de sorte qu'il peut être adapté dans la Cellule?
OriginalL'auteur Arthurdent510 | 2011-01-27
Vous devez vous connecter pour publier un commentaire.
Votre première méthode devrait fonctionner pour tout être raisonnable (et beaucoup de déraisonnable) quantités de cellules, à condition que vous avez désactivé l'écran de mise à jour (
Application.ScreenUpdating = false
). Le Article De Base De Connaissances de décrire comment définir les cellules à l'aide de C# accède par ligne et par colonne.OriginalL'auteur
Avez-vous essayé de définir toutes les valeurs à la fois, plutôt que d'une itération à travers votre tableau et la définition d'une cellule à un moment? De cette façon, vous n'avez qu'à transmettre les données au cours de la COM limites d'une seule fois, plutôt qu'une fois par cellule.
Excel est très souple à cet égard. Essayez ce qui suit:
Vous devriez ce plus rapide que de parcourir chacune des cellules que vous souhaitez définir.
Autre que cela, éteignez ScreenUpdated comme Andy suggère et aussi envisager de mettre en calcul manuel jusqu'à ce que vous avez terminé votre processus de copie.
Vous pouvez également utiliser un tableau multidimensionnel pour remplir une plage.
Hmmm cela ne fonctionne pas pour moi. Je suis l'attribution
object[]
àrange.Value
et toutes les cellules obtenir la valeur de la matrice du premier élément. S'il vous plaît aider.Compris! Vous pour utiliser un tableau en 2 dimensions lors du remplissage d'une gamme composée de plus de 1 ligne. Excel Interop n' pas pause automatiquement régulière (de dimension 1) de tableau par lignes.
OriginalL'auteur
Solution Simple, mais ici, vous aurez besoin d'installer le Package Microsoft.Bureau de.Interop.Excel par l'écriture dans la console nuget
Install-Package Microsoft.Bureau de.Interop.Excel
OriginalL'auteur
S'il vous plaît essayer
OriginalL'auteur