remplacez les valeurs des cellules dans excel à l'aide d'excel.interop
Je veux numériser une feuille excel, et de remplacer toutes les occurrences de numéros de sécurité sociale avec des zéros... je tiens à le faire à l'aide d'Excel.Interop si cela est possible, mais je suis ouvert à n'importe quoi à ce point... voici une partie de mon code... je suis cogner ma tête sur le bureau depuis quelques mois...
//Obtenir la gamme et de le convertir à une variable de chaîne Excel.Gamme _range =(Excel.La gamme)_excelApp.get_Range("A1:K1",Type.Manquants); //convertir la valeur de nos cellules, dans notre gamme //la variable de chaîne string myString = _range.Les cellules.Valeur2.ToString(); //le match tout le SSN par exemple 1236780909, 123-33-2445 si (Regex.IsMatch(myString, @"\b\d{3}\b\d{2}\b\d{4}")); { _range.Les cellules.Valeur2 = replaceSSN; } //sauvegarde de notre classeur sous un nouveau nom et de créer une sauvegarde _excelWorkbook.SaveAs("Results.xls", De Type.Missing, Type.Missing, Type.Missing, Type.Manquants, le vrai, Excel.XlSaveAsAccessMode.xlNoChange, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Manquants); //fermer le classeur _excelWorkbook.Fermer(faux, Type.Missing, Type.Manquants); //envoyer le signal quit app _excelApp.Quit(); //rapport de la réussite MessageBox.Afficher("Fichier masqué avec succès.", "Masque De Données", MessageBoxButtons.OK); //libération de la mémoire //Système.Moment de l'exécution.InteropServices.Maréchal.ReleaseComObject(_excelApp); //modifier l'étiquette de retour à vide lblActivity.Texte = ""; }
OriginalL'auteur Woody | 2009-08-01
Vous devez vous connecter pour publier un commentaire.
Le problème est ici
Et ici
Je pense que vous êtes l'incompréhension de ce que Valeur2 est, de Sa la matrice de reprentation de la plage que vous avez défini ci-dessus.
Propriété Value2 de la Gamme de classe,retourne un tableau de valeurs. ce que vous devez faire est peut-être déclarer un tableau vide et obtenir le Valeur2 de la plage, de la boucle de chaque élément d'un tableau et d'exécuter les regex, s'il trouve une correspondance remplacer l'élément du tableau.
Vous pouvez alors régler le tableau à la Valeur2 de la Gamme, qui va mettre à jour les valeurs des cellules.
EDIT: vous trouverez un exemple de code ci-dessous
pas de problème à tout moment 🙂
Hey Ori, j'ai juste rencontré un bug. Je reçois un Impossible de convertir l'objet de type 'System.Double' de type 'System.L'objet[,]'. chaque fois qu'une seule cellule est dans la gamme. Si il n'y a plus d'une cellule qui est renseigné dans la plage, alors il fonctionne très bien... des idées?
J'ai utilisé le même code de la recherche au travers d'un ensemble de documents Excel en utilisant plus ou moins exactement le même code, simplement à la recherche pour les numéros de carte de crédit (voir celui-ci pour le même travail dans word: stackoverflow.com/questions/2235388/...) je vous Remercie pour cette réponse. Il a sauvé beaucoup de travail pour moi! +1
OriginalL'auteur almog.ori
Ici vous pouvez avoir une petite compréhension de l'extrait de code mais je ne l'ai pas essayé, donc il peut contenir des erreurs de syntaxe.
Si il est une valeur null dans une des cellules, quelque part dans le contiguious bloc qui est la UsedRange appeler ToString() va lancer
oui de toute façon Woody a besoin d'utiliser la feuille de calcul.UsedRange et vérifier son état et de prendre la décision.
absolument, ce commentaire était pour woody
oui !! C'était @ Woody 🙂
OriginalL'auteur shahjapan