Если вы используете "," Excel 2007 будет читать его, но не 2003. А если вы используете ";", это наоборот.
Итак, лучший способ - создать HTML-таблицу и вывести ее в формате .xls. Excel 2007 спросит, не из ли это доверенного источника.
Вот пример кода, как это сделать:
private void ExportToXLSFromDataTable(DataTable dtExport, string filename)
{
StringBuilder dataToExport = new StringBuilder();
dataToExport.Append("<table>");
dataToExport.Append("<tr>");
foreach (DataColumn dCol in dtExport.Columns)
{
dataToExport.Append("<td>");
dataToExport.Append(Server.HtmlEncode(dCol.ColumnName));
dataToExport.Append("</td>");
}
dataToExport.Append("</tr>");
foreach (DataRow dRow in dtExport.Rows)
{
dataToExport.Append("<tr>");
foreach (object obj in dRow.ItemArray)
{
dataToExport.Append("<td>");
dataToExport.Append(Server.HtmlEncode(obj.ToString()));
dataToExport.Append("</td>");
}
dataToExport.Append("</tr>");
}
dataToExport.Append("</table>");
if (!string.IsNullOrEmpty(dataToExport.ToString()))
{
Response.Clear();
HttpContext.Current.Response.ContentType = "application/ms-excel";
HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment;filename=" + filename);
HttpContext.Current.Response.Write(dataToExport.ToString());
HttpContext.Current.Response.End();
}
}