代码之家  ›  专栏  ›  技术社区  ›  Boardy

在C中写入以制表符分隔的csv文件#

c#
  •  5
  • Boardy  · 技术社区  · 14 年前

    我目前正在C开发一个应用程序,在C中,我需要从MySQL数据库中检索的数据中编写一个以制表符分隔的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);
    

    谢谢你对这个问题的帮助。

    3 回复  |  直到 14 年前
        1
  •  6
  •   Chris Baxter    14 年前

    格式正确,csv要求文件以逗号分隔。保存以制表符分隔的文件时,通常只使用txt扩展名(或某些人另存为.tsv)等。

    如果查看Excel中的“另存为”选项,则该选项为文本(以制表符分隔)。

    如果我打开由示例代码生成的输出(数据中的存根),一切都会如您所期望的那样加载到Excel2007中。

        2
  •  1
  •   Erwin Alva    14 年前

    您应该使用文本导入向导:数据/来自文本。从那里可以指定制表符的分隔符。

        3
  •  1
  •   BeemerGuy    14 年前

    问题是您的编码。
    你不显示你的 TextWriter 实例化,但它应该是这样的:

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