2012-12-25 64 views
2

我有一個Excel文件.csv已在以下格式在細胞中的一些數據:寫入.csv文件(Excel類型文件)的數據在C#.csv文件(Excel類型文件)

NAME Address Contact 
Shoeb Lko 675567 
Rajesh Banaras 7687678 

的.csv文件不是隻有.csv擴展名的文本文件。它是使用Microsoft Excel文件製作的csv文件...對於測試,您還可以製作.csv文件...爲此(1)創建excel文件(2)打開此excel文件(3)轉到文件菜單並點擊「另存爲」(4)在保存類型中選擇CSV(逗號分隔)選項:----現在這是.csv文件,我將從該文件中讀取內容並將內容寫入.csv文件中

我正在嘗試使用C#以相同格式編寫另一個Excel .csv文件。我使用下面寫

代碼:

//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(); 

這裏StreamReader正在讀drivers.csv文件,但StreamWriter是不是寫的內容到CSVFile.csv文件。如果我使用任何文本文件代替.csv文件,則內容將成功寫入。我究竟做錯了什麼?

+0

我覺得問題與CSV無關。諸如寫入權限或文件鎖定可能是主題。 「Server.MapPath(」。「)」的輸出是什麼? – mmdemirbas

+0

「但有些問題」根本沒有幫助。 _具體哪裏錯了?你有什麼錯誤信息? – PhoenixReborn

+0

實際上,StreamWriter將StreamReader提供的內容寫入.txt文件(我將寫入的目標文件)中,但我想將.csv文件用作目標文件(我將在其中編寫目標文件),然後它不起作用,也不會產生任何錯誤。鑑於代碼是好的,如果我使用.txt文件作爲目標文件,我必須在其中寫入代替.csv文件。文件路徑也是正確的。 – Shoeb

回答

2

您可以嘗試使用BinaryReader()而不是StreamReader()。另外嘗試打開StreamReader,如下所示:

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

看起來您只是在複製文件,而不是過濾或對其執行任何處理。爲什麼不直接使用File.Copy:

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

.csv文件不是隻有.csv擴展名的文本文件,其內容用逗號分隔。這是一個使用Microsoft Excel文件製作的csv文件,它包含數據。 (1)創建一個excel文件(2)打開這個excel文件(3)進入文件菜單並點擊「另存爲」(4)選擇CSV(逗號分隔) )選項保存爲類型:----現在,這是.csv文件,我將從該文件讀取內容並將內容寫入.csv文件。 – Shoeb

+0

當StreamReader從.csv文件讀取數據時,它會自動在行的每個單元格內容後追加逗號(,),並在每行之後附加\ r \ n。以上給出的數據由StreamReader返回爲「名稱,地址,聯繫人\ r \ nShoeb,Lko,675567r \ nRajesh,Banaras,7687678」StreamWriter無法理解逗號告訴下一個單元格,\ r \ n告訴新行在.csv文件。所以它不會寫入.csv文件,它只能寫入.txt文件 – Shoeb

+0

您可以在這裏將「D:\ FilesUploadedToTablet \ drivers.csv」的前幾行剪切複製粘貼嗎? – Grynn

0

感謝名單大家的建議我...
我得到了它的解決方案 - 解決方案,我得到了如下記載:

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();