Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.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# 从字符串[][]生成CSV文件_C#_File_Csv - Fatal编程技术网

C# 从字符串[][]生成CSV文件

C# 从字符串[][]生成CSV文件,c#,file,csv,C#,File,Csv,我有一个MVC控制器,它应该从字符串[]返回一个CSV文件。我正在尝试这个例子: public FileContentResult DownloadCSV() { string[][] output = new string[][]{ new string[]{"Col 1 Row 1", "Col 2 Row 1", "Col 3 Row 1"}, new string[]{"Col1 Row 2", "Col2 Row 2",

我有一个MVC控制器,它应该从
字符串[]
返回一个CSV文件。我正在尝试这个例子:

public FileContentResult DownloadCSV()
{
    string[][] output = new string[][]{  
            new string[]{"Col 1 Row 1", "Col 2 Row 1", "Col 3 Row 1"},  
            new string[]{"Col1 Row 2", "Col2 Row 2", "Col3 Row 2"}  
        };
    return File(output, "text/csv", "Report123.csv");
}

但我不知道如何创建文件。如何从
string[][]
创建CSV文件?

使用扩展名方法生成文件

编辑1

根据评论,执行以下操作可能更简单,也可能更快:

    /// <summary>
    /// Convert an array to a csv row, of the form "1,2,3,4.."
    /// </summary>
    /// <typeparam name="T">The array type</typeparam>
    /// <param name="list">The array</param>
    /// <returns>A comma delimited string</returns>
    public static string ToCSVRow<T>(this T[] list)
    {
        return string.Join(",", list);
    }

    /// <summary>
    /// Convert a jagged array to csv table, where each row has the form "1,2,3,.."
    /// </summary>
    /// <param name="array">The array of numbers</param>
    /// <returns>A string value</returns>
    public static string ToCSV<T>(this T[][] array)
    {
        return string.Join(Environment.NewLine, array.Select((row) => string.Join(",", row)));
    }
//
///将数组转换为csv行,格式为“1,2,3,4..”
/// 
///数组类型
///阵列
///逗号分隔的字符串
公共静态字符串ToCSVRow(此T[]列表)
{
返回字符串。Join(“,”列表);
}
/// 
///将锯齿状数组转换为csv表,其中每行的格式为“1,2,3,…”
/// 
///数列
///字符串值
公共静态字符串ToCSV(此T[][]数组)
{
返回string.Join(Environment.NewLine,array.Select((行)=>string.Join(“,”行));
}

使用扩展名方法生成文件

编辑1

根据评论,执行以下操作可能更简单,也可能更快:

    /// <summary>
    /// Convert an array to a csv row, of the form "1,2,3,4.."
    /// </summary>
    /// <typeparam name="T">The array type</typeparam>
    /// <param name="list">The array</param>
    /// <returns>A comma delimited string</returns>
    public static string ToCSVRow<T>(this T[] list)
    {
        return string.Join(",", list);
    }

    /// <summary>
    /// Convert a jagged array to csv table, where each row has the form "1,2,3,.."
    /// </summary>
    /// <param name="array">The array of numbers</param>
    /// <returns>A string value</returns>
    public static string ToCSV<T>(this T[][] array)
    {
        return string.Join(Environment.NewLine, array.Select((row) => string.Join(",", row)));
    }
//
///将数组转换为csv行,格式为“1,2,3,4..”
/// 
///数组类型
///阵列
///逗号分隔的字符串
公共静态字符串ToCSVRow(此T[]列表)
{
返回字符串。Join(“,”列表);
}
/// 
///将锯齿状数组转换为csv表,其中每行的格式为“1,2,3,…”
/// 
///数列
///字符串值
公共静态字符串ToCSV(此T[][]数组)
{
返回string.Join(Environment.NewLine,array.Select((行)=>string.Join(“,”行));
}

使用扩展名方法生成文件

编辑1

根据评论,执行以下操作可能更简单,也可能更快:

    /// <summary>
    /// Convert an array to a csv row, of the form "1,2,3,4.."
    /// </summary>
    /// <typeparam name="T">The array type</typeparam>
    /// <param name="list">The array</param>
    /// <returns>A comma delimited string</returns>
    public static string ToCSVRow<T>(this T[] list)
    {
        return string.Join(",", list);
    }

    /// <summary>
    /// Convert a jagged array to csv table, where each row has the form "1,2,3,.."
    /// </summary>
    /// <param name="array">The array of numbers</param>
    /// <returns>A string value</returns>
    public static string ToCSV<T>(this T[][] array)
    {
        return string.Join(Environment.NewLine, array.Select((row) => string.Join(",", row)));
    }
//
///将数组转换为csv行,格式为“1,2,3,4..”
/// 
///数组类型
///阵列
///逗号分隔的字符串
公共静态字符串ToCSVRow(此T[]列表)
{
返回字符串。Join(“,”列表);
}
/// 
///将锯齿状数组转换为csv表,其中每行的格式为“1,2,3,…”
/// 
///数列
///字符串值
公共静态字符串ToCSV(此T[][]数组)
{
返回string.Join(Environment.NewLine,array.Select((行)=>string.Join(“,”行));
}

使用扩展名方法生成文件

编辑1

根据评论,执行以下操作可能更简单,也可能更快:

    /// <summary>
    /// Convert an array to a csv row, of the form "1,2,3,4.."
    /// </summary>
    /// <typeparam name="T">The array type</typeparam>
    /// <param name="list">The array</param>
    /// <returns>A comma delimited string</returns>
    public static string ToCSVRow<T>(this T[] list)
    {
        return string.Join(",", list);
    }

    /// <summary>
    /// Convert a jagged array to csv table, where each row has the form "1,2,3,.."
    /// </summary>
    /// <param name="array">The array of numbers</param>
    /// <returns>A string value</returns>
    public static string ToCSV<T>(this T[][] array)
    {
        return string.Join(Environment.NewLine, array.Select((row) => string.Join(",", row)));
    }
//
///将数组转换为csv行,格式为“1,2,3,4..”
/// 
///数组类型
///阵列
///逗号分隔的字符串
公共静态字符串ToCSVRow(此T[]列表)
{
返回字符串。Join(“,”列表);
}
/// 
///将锯齿状数组转换为csv表,其中每行的格式为“1,2,3,…”
/// 
///数列
///字符串值
公共静态字符串ToCSV(此T[][]数组)
{
返回string.Join(Environment.NewLine,array.Select((行)=>string.Join(“,”行));
}

这是一个使用LINQ的示例

public FileContentResult DownloadCSV()
{
    string[][] output = new string[][]{  
        new string[]{"Col 1 Row 1", "Col 2 Row 1", "Col 3 Row 1"},  
        new string[]{"Col1 Row 2", "Col2 Row 2", "Col3 Row 2"}  
    };

    var result = lines.Select(l=>string.Join(",", l))
                      .Aggregate(new StringBuilder(), (sb, v) => sb.AppendLine(v))
                      .ToString();

    return File(result, "text/csv", "Report123.csv");
}
。。。作为一种扩展方法

public static class ToolsEx
{
    public static string ToCsvString(this string[][] lines)
    {
        var query = lines.Select(l=>string.Join(",", l));
        var result = query.Aggregate(new StringBuilder(), (sb, v) => sb.AppendLine(v));
        return result.ToString();
    }
}
。。。记住
string.Join
使用StringBuilder internal后,您可以进一步简化它(如果其他人在您之后维护它,这可能会有点太多)


下面是一个使用LINQ的示例

public FileContentResult DownloadCSV()
{
    string[][] output = new string[][]{  
        new string[]{"Col 1 Row 1", "Col 2 Row 1", "Col 3 Row 1"},  
        new string[]{"Col1 Row 2", "Col2 Row 2", "Col3 Row 2"}  
    };

    var result = lines.Select(l=>string.Join(",", l))
                      .Aggregate(new StringBuilder(), (sb, v) => sb.AppendLine(v))
                      .ToString();

    return File(result, "text/csv", "Report123.csv");
}
。。。作为一种扩展方法

public static class ToolsEx
{
    public static string ToCsvString(this string[][] lines)
    {
        var query = lines.Select(l=>string.Join(",", l));
        var result = query.Aggregate(new StringBuilder(), (sb, v) => sb.AppendLine(v));
        return result.ToString();
    }
}
。。。记住
string.Join
使用StringBuilder internal后,您可以进一步简化它(如果其他人在您之后维护它,这可能会有点太多)


下面是一个使用LINQ的示例

public FileContentResult DownloadCSV()
{
    string[][] output = new string[][]{  
        new string[]{"Col 1 Row 1", "Col 2 Row 1", "Col 3 Row 1"},  
        new string[]{"Col1 Row 2", "Col2 Row 2", "Col3 Row 2"}  
    };

    var result = lines.Select(l=>string.Join(",", l))
                      .Aggregate(new StringBuilder(), (sb, v) => sb.AppendLine(v))
                      .ToString();

    return File(result, "text/csv", "Report123.csv");
}
。。。作为一种扩展方法

public static class ToolsEx
{
    public static string ToCsvString(this string[][] lines)
    {
        var query = lines.Select(l=>string.Join(",", l));
        var result = query.Aggregate(new StringBuilder(), (sb, v) => sb.AppendLine(v));
        return result.ToString();
    }
}
。。。记住
string.Join
使用StringBuilder internal后,您可以进一步简化它(如果其他人在您之后维护它,这可能会有点太多)


下面是一个使用LINQ的示例

public FileContentResult DownloadCSV()
{
    string[][] output = new string[][]{  
        new string[]{"Col 1 Row 1", "Col 2 Row 1", "Col 3 Row 1"},  
        new string[]{"Col1 Row 2", "Col2 Row 2", "Col3 Row 2"}  
    };

    var result = lines.Select(l=>string.Join(",", l))
                      .Aggregate(new StringBuilder(), (sb, v) => sb.AppendLine(v))
                      .ToString();

    return File(result, "text/csv", "Report123.csv");
}
。。。作为一种扩展方法

public static class ToolsEx
{
    public static string ToCsvString(this string[][] lines)
    {
        var query = lines.Select(l=>string.Join(",", l));
        var result = query.Aggregate(new StringBuilder(), (sb, v) => sb.AppendLine(v));
        return result.ToString();
    }
}
。。。记住
string.Join
使用StringBuilder internal后,您可以进一步简化它(如果其他人在您之后维护它,这可能会有点太多)


你被困在哪一部分?打开/创建文件?创建逗号分隔列表?写入文件?在返回文件中,我不知道如何创建文件文件内容应该是
字节[]
,而不是
字符串[][]
。查找如何将字符串转换为字节数组。
File.writeAllines(“Report123.csv”,output.Select(inner=>string.Join(“,”,inner))需要考虑转义字符。我不建议尝试制作您自己的csv。有很多可用的免费工具,这将给你很大的灵活性和速度,以及在角落的情况下,你可能不考虑的鲁棒性。nuget提供的CSVHelper是一个很好的资源。这是一个到规格的链接。你粘在哪个零件上?打开/创建文件?创建逗号分隔列表?写入文件?在返回文件中,我不知道如何创建文件文件内容应该是
字节[]
,而不是
字符串[][]
。查找如何将字符串转换为字节数组。
File.writeAllines(“Report123.csv”,output.Select(inner=>string.Join(“,”,inner))需要考虑转义字符。我不建议尝试制作您自己的csv。有很多可用的免费工具,这将给你很大的灵活性和速度,以及在角落的情况下,你可能不考虑的鲁棒性。nuget提供的CSVHelper是一个很好的资源。这是一个到规格的链接。你粘在哪个零件上?打开/创建文件?创建逗号分隔列表?写入文件?在返回文件中,我不知道如何创建