2015-07-16 1 views
0

Tentative d'enregistrement d'une feuille de calcul Excel par programme en tant que nom de fichier unique dans une boucle.Impossible d'accéder au fichier SaveAs C# excel lors de l'enregistrement

private static DateTime csvtime = DateTime.Now; 
    private static string time = csvtime.ToString("HH:mm:ss"); 
    private static string Path = @"C:\users\User\desktop\MonetaryEntry_"+time+".csv"; 
    mySheet = (Excel.Worksheet)myBook.Worksheets[1]; 


mySheet.SaveAs(Path, Microsoft.Office.Interop.Excel.XlFileFormat.xlCSV); 

Cela échoue avec l'erreur suivante

Une exception non gérée du type 'System.Runtime.InteropServices.COMException's'est produite dans MonetaryEntryFormatting.exe

Informations complémentaires: Le fichier n'a pas pu être accédé. Essayez l'une des opérations suivantes:

• Assurez-vous que le dossier spécifié existe.

• Assurez-vous que le dossier contenant le fichier n'est pas en lecture seule.

• Assurez-vous que le nom de fichier ne contient aucun des caractères suivants: <>? []: | ou *

• Assurez-vous que le nom du fichier/chemin d'accès ne contient pas plus de 218 caractères.

mais quand je change la chaîne de chemin à

private static string path = "@C:\users\user\desktop\MonetaryEntry_.csv"; 

il se résout.

Le but est de parcourir une boucle en enregistrant chaque fois un fichier * .csv unique. Une quantité indéterminée de fichiers .csv sera générée à chaque fois.

quelques notes; Écrire sur le bureau le compte d'utilisateur dans lequel je travaille actuellement. Si nécessaire, je copie un fichier sur le bureau et je le colore sous un nom différent et je travaille à partir de là.

Je sens que je pourrais manquer quelque chose assez simple que ce genre de problème est généralement ..

+0

Vous ne pouvez pas avoir ':' dans un nom de fichier, utilisez un autre caractère dans votre chaîne de format. –

+0

Il est peu probable, si vous faites une boucle, que chaque valeur de temps soit unique à chaque cycle. –

Répondre

1
private static DateTime csvtime = DateTime.Now; 
private static string time = csvtime.ToString("HH_mm_ss"); 
private static string Path = @"C:\users\User\desktop\MonetaryEntry_"+time+".csv"; 
mySheet = (Excel.Worksheet)myBook.Worksheets[1]; 
mySheet.SaveAs(Path, Microsoft.Office.Interop.Excel.XlFileFormat.xlCSV); 

cela va changer le travail tostring. le : n'est pas un caractère autorisé dans le chemin. (regardez la troisième suggestion de l'erreur)

+0

Wow, je me sens duuuumb. Merci! – kotlx