#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
posted on 2012-10-26 13:15  小角色  阅读(574)  评论(0)    收藏  举报