public class Export2Excel
{
#region 【导出文件,使用文件流】
/// <summary>
/// 导出文件,使用文件流。该方法使用的数据源为DataTable,导出的Excel文件没有具体的样式。
/// </summary>
/// <param name="dt"></param>
public string ExportToExcel(DataTable dt, string path)
{
KillSpecialExcel();
string result = string.Empty;
try
{
// 实例化流对象,以特定的编码向流中写入字符。
StreamWriter sw = new StreamWriter(path, false, Encoding.GetEncoding("gb2312"));
StringBuilder sb = new StringBuilder();
for (int k = ; k < dt.Columns.Count; k++)
{
// 添加列名称
sb.Append(dt.Columns[k].ColumnName.ToString() + "\t");
}
sb.Append(Environment.NewLine);
// 添加行数据
for (int i = ; i < dt.Rows.Count; i++)
{
DataRow row = dt.Rows[i];
for (int j = ; j < dt.Columns.Count; j++)
{
// 根据列数追加行数据
sb.Append(row[j].ToString() + "\t");
}
sb.Append(Environment.NewLine);
}
sw.Write(sb.ToString());
sw.Flush();
sw.Close();
sw.Dispose();
// 导出成功后打开
//System.Diagnostics.Process.Start(path);
}
catch (Exception)
{
result = "请保存或关闭可能已打开的Excel文件";
}
finally
{
dt.Dispose();
}
return result;
}
/// <summary>
/// 结束进程
/// </summary>
private static void KillSpecialExcel()
{
foreach (System.Diagnostics.Process theProc in System.Diagnostics.Process.GetProcessesByName("EXCEL"))
{
if (!theProc.HasExited)
{
bool b = theProc.CloseMainWindow();
if (b == false)
{
theProc.Kill();
}
theProc.Close();
}
}
}
#endregion
}