8
votes

System.argumentException: caractères illégaux dans le chemin. Erreur

I`m Obtenir une extraction d'ArgumentException à partir du code suivant: XXX

J'ai trouvé ce code sur le débordement de la pile. Lien: C #: Copier la feuille de calcul protégée vers un autre fichier Excel Je ne sais pas exactement ce que c'est. S'il vous plaît dites-moi ce que c'est. Ce code que je bâtis dans un exe.

Enfin, j'ai besoin de copier une feuille de calcul dans un autre fichier.

Qu'est-ce que je vais? Je déploiement cela dans le serveur.


10 commentaires

C # Spécifications littéraux strings . Au fait, pourquoi initiez-vous le filepath à deux fois?


Vous attribuez une chaîne littérale à FilePath , puis écrasez-la avec le résultat de path.combine . Où obtenez-vous Strpath ?


En outre, où sur le débordement de la pile avez-vous obtenu ce code? Pourriez-vous aimer la question / la réponse? Cela pourrait nous aider à comprendre un peu mieux le contexte.


Désolé pour une grosse erreur. Édité mon poteau à nouveau. Veuillez vérifier s'il vous plait.


@ user2144293 En outre, essayez d'éviter la copie libre de votre code. Si vous faites une erreur de faire cela, vous aurez des commentaires incorrects. Essayez d'utiliser la copie / la pâte


@Samiam: Merci pour la réponse. "Startpath" Wil sera le chemin de l'exe comme vous l'avez dit, et "StrPath" que je passe aura un chemin comme "C: \ Nouveau dossier \ AA \ bb \ cc \ Somename.exe". Est-ce faux?


@ user2144293 Que voulez-vous FilePath être?


@Samiam: Je pensais que c'est une façon de recevoir un nouveau fichier Excel. wat vous suggérez-vous pour cela? Feuille de calcul de copie globale au nouveau fichier. Je veux ce " Stackoverflow.com / Questions / 15293451 / ... "


@ user2144293 Je ne suis pas un expert sur les fichiers Excel, mais je sais que tout system.io.path.combine (); fait vraiment, est une manipulation de chaîne. Je présume que c'est un chemin où vous voulez que le fichier Excel soit créé à. Où est-ce?


@Samiam: j'ai ce que je voulais. Il est juste nécessaire d'être "Strpath". Le repos n'est pas nécessaire pour moi.


4 Réponses :


10
votes

Qu'est-ce que ce code semble faire, est-ce que votre répertoire de travail (partout où le EXE associé à votre code est), et le combine avec "C: \\ Somename.xls" (qui n'a pas de sens.)

Je pense que vous avez peut-être voulu avoir voulu quelque chose comme xxx

suppose donc que vous exécutez votre application de xxx

ce que ce code ferait est défini filepath sur xxx


la première chose J'ai vu était xxx

\ est un caractère spécial, pour déterminer d'autres caractères. Par exemple '\ n' est une nouvelle ligne. '\\' est la barre oblique backslash.

Donc, vous voulez échapper à votre \ avec un autre \ xxx

ou en créer une chaîne littérale en mettant un @ devant celui-ci. xxx



0 commentaires

3
votes

Votre code doit être:

string filePath = "C:\\somename.xls"


0 commentaires

0
votes

deux problèmes avec le code,

premier xxx

\ est un caractère spécial, pour déterminer autres personnages. Par exemple '\ n' est une nouvelle ligne. '\\' est la barre oblique backslash.

seconde

FilePath contient un chemin racine , c: \\ . chemin.combine retournera simplement filepath alors, il ne peut pas être combiné.


0 commentaires

0
votes

Votre problème principal est dans StartPath code> paramètre.

System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName


0 commentaires