Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C将数据写入下一列的特殊字符_C#_Asp.net_.net_Excel_C# 4.0 - Fatal编程技术网

C# C将数据写入下一列的特殊字符

C# C将数据写入下一列的特殊字符,c#,asp.net,.net,excel,c#-4.0,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

我正在从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,例如,您的文本文件包含以下数据:

a\b\c\d
1\2\3\4
您可以在excel中读取此文件并指定分隔符符号:

转到Microsoft Excel我正在使用2010版。 文件>打开>选择筛选文本文件 从文件中选择所需的文件

您将看到以下对话框:

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

输出将按要求进行

使用代码:

将反斜杠分隔符\\更改为


保存扩展名为.csv的文件。

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

导出到.csv文件时,可以使用:

fs1.Write(value + ",");
或者使用

fs1.Write(value + "\t");

不确定您是否在意,但按照现在的编写方式,输出文件中每行的末尾都会有一个分隔符。

我相信您可以使用datatable以不同的方式直接将数据写入excel文件 检查
这可能不是你最初的问题,但我相信这正是你需要的

您知道可以将结果输出为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();
}

不知道问题出在哪里

以下代码适用于我:

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"

然后重复这个问题。

很难理解您的问题,请发布一个文件中一行数据的示例如果它使用“作为delimeter,试试\`?不知道是什么问题,也不知道你在干什么asking@3dd它的输出在一列中。。不在相邻列中。。请查收output@Noctis\我已经在尝试写是的。。。无法使用Microsoft.excel.InterOp程序集创建excel格式的文件。
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"