--引用命名空间
using System.Configuration;
using System.Data.OleDb;
using System.Data.SqlClient;
/// <summary>
/// 导出正式Excel文件,用于导入盘点数据
/// </summary>
/// <param name="ds2"></param>
private void ToExcel(DataSet ds)
{
if (ds.Tables[0].Rows.Count > 0)
{
DataTable dt = ds.Tables[0];
string filename = "KCPD_" + Session["UserName"].ToString() + "_" + DateTime.Now.ToString("yyyyMMddhhmmss") + ".xls";
//临时存放路径
string filePath = Server.MapPath("~/upload/" + filename);
//Excel模版
string masterPath = Server.MapPath("~/upload/Master/PDCK.xls");
//复制Excel模版
File.Copy(masterPath, filePath);
#region 将文件的只读勾取消 以免发生不必要的错误
// 先把文件的属性读取出来
FileAttributes attrs = File.GetAttributes(filePath);
// 下面表达式中的 1 是 FileAttributes.ReadOnly 的值
// 此表达式是把 ReadOnly 所在的位改成 0,
attrs = (FileAttributes)((int)attrs & ~(1));
File.SetAttributes(filePath, attrs);
#endregion
// 使用OleDb驱动程序连接到副本
OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath + ";Extended Properties='Excel 8.0;'");
using (conn)
{
conn.Open();
// 增加记录
for (int i = 0; i < dt.Rows.Count; i++)
{
OleDbCommand cmd = new OleDbCommand(@"INSERT INTO [Sheet1$]
(
[配件ID],[识别码],[配件名称],[配件规格],[配件代码],[版本],
[上月库存],[采购入库],[良品入库],[维修返回],[维修入库],
[调整库存],[调拨入库],[销售出库],[免费出库],
[调拨出库],[维修出库],[其它出库],[现有库存],[盘点库存]
)
values('" + dt.Rows[i]["配件ID"] + "', '" + dt.Rows[i]["识别码"] + "','" + dt.Rows[i]["配件名称"] + "', '" + dt.Rows[i]["配件规格"] + "','" + dt.Rows[i]["配件代码"] + "', '" + dt.Rows[i]["版本"] + "', '" + dt.Rows[i]["上月库存"] + "','" + dt.Rows[i]["采购入库"] + "', '" + dt.Rows[i]["良品入库"] + "', '" + dt.Rows[i]["维修返回"] + "','" + dt.Rows[i]["维修入库"] + "', '" + dt.Rows[i]["调整库存"] + "', '" + dt.Rows[i]["调拨入库"] + "', '" + dt.Rows[i]["销售出库"] + "', '" + dt.Rows[i]["免费出库"] + "', '" + dt.Rows[i]["调拨出库"] + "', '" + dt.Rows[i]["维修出库"] + "', '" + dt.Rows[i]["其它出库"] + "', '" + dt.Rows[i]["现有库存"] + "', '" + dt.Rows[i]["盘点库存"] + "')", conn);
cmd.ExecuteNonQuery();
}
conn.Close();
}
// 输出副本的二进制字节流
HttpContext.Current.Response.Charset = "UTF-8"; // 或UTF-7 以防乱码
HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.UTF8;
Response.ContentType = "application/ms-excel";
Response.AppendHeader("Content-Disposition", "attachment;filename=" + System.Web.HttpUtility.UrlEncode(System.Text.Encoding.GetEncoding(65001).GetBytes(filename)));
Response.BinaryWrite(File.ReadAllBytes(filePath));
//删除副本
File.Delete(filePath);
}
}