à l'aide de c# pour trier une colonne dans excel
je suis en train de trier une feuille de calcul par la première colonne dans excel à l'aide de l'INTEROPÉRABILITÉ. je veux juste un simple tri de l'ensemble de la gamme par la première colonne. je suis en train de faire les suivants:
valueRange.Sort(valueRange.Columns[7, Type.Missing], Excel.XlSortOrder.xlAscending, valueRange.Columns[7, Type.Missing],
Type.Missing, Excel.XlSortOrder.xlAscending, Type.Missing, Excel.XlSortOrder.xlAscending,
Excel.XlYesNoGuess.xlNo, Type.Missing, Type.Missing, Excel.XlSortOrientation.xlSortColumns,
Excel.XlSortMethod.xlPinYin, Excel.XlSortDataOption.xlSortNormal,
Excel.XlSortDataOption.xlSortNormal, Excel.XlSortDataOption.xlSortNormal);
mais d'avoir des erreurs. je suis incapable de trouver de la bonne documentation sur la façon de faire ce tri.
quelqu'un peut-il me donner un exemple de travail d'un simple tri de la plage spécifiée par une colonne spécifique?
selon les documents que j'ai essayé de le faire:
valueRange.Sort(valueRange.Columns[7, Type.Missing],
Excel.XlSortOrder.xlAscending,
Type.Missing,
Type.Missing,
Excel.XlSortOrder.xlAscending,
Type.Missing,
Excel.XlSortOrder.xlAscending,
Excel.XlYesNoGuess.xlNo,
Type.Missing,
Type.Missing,
Excel.XlSortOrientation.xlSortColumns,
Excel.XlSortMethod.xlStroke,
Excel.XlSortDataOption.xlSortNormal,
Excel.XlSortDataOption.xlSortNormal,
Excel.XlSortDataOption.xlSortNormal);
cependant, maintenant, je suis le errorrs:
{"The sort reference is not valid. Make sure that it's within the data you want to sort, and the first Sort By box isn't the same or blank."}
vous pouvez enregistrer une macro avec la macro-enregistreur dans excel et de convertir vba, c#
Voir Ce Lien MSDN
Quelle erreur avez-vous? L'un des soucis de l'Interopérabilité, comme vous pouvez sans doute dire, c'est d'avoir à passer apparemment infini de paramètres pour les différentes fonctions; il y a beaucoup de place pour l'erreur.
vous ne savez pas comment convertir vba, c#
Qu'est-ce que votre grand-image objectif? Si vous voulez juste travailler avec les données .NET, il pourrait être plus facile à charger dans DataTable et de travailler avec elle au lieu de via Excel Interop.
Voir Ce Lien MSDN
Quelle erreur avez-vous? L'un des soucis de l'Interopérabilité, comme vous pouvez sans doute dire, c'est d'avoir à passer apparemment infini de paramètres pour les différentes fonctions; il y a beaucoup de place pour l'erreur.
vous ne savez pas comment convertir vba, c#
Qu'est-ce que votre grand-image objectif? Si vous voulez juste travailler avec les données .NET, il pourrait être plus facile à charger dans DataTable et de travailler avec elle au lieu de via Excel Interop.
OriginalL'auteur l--''''''---------'''''''''''' | 2012-04-02
Vous devez vous connecter pour publier un commentaire.
Dans l'ordre de tri d'une plage par une seule colonne dans cette gamme, vous pouvez faire quelque chose comme ce qui suit (si vous utilisez visual studio 2010 et au-dessus de la "dynamique" mot-clé):
Dans mon exemple, j'ai eu une feuille de calcul avec 10 colonnes, et j'ai voulu trier l'ensemble de la feuille de calcul par la 7e colonne, dans l'ordre décroissant.
J'ai été aidé par la réponse ci-dessus, mais quand j'ai essayé Code4Life de l'extrait:
elle triés uniquement la première colonne de la plage. L'OP a demandé pour le tri d'un ensemble de la gamme par une colonne, pas de tri d'une colonne dans une gamme. Donc après un petit essai et d'erreur, j'ai obtenu mon ci-dessus simplifiée code.
OriginalL'auteur markwriter
Essayez ceci:
Fondamentalement, ne votre
Sort
de laColumn
, et non pas la base de la gamme.Aussi, je vous recommande fortement de l'aide de Visual Studio 2010 si vous le pouvez. Le code ci-dessus obtient simplifiés dans VS 2010:
MODIFIER:
Si vous avez besoin de trier sur plusieurs colonnes, Excel vous permet de trier sur trois colonnes. Voici comment faire:
EDIT2:
Chargement des valeurs dans un tableau 2D:
Chargement de la matrice de nouveau dans la gamme:
hey vous êtes là? merci encore pour votre aide
le nombre de colonnes est là?
la dernière colonne est appelé CO, autour de 89
Si vous avez besoin d'effectuer un tri sur plus de 3 colonnes, je vous suggère de l'extraction de la feuille de calcul données dans un tableau en 2 dimensions (
var ar = (object[,]range.value2
), puis trier le tableau, et enfin enregistrer le tableau dans la feuille de calcul.OriginalL'auteur code4life