DataTable to Excel 没有专门的库?
DataTable to Excel without special library?
有没有什么简单的方法可以从 DataTable 创建 Excel
文件而不使用像 ClosedXML 这样的特殊库?
我试过以下代码:
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);
}
}
不过,此代码会将一行的所有内容写入每行的第一个单元格。
您的代码没有生成 Excel 文件,它生成的是 CSV 文件。
当您说它将所有内容写在一行时,可能是因为区域设置使用(,
而不是 ;
)作为分隔符。
现在回到您的问题,要生成 Excel 文件,您有多种选择:
- 使用外部库(这不是你想要的)
- 使用 Excel 互操作库(与 Excel 一起安装,或者可用一个小的 redistributable package)
有没有什么简单的方法可以从 DataTable 创建 Excel
文件而不使用像 ClosedXML 这样的特殊库?
我试过以下代码:
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);
}
}
不过,此代码会将一行的所有内容写入每行的第一个单元格。
您的代码没有生成 Excel 文件,它生成的是 CSV 文件。
当您说它将所有内容写在一行时,可能是因为区域设置使用(,
而不是 ;
)作为分隔符。
现在回到您的问题,要生成 Excel 文件,您有多种选择:
- 使用外部库(这不是你想要的)
- 使用 Excel 互操作库(与 Excel 一起安装,或者可用一个小的 redistributable package)