Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.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# 数据表到Excel而不使用特殊库?_C#_.net_Excel_Export_Export To Excel - Fatal编程技术网

C# 数据表到Excel而不使用特殊库?

C# 数据表到Excel而不使用特殊库?,c#,.net,excel,export,export-to-excel,C#,.net,Excel,Export,Export To Excel,有没有简单的方法可以从数据表中创建Excel文件,而不必使用像这样的特殊库 我尝试了以下代码: using (StreamWriter sw = new StreamWriter(pathAndFilename, false)) { for (int i = 0; i < datatable.Columns.Count; i++) { colum = datatable.Columns[i]; sw.Write(colum);

有没有简单的方法可以从数据表中创建
Excel
文件,而不必使用像这样的特殊库

我尝试了以下代码:

using (StreamWriter sw = new StreamWriter(pathAndFilename, false))
{
    for (int i = 0; i < datatable.Columns.Count; i++)
    {
        colum = datatable.Columns[i];
        sw.Write(colum);

        if (i < datatable.Columns.Count - 1)
            sw.Write(",");
    }
    sw.Write(sw.NewLine);

    foreach (DataRow dr in datatable.Rows)
    {
        for (int i = 0; i < datatable.Columns.Count; i++)
        {
            colum = datatable.Columns[i];

            if (!Convert.IsDBNull(dr[i]))
                sw.Write(dr[i]);

            if (i < datatable.Columns.Count - 1)
                sw.Write(",");
        }
        sw.Write(sw.NewLine);
    }
}
使用(StreamWriter sw=newstreamwriter(路径和文件名,false))
{
对于(int i=0;i

但是,此代码会将一行的所有内容写入每行的第一个单元格。

您的代码不是生成Excel文件,而是生成CSV文件。
当您说它将所有内容写入一行时,可能是因为区域设置使用(
而不是
)作为分隔符

现在回到您的问题,要生成Excel文件,您有几个选项:

  • 使用外部库(这不是您想要的)
  • 使用Excel互操作库(与Excel一起安装,或提供一个小型的)

  • 看起来它将尝试编写一个csv文件。不是excel格式的文件。文档中没有格式,只有数据。如果没有问题,并且您的表不包含任何字符串数据,那么您的代码应该可以与
    .csv
    扩展名配合使用。如果单元格包含逗号,您可以用双引号写出此单元格:
    “一,二”