实现代码:
DataSet ds = GetDataSet(pager.RecordCount + 10000, 1);
#region 导出excel
// 根据模板文件创建副本
string name = DateTime.Now.ToString("yyyyMMddhhmmss");
string webPath = string.Format("~/xlsTemplate/{0}.xls", name);
string filePath = Server.MapPath(webPath);
File.Copy(Server.MapPath("~/xlsTemplate/SysLogList.xls"), filePath);
// 使用OleDb驱动程序连接到副本
OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath + ";Extended Properties=Excel 8.0;");
using (conn)
{
conn.Open();
// 增加记录
foreach (DataRow item in ds.Tables[0].Rows)
{
OleDbCommand cmd = new OleDbCommand("INSERT INTO [Sheet1$]([编号],[日志类型],[日志类型ID],[日志描述],[用户帐号],[用户ID],[操作时间])VALUES (@log_id,@log_type_name,@log_type,@log_description,@add_user_id,@username,@add_time)", conn);
cmd.Parameters.AddWithValue("@log_id", item["log_id"].ToString());
cmd.Parameters.AddWithValue("@log_type_name", GetLogTypeName(int.Parse(item["log_type"].ToString())));
cmd.Parameters.AddWithValue("@log_type", item["log_type"].ToString());
cmd.Parameters.AddWithValue("@log_description", item["log_description"].ToString());
cmd.Parameters.AddWithValue("@add_user_id", item["add_user_id"].ToString());
cmd.Parameters.AddWithValue("@username", item["username"].ToString());
cmd.Parameters.AddWithValue("@add_time", item["add_time"].ToString());
cmd.ExecuteNonQuery();
cmd.Dispose();
}
}
// 输出副本的二进制字节流
Response.Clear();
Response.ContentType = "application/ms-excel";
Response.AppendHeader("Content-Disposition", "attachment;filename=" + name + ".xls");
Response.BinaryWrite(File.ReadAllBytes(filePath));
// 删除副本
File.Delete(filePath);
#endregion