asp.net 正由另一个进程,因此该进程无法访问此文件
private void DaochuEXCEl(DataTable dt)
{
// 根据模板文件创建副本
string filePath = Server.MapPath("~/excel/Fuben.xls");
File.Copy(Server.MapPath("~/excel/demo.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 row in dt.Rows)
{
// 增加记录
OleDbCommand cmd = new OleDbCommand("INSERT INTO [Sheet1$]([serial], [quyu], [name],[addr],[faren],[企业负责人],[质量负责人],[经营方式],[经营范围],[仓库地址],[许可证号],[发证机关],[许可证发证日期],[许可证有效日期],[药品养护人数],[药品验收人数],[质量管理人数],[药品保管人数],[岗位总人数],[在职情况]) VALUES(@serial,@quyu,@name,@addr,@faren,@企业负责人,@质量负责人,@经营方式,@经营范围,@仓库地址,@许可证号,@发证机关,@许可证发证日期,@许可证有效日期,@药品养护人数,@药品验收人数,@质量管理人数,@药品保管人数,@岗位总人数,@在职情况)", conn);
cmd.Parameters.AddWithValue("@serial", row["serial"].ToString());
cmd.Parameters.AddWithValue("@quyu", row["quyu"].ToString());
cmd.Parameters.AddWithValue("@name", row["name"].ToString());
cmd.Parameters.AddWithValue("@addr", row["addr"].ToString());
cmd.Parameters.AddWithValue("@faren", row["faren"].ToString());
cmd.Parameters.AddWithValue("@企业负责人", row["企业负责人"].ToString());
cmd.Parameters.AddWithValue("@质量负责人", row["质量负责人"].ToString());
cmd.Parameters.AddWithValue("@经营方式", row["经营方式"].ToString());
cmd.Parameters.AddWithValue("@经营范围", row["经营范围"].ToString());
cmd.Parameters.AddWithValue("@仓库地址", row["仓库地址"].ToString());
cmd.Parameters.AddWithValue("@许可证号", row["许可证号"].ToString());
cmd.Parameters.AddWithValue("@发证机关", row["发证机关"].ToString());
cmd.Parameters.AddWithValue("@许可证发证日期", row["许可证发证日期"].ToString());
cmd.Parameters.AddWithValue("@许可证有效日期", row["许可证有效日期"].ToString());
cmd.Parameters.AddWithValue("@药品养护人数", row["药品养护人数"].ToString());
cmd.Parameters.AddWithValue("@药品验收人数", row["药品验收人数"].ToString());
cmd.Parameters.AddWithValue("@质量管理人数", row["质量管理人数"].ToString());
cmd.Parameters.AddWithValue("@药品保管人数", row["药品保管人数"].ToString());
cmd.Parameters.AddWithValue("@岗位总人数", row["岗位总人数"].ToString());
cmd.Parameters.AddWithValue("@在职情况", row["在职情况"].ToString());
cmd.ExecuteNonQuery();
}
}
// 输出副本的二进制字节流
Response.ContentType = "application/ms-excel";
Response.AppendHeader("Content-Disposition", "attachment;filename=info.xls");
conn.Close();
conn.Dispose();
Response.BinaryWrite(File.ReadAllBytes(filePath));
// 删除副本
File.Delete(filePath);
} private void DaochuEXCEl(DataTable dt)
{
// 根据模板文件创建副本
string filePath = Server.MapPath("~/excel/Fuben.xls");
File.Copy(Server.MapPath("~/excel/demo.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 row in dt.Rows)
{
// 增加记录
OleDbCommand cmd = new OleDbCommand("INSERT INTO [Sheet1$]([serial], [quyu], [name],[addr],[faren],[企业负责人],[质量负责人],[经营方式],[经营范围],[仓库地址],[许可证号],[发证机关],[许可证发证日期],[许可证有效日期],[药品养护人数],[药品验收人数],[质量管理人数],[药品保管人数],[岗位总人数],[在职情况]) VALUES(@serial,@quyu,@name,@addr,@faren,@企业负责人,@质量负责人,@经营方式,@经营范围,@仓库地址,@许可证号,@发证机关,@许可证发证日期,@许可证有效日期,@药品养护人数,@药品验收人数,@质量管理人数,@药品保管人数,@岗位总人数,@在职情况)", conn);
cmd.Parameters.AddWithValue("@serial", row["serial"].ToString());
cmd.Parameters.AddWithValue("@quyu", row["quyu"].ToString());
cmd.Parameters.AddWithValue("@name", row["name"].ToString());
cmd.Parameters.AddWithValue("@addr", row["addr"].ToString());
cmd.Parameters.AddWithValue("@faren", row["faren"].ToString());
cmd.Parameters.AddWithValue("@企业负责人", row["企业负责人"].ToString());
cmd.Parameters.AddWithValue("@质量负责人", row["质量负责人"].ToString());
cmd.Parameters.AddWithValue("@经营方式", row["经营方式"].ToString());
cmd.Parameters.AddWithValue("@经营范围", row["经营范围"].ToString());
cmd.Parameters.AddWithValue("@仓库地址", row["仓库地址"].ToString());
cmd.Parameters.AddWithValue("@许可证号", row["许可证号"].ToString());
cmd.Parameters.AddWithValue("@发证机关", row["发证机关"].ToString());
cmd.Parameters.AddWithValue("@许可证发证日期", row["许可证发证日期"].ToString());
cmd.Parameters.AddWithValue("@许可证有效日期", row["许可证有效日期"].ToString());
cmd.Parameters.AddWithValue("@药品养护人数", row["药品养护人数"].ToString());
cmd.Parameters.AddWithValue("@药品验收人数", row["药品验收人数"].ToString());
cmd.Parameters.AddWithValue("@质量管理人数", row["质量管理人数"].ToString());
cmd.Parameters.AddWithValue("@药品保管人数", row["药品保管人数"].ToString());
cmd.Parameters.AddWithValue("@岗位总人数", row["岗位总人数"].ToString());
cmd.Parameters.AddWithValue("@在职情况", row["在职情况"].ToString());
cmd.ExecuteNonQuery();
}
}
// 输出副本的二进制字节流
Response.ContentType = "application/ms-excel";
Response.AppendHeader("Content-Disposition", "attachment;filename=info.xls");
conn.Close();
conn.Dispose();
Response.BinaryWrite(File.ReadAllBytes(filePath));
// 删除副本
File.Delete(filePath);
}
要是datatable数据少的时候,就不报错,要是数据一多就在 Response.BinaryWrite(File.ReadAllBytes(filePath));
这个地方报错“正由另一个进程,因此该进程无法访问此文件”什么情况