#region Excel导出 protected void lkBtnExcel_Click(object sender, EventArgs e) { DataSet ds = bll.GetAllList(); if (ds.Tables[0].Rows.Count > 0) { #region 自定义Excel表格 System.Data.DataTable dt = new System.Data.DataTable(); dt.Columns.Add("StickerCode", typeof(string)); dt.Columns.Add("TemplateUrl", typeof(string)); dt.Columns.Add("TemplateName", typeof(string)); dt.Columns.Add("CraftsNo", typeof(string)); dt.Columns.Add("ECN", typeof(string)); dt.Columns.Add("Revision", typeof(string)); dt.Columns.Add("StickerDesc", typeof(string)); dt.Columns.Add("Author", typeof(string)); dt.Columns.Add("ReMark", typeof(string)); dt.Columns.Add("StateID", typeof(string)); dt.Columns.Add("IsUsed", typeof(string)); dt.Columns.Add("StickerValName", typeof(string)); dt.Columns.Add("StickerValDesc", typeof(string)); dt.Columns.Add("StickerValValue", typeof(string)); for (int i = 0; i < ds.Tables[0].Rows.Count; i++) { DataRow dr = dt.NewRow(); dr["StickerCode"] = ds.Tables[0].Rows[i]["StickerCode"].ToString(); dr["TemplateUrl"] = bllT.GetModel(Convert.ToInt32(ds.Tables[0].Rows[i]["TemplateID"].ToString())).TemplateUrl; dr["TemplateName"] = bllT.GetModel(Convert.ToInt32(ds.Tables[0].Rows[i]["TemplateID"].ToString())).TemplateName; dr["CraftsNo"] = ds.Tables[0].Rows[i]["CraftsNo"].ToString(); dr["ECN"] = ds.Tables[0].Rows[i]["ECN"].ToString(); dr["Revision"] = ds.Tables[0].Rows[i]["Revision"].ToString(); dr["StickerDesc"] = ds.Tables[0].Rows[i]["StickerDesc"].ToString(); dr["Author"] = ds.Tables[0].Rows[i]["Author"].ToString(); dr["ReMark"] = ds.Tables[0].Rows[i]["ReMark"].ToString(); string stateID = ds.Tables[0].Rows[i]["StateID"].ToString(); if (stateID == "1") { dr["ReMark"] = "待提交"; } else if (stateID == "2") { dr["ReMark"] = "待审核"; } else if (stateID == "3") { dr["ReMark"] = "待发布"; } else if (stateID == "4") { dr["ReMark"] = "已发布"; } else if (stateID == "5") { dr["ReMark"] = "暂停"; } else { dr["ReMark"] = "取消"; } dr["IsUsed"] = "是"; System.Data.DataTable dtVal = bllSV.GetList(" StickerID=" + Convert.ToInt32(ds.Tables[0].Rows[i]["StickerID"].ToString())).Tables[0]; if (dtVal.Rows.Count > 0) { string name = ""; string desc = ""; string value = ""; for (int j = 0; j < dtVal.Rows.Count; j++) { name += dtVal.Rows[j]["StickerValName"].ToString() + (char)10; desc += dtVal.Rows[j]["StickerValDesc"].ToString() + (char)10; value += dtVal.Rows[j]["StickerValValue"].ToString() + (char)10; } dr["StickerValName"] = name; dr["StickerValDesc"] = desc; dr["StickerValValue"] = value; } else { dr["StickerValName"] = ""; dr["StickerValDesc"] = ""; dr["StickerValValue"] = ""; } dt.Rows.Add(dr); dt.AcceptChanges(); } #endregion string tempFileName = DateTime.Now.ToString("yyyyMMddhhmmssfff"); string fileName = Server.MapPath("Excel\\") + tempFileName + ".xls"; object nothing = System.Reflection.Missing.Value; //创建excel文件,文件名用系统时间生成精确到毫秒 Application myExcel = new Application(); myExcel.Application.Workbooks.Add(nothing); try { //把Dataset中的数据插入excel文件中 int totalCount = 0; int row = ds.Tables[0].Rows.Count; //int column = ds.Tables[0].Columns.Count; string[] columnName = new string[14] { "标贴编码", "标贴模版代码", "模版名称", "工艺代号", "ECN编号", "版次", "变更描述", "作者","备注","状态","是否可用","变量名","变量描述","变量值"}; int column = columnName.Length; for (int i = 0; i < column; i++) { //myExcel.Cells[totalCount + 2, 1 + i] = ds.Tables[0].Columns[i].ColumnName; myExcel.Cells[totalCount + 2, 1 + i] = columnName[i].ToString(); } for (int i = 0; i < row; i++) { for (int j = 0; j < column; j++) { myExcel.Cells[totalCount + 3 + i, 1 + j] = "" + dt.Rows[i][j].ToString(); } } totalCount = totalCount + row + 4; try { myExcel.ActiveWorkbook._SaveAs(fileName, nothing, nothing, nothing, nothing, nothing, XlSaveAsAccessMode.xlExclusive, nothing, nothing, nothing, nothing); } catch { MessageBox.Show(this,"系统找不到指定目录下的文件:"); return; } myExcel.Visible = true; } catch (Exception ex) { MessageBox.Show(this, ex.Message); return; } } else { MessageBox.Show(this, "没有数据"); return; } } #endregion