C#在下一列特殊字符中写入数据

时间:2014-06-11 05:37:04

标签: c# asp.net .net excel c#-4.0

我正在从sql表中编写数据并导出到excel文件,但问题是,数据只出现在所有数据之间带有\符号的一个单元格中。我应该使用哪个特殊字符移动到下一栏

SqlDataReader dr = cmd.ExecuteReader();
using (System.IO.StreamWriter fs1 = new System.IO.StreamWriter(Filename))
{
     // Loop through the fields and add headers
     for (int i = 0; i < dr.FieldCount; i++)
     {
         string name = dr.GetName(i);
         if (name.Contains(","))
            name = "\"" + name + "\"";

         fs1.Write(name + "\\");

     }
     fs1.WriteLine();

     // Loop through the rows and output the data
     while (dr.Read())
     {
          for (int i = 0; i < dr.FieldCount; i++)
          {
               string value = dr[i].ToString();
               if (value.Contains(","))
                    value = "\"" + value + "\"";

               fs1.Write(value + "\\");                            
          }
          fs1.WriteLine();
     }
     fs1.Close();
}

输出 A B C D 在一列中..我希望b c d在彼此的列旁边

5 个答案:

答案 0 :(得分:0)

例如,您的文本文件包含以下数据:

a\b\c\d
1\2\3\4

您可以在Excel中读取此文件并指定分隔符号:

转到Microsoft Excel(我使用的是2010版)。 文件&gt;打开&gt;选择过滤Text Files 选择文件。

您将看到以下对话框:

enter image description here

enter image description here

继续并选择列的类型并完成文本导入向导。

输出将按要求进行。

使用代码

使用\\

更改反斜杠分隔符,
 fs1.Write(name + ",");

使用.csv扩展名保存文件。

答案 1 :(得分:0)

当您打开由“\”分隔的文件时,Excel不会自动拆分。如果您希望将它们识别为单独的列,则需要csv或txt文档(分别以逗号分隔和制表符分隔。

使用以下命令导出到.csv文件:

fs1.Write(value + ",");

或带

的.txt文件
fs1.Write(value + "\t");

不确定您是否关心,但现在您已经写了它的方式,您将在输出文件的每一行的末尾有一个分隔符。

答案 2 :(得分:0)

我相信您可以使用不同方式的数据表直接将数据写入excel文件 校验 http://www.dotnetgallery.com/lab/resource44-Export-to-excel-from-DataTable-using-CNET.aspx

答案 3 :(得分:0)

这可能不是您原来的问题,但我相信这就是您所需要的。

您知道可以将结果输出为Excel。

using (OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\yourExcel.xls;Extended Properties='Excel 8.0;HDR=Yes'"))
{
    conn.Open();
    OleDbCommand cmd = new OleDbCommand("CREATE TABLE [Sheet1] ([Column1] string,
                 [Column2] string, [Column3] string, [Column4] string)",
                 conn);
    cmd.ExecuteNonQuery();
    cmd = new OleDbCommand("Insert Into [Sheet1] Values ('a','b','c','d')", conn);
    cmd.ExecuteNonQuery();
}

答案 4 :(得分:0)

不确定是什么问题。

以下代码适用于我:

var input = @"a\b\c\d";
var list = new List<string>();

foreach (var piece in input.Split('\\'))
{
    list.Add(piece);
}

// list holds 4 strings: "a", "b","c","d"

或者您可以通过以下方式简单地将违规行为(\替换为违规行为|):

var changed = input.Replace('\\','|');
// changed holds :"a|b|c|d"

然后迭代它。