2012-12-25 7 views
2

J'ai un fichier Excel .csv qui a des données dans les formats ci-dessous dans les cellules:écrire le fichier .csv données (Type de fichier Excel) vers un fichier .csv (Excel Type de fichier) dans C#

NAME Address Contact 
Shoeb Lko 675567 
Rajesh Banaras 7687678 

.csv fichier n'est pas un fichier texte ayant uniquement l'extension .csv. C'est un fichier csv qui est fait en utilisant le fichier Microsoft Excel ... Pour tester, vous pouvez également faire un fichier .csv ... Pour cela (1) créer un fichier Excel (2) ouvrir ce fichier Excel (3) aller dans le menu Fichier et cliquez sur "enregistrer sous" (4) sélectionnez l'option CSV (Comma Seperated) dans Enregistrer sous: ---- Maintenant, il s'agit de fichier .csv à partir duquel je vais lire le contenu et écrire le contenu également dans un fichier .csv

J'essaie d'utiliser C# pour écrire un autre fichier Excel .csv dans le même format.

code que j'utilise est écrit ci-dessous:

//Below line is reading file from system drive 
    StreamReader rd = new StreamReader("D:\FilesUploadedToTablet\drivers.csv", true); 
//Below line is writing data to file existing in our site folder 
    StreamWriter wr = new StreamWriter(Server.MapPath(".") + "\filename\CSVFile.csv"); 
    wr.Write(rd.ReadToEnd()); 
    rd.Close(); 
    wr.Close(); 

Ici StreamReader est la lecture du fichier drivers.csv mais StreamWriter n'écrit pas que le contenu du fichier CSVFile.csv. Si j'utilise un fichier texte à la place du fichier .csv, le contenu écrit avec succès. Qu'est-ce que je fais mal?

+0

Je pense que la problème n'est pas spécifiquement lié à CSV. Quelque chose comme écrire des permissions ou des verrous de fichiers peut être l'objet. Quelle est la sortie de 'Server.MapPath (". ")'? – mmdemirbas

+0

"mais quelque chose ne va pas" n'est pas du tout utile. Qu'est-ce qui a mal tourné? Quel était le message d'erreur que vous avez reçu? – PhoenixReborn

+0

En fait StreamWriter écrit très bien le contenu fourni par StreamReader dans le fichier .txt (fichier de destination dans lequel j'écrirai) mais je veux utiliser le fichier .csv comme fichier de destination (fichier de destination dans lequel j'écrirai) alors ça ne marche pas aussi, il ne produit aucune erreur. Code donné est ok si j'utilise le fichier .txt comme un fichier de destination dans lequel je dois écrire à la place du fichier .csv. Le chemin du fichier est également correct. – Shoeb

Répondre

2

Vous pouvez essayer d'utiliser BinaryReader() au lieu de StreamReader(). Essayez également d'ouvrir le StreamReader comme suit:

StreamReader("D:\FilesUploadedToTablet\drivers.csv", false); 

Il semble que vous copiez uniquement le fichier, pas filtrer ou d'effectuer tout traitement sur elle. Pourquoi ne pas utiliser File.Copy:

File.Copy("D:\FilesUploadedToTablet\drivers.csv", Server.MapPath(".") + "\filename\CSVFile.csv"); 
+0

Le fichier .csv n'est pas un fichier texte ayant uniquement l'extension .csv et son contenu séparé par une virgule. C'est un fichier csv qui est fait en utilisant le fichier Microsoft Excel. Les cellules contiennent des données. Pour tester, vous pouvez également faire un fichier .csv ... Pour cela (1) créer un fichier Excel (2) ouvrir ce fichier Excel (3) aller dans le menu fichier et cliquez sur "Enregistrer sous" (4) sélectionnez CSV (Comma Seperated) dans Save as type: ---- Maintenant c'est un fichier .csv à partir duquel je vais lire du contenu et écrire du contenu aussi dans un fichier .csv. – Shoeb

+0

Lorsque StreamReader lit les données du fichier .csv, il ajoute automatiquement une virgule (,) après chaque contenu de cellule d'une ligne et ajoute \ r \ n après chaque ligne. ci-dessus donnée donnée en question est retournée par StreamReader comme "nom, adresse, contact \ r \ nShoeb, Lko, 675567r \ nRajesh, Banaras, 7687678" StreamWriter est incapable de comprendre que la virgule indique la cellule suivante et \ r \ n indique la nouvelle ligne Fichier .csv. Donc, il n'écrit pas dans le fichier .csv il écrit seulement dans le fichier .txt – Shoeb

+0

Pouvez-vous couper-copier-coller les premières lignes de "D: \ FilesUploadedToTablet \ drivers.csv" ici? – Grynn

0

Thanx tous pour me suggérer ...
Je l'ai est la solution - Solution que je suis arrivé est écrit ci-dessous:

string csvContent = string.Empty; 
if (File.Exists("SourceFilePath")) 
{ 
    StreamReader rd = new StreamReader("SourceFilePath", true); 
    csvContent = rd.ReadToEnd(); 
    rd.Close(); 
    var DestPath = HttpContext.Current.Server.MapPath("~/CSV Files/")+"MyFile.csv";  
    StreamWriter wr = new StreamWriter(DestPath, true); 
    StringBuilder sb = new StringBuilder(csvContent); 
    wr.WriteLine(sb.ToString()); 
    sb.Clear(); 
    wr.Close(); 
Questions connexes