2010-11-13 80 views
4

我目前正在C#中開發一個應用程序,我需要從它從MySQL數據庫中檢索的數據中編寫一個製表符分隔的CSV文件。數據庫檢索工作正常。在c#中編寫製表符分隔的csv文件

我遇到的問題是寫入文件。在我寫的每個變量之間,我使用了\ t,我認爲將一個製表符放入csv中,因此,在Excel中打開時,每個變量都將位於其自己的單元格中。

但是由於某些原因,它並沒有這樣做,它只是將整行寫成一個長字符串。以下是我編寫的代碼示例:

while (reader.Read()) 
{ 
    int bankID = reader.GetInt16("ban_bankID"); 
    int userID = reader.GetInt16("ban_userID"); 
    string bankUsername = reader.GetString("ban_username"); 
    string accountName = reader.GetString("ban_accountName"); 
    string accountType = reader.GetString("ban_accountType"); 
    decimal overdraft = reader.GetDecimal("ban_overdraft"); 
    char defaultAccount = reader.GetChar("ban_defaultAccount"); 

    string line = bankID + "\t" + userID + "\t" + bankUsername + "\t" + accountName + "\t" 
       + accountType + "\t" + overdraft + "\t" + defaultAccount + "\n"; 

    tw.WriteLine(line); 

感謝您對此問題的幫助。

回答

6

格式是正確的,一個CSV預計文件被逗號分隔。當保存一個製表符分隔文件時,通常只使用一個txt擴展名(或一些人保存爲.tsv)等。

如果您看一下Excel中的另存爲選項,則該選項爲文本(製表符分隔).txt

如果我打開由示例代碼生成的輸出(在數據中存根),則所有內容都將按照您的預期加載到Excel 2007中。

+1

+1我在盯着這個問題思考:「輸出沒什麼問題,它必須是它的加載方式」,但完全錯過了提到CSV文件但用tab分開的問題。 – 2010-11-13 02:07:43

1

您應該使用文本導入嚮導:數據/來自文本。從那裏你可以指定你的分隔符到一個標籤。

+0

我不知道這是如何工作。正在編寫的CSV文件的目的是爲了讓用戶能夠將他們的數據從數據庫備份到csv文件。因此,我的程序逐行讀取數據庫,將數據寫入csv文件。 – Boardy 2010-11-13 01:57:31

+0

由於你的.csv文件並不是真正的「逗號」 - 分離的,你必須以某種方式告訴Excel你的分隔符實際上是一個「選項卡」。如果你這樣做,你會看到你的文件正確導入。不要用製表符分隔,而要用逗號分隔。 – 2010-11-18 01:15:37

1

問題是你的編碼。
你不顯示您的TextWriter實例,但它應該是這個樣子:

TextWriter tw = new Stream(filename, false, Encoding.ASCII); 
+0

另外,要小心CSV-into-Excel的事情,特別是使用銀行賬號,因爲如果一個數字超過15位數字,Excel將把它看作是科學記數法(指數)。 – BeemerGuy 2010-11-13 02:02:37

相關問題