您的位置:首页 > 编程语言 > C#

C#导出excel或csv文件

2013-09-12 10:30 357 查看
[align=left]方法一:[/align]
[align=left]Model:[/align]
[align=left]    public class Execlinfo[/align]
[align=left]    {[/align]
        public int UserID
{ get; set;
}
        public string UserName
{ get; set;
}
        public string Password
{ get; set;
}
        public string PasswordSalt
{ get; set;
}
        public string PasswordFormat
{ get; set;
}
        public string AccountStatus
{ get; set;
}
        public string TrueName
{ get; set;
}
        public string Phone
{ get; set;
}
        public string Mobile
{ get; set;
}
        public string Email
{ get; set;
}
        public string Address
{ get; set;
}
        public string SN
{ get; set;
}
        public string CompanyName
{ get; set;
}
        public string Gender
{ get; set;
}
        public string Zip
{ get; set;
}
        public string Position
{ get; set;
}
        public string Sequence
{ get; set;
}
        public string Description
{ get; set;
}
        public string Permission
{ get; set;
}
        public string NickName
{ get; set;
}
        public DateTime BirthDay
{ get; set;
}
        public string RegisterSite
{ get; set;
}
        public string ProvinceID
{ get; set;
}
        public string CityID
{ get; set;
}
        public string Subscription
{ get; set;
}
        public string Signature
{ get; set;
}
        public string CardNumber
{ get; set;
}
        public string CardPoints
{ get; set;
}
        public string Balance
{ get; set;
}
        public string CardType
{ get; set;
}
        public string TotalPoints
{ get; set;
}
[align=left]    }[/align]
[align=left]
[/align]
[align=left]Dao:[/align]

        public IList<Execlinfo>
execlout()
[align=left]        {[/align]
            string sql
= @"select u.UserID,u.UserName,u.Password,u.PasswordSalt,u.PasswordFormat,u.AccountStatus,me.TrueName,
[align=left]            me.Phone,me.Mobile,me.Email,me.Address,me.SN,me.CompanyName,me.Gender,me.Zip,me.Position,[/align]
[align=left]        me.Sequence,me.Description,me.Permission,me.NickName,me.BirthDay,me.RegisterSite,me.ProvinceID,[/align]
[align=left]        me.CityID,me.Subscription,me.Signature,mem.CardNumber,mem.CardPoints,mem.Balance,mem.CardType,mem.TotalPoints[/align]
[align=left]        from dn_user as u inner join dn_membership me on u.UserId=me.UserID inner join[/align]
[align=left]        dn_membershipcard mem on me.UserID=mem.UserID";[/align]
            DnDataReader dnreader
= new DnDataReader(this);
            IList<Execlinfo>
list = new List<Execlinfo>();
[align=left]            try[/align]
[align=left]            {[/align]
                IDataReader dr
= dnreader.ExecuteReader(sql);
[align=left]                while (dr.Read())[/align]
[align=left]                {[/align]
                    Execlinfo info
= getinfo(dr);
[align=left]                    list.Add(info);[/align]
[align=left]                }[/align]
[align=left]            }[/align]
[align=left]            finally[/align]
[align=left]            {[/align]
[align=left]                dnreader.Close();[/align]
[align=left]            }[/align]
[align=left]            return list;[/align]
[align=left]        }[/align]
[align=left]
[/align]
[align=left]        public Execlinfo getinfo(IDataReader dr)[/align]
[align=left]        {[/align]
            Execlinfo info
= new Execlinfo();
[align=left]            info.UserName = dr["UserName"].ToString();[/align]
[align=left]            info.Password = dr["Password"].ToString();[/align]
[align=left]            info.PasswordSalt = dr["PasswordSalt"].ToString();[/align]
[align=left]            info.PasswordFormat = dr["PasswordFormat"].ToString();[/align]
[align=left]            info.AccountStatus = dr["AccountStatus"].ToString();[/align]
[align=left]            info.Phone = dr["Phone"].ToString();[/align]
[align=left]            info.Mobile = dr["Mobile"].ToString();[/align]
[align=left]            info.Email = dr["Email"].ToString();[/align]
[align=left]            info.Address = dr["Address"].ToString();[/align]
[align=left]            info.SN = dr["SN"].ToString();[/align]
[align=left]            info.CompanyName = dr["CompanyName"].ToString();[/align]
[align=left]            info.Gender = dr["Gender"].ToString();[/align]
[align=left]            info.Zip = dr["Zip"].ToString();[/align]
[align=left]            info.Position = dr["Position"].ToString();[/align]
[align=left]            info.Sequence = dr["Sequence"].ToString();[/align]
[align=left]            info.Description = dr["Description"].ToString();[/align]
[align=left]            info.Permission = dr["Permission"].ToString();[/align]
[align=left]            info.NickName = dr["NickName"].ToString();[/align]
[align=left]
[/align]
            info.BirthDay = dr["BirthDay"]
!= Convert.DBNull ? Convert.ToDateTime(dr["BirthDay"])
: DateTime.MinValue;
[align=left]            info.RegisterSite = dr["RegisterSite"].ToString();[/align]
[align=left]            info.ProvinceID = dr["ProvinceID"].ToString();[/align]
[align=left]            info.CityID = dr["CityID"].ToString();[/align]
[align=left]            info.Signature = dr["Signature"].ToString();[/align]
[align=left]            info.CardNumber = dr["CardNumber"].ToString();[/align]
[align=left]            info.CardPoints = dr["CardPoints"].ToString();[/align]
[align=left]            info.Balance = dr["Balance"].ToString();[/align]
[align=left]            info.CardType = dr["CardType"].ToString();[/align]
[align=left]            info.TotalPoints = dr["TotalPoints"].ToString();[/align]
[align=left]            info.UserID = Convert.ToInt32(dr["UserID"]);[/align]
[align=left]            return info;[/align]
[align=left]        }[/align]

control层:
[align=left]        public void ExeclDown()[/align]
[align=left]        {[/align]
            string tablecontent
= Getoutexecl();
[align=left]            if (!string.IsNullOrEmpty(tablecontent))[/align]
[align=left]            {[/align]
                if (!string.IsNullOrEmpty(Request.QueryString["role"])
&& Request.QueryString["role"] == "2")
[align=left]                {[/align]
                    ExportExcel("移动会员数据.xls",
Getoutexecl());
[align=left]                }[/align]
[align=left]                else[/align]
[align=left]                {[/align]
                    ExportExcel("网站会员数据.xls",
Getoutexecl());
[align=left]                }[/align]
[align=left]
[/align]
[align=left]            }[/align]
[align=left]        }[/align]
[align=left]
[/align]
[align=left]        public string Getoutexecl()[/align]
[align=left]        {[/align]
            IList<Execlinfo>
lt = iuser.execlout();
            if (!string.IsNullOrEmpty(Request.QueryString["role"])
&& Request.QueryString["role"] == "2")
[align=left]            {[/align]
[align=left]                lt = lt.Where(c => c.Signature != "网站会员" &&UserUtils.GetUserInfo(c.UserID).ContainsRole(300)).ToList();[/align]
[align=left]                //list = list.Where(c => c.ContainsRole(100)).ToList();[/align]
[align=left]            }[/align]
[align=left]            else[/align]
[align=left]            {[/align]
[align=left]                lt = lt.Where(c => c.Signature == "网站会员" && UserUtils.GetUserInfo(c.UserID).ContainsRole(100)).ToList();[/align]
[align=left]            }[/align]
            StringBuilder builder
= new StringBuilder();
[align=left]            builder.Append("<table border='1'>");[/align]
[align=left]            builder.Append("<tr>");[/align]
            builder.Append("<th style='text-align:center;background:#F3F3F3;'>UserName
</th>");
            builder.Append("<th style='text-align:center;background:#F3F3F3;'>Password
</th>");
            builder.Append("<th style='text-align:center;background:#F3F3F3;'>PasswordSalt
</th>");
            builder.Append("<th style='mso-number-format:'\\@';text-align:center;background:#F3F3F3;'>PasswordFormat
</th>");
            builder.Append("<th style='text-align:center;background:#F3F3F3;'>AccountStatus
</th>");
            builder.Append("<th style='text-align:center;background:#F3F3F3;'>TrueName
</th>");
            builder.Append("<th style='text-align:center;background:#F3F3F3;'>Phone
</th>");
            builder.Append("<th style='text-align:center;background:#F3F3F3;'>Mobile
</th>");
            builder.Append("<th style='text-align:center;background:#F3F3F3;'>Email
</th>");
            builder.Append("<th style='text-align:center;background:#F3F3F3;'>Address
</th>");
            builder.Append("<th style='text-align:center;background:#F3F3F3;'>SN
</th>");
            builder.Append("<th style='text-align:center;background:#F3F3F3;'>CompanyName
</th>");
            builder.Append("<th style='text-align:center;background:#F3F3F3;'>Gender
</th>");
            builder.Append("<th style='text-align:center;background:#F3F3F3;'>Zip
</th>");
            builder.Append("<th style='text-align:center;background:#F3F3F3;'>Position
</th>");
            builder.Append("<th style='text-align:center;background:#F3F3F3;'>Sequence
</th>");
            builder.Append("<th style='text-align:center;background:#F3F3F3;'>Description
</th>");
            builder.Append("<th style='text-align:center;background:#F3F3F3;'>Permission
</th>");
            builder.Append("<th style='mso-number-format:'\\@';text-align:center;background:#F3F3F3;'>NickName
</th>");
            builder.Append("<th style='text-align:center;background:#F3F3F3;'>BirthDay
</th>");
            builder.Append("<th style='text-align:center;background:#F3F3F3;'>RegisterSite
</th>");
            builder.Append("<th style='text-align:center;background:#F3F3F3;'>ProvinceID
</th>");
            builder.Append("<th style='text-align:center;background:#F3F3F3;'>CityID
</th>");
            builder.Append("<th style='text-align:center;background:#F3F3F3;'>Subscription
</th>");
            builder.Append("<th style='text-align:center;background:#F3F3F3;'>Signature
</th>");
            builder.Append("<th style='text-align:center;background:#F3F3F3;'>CardPoints
</th>");
            builder.Append("<th style='text-align:center;background:#F3F3F3;'>Balance
</th>");
            builder.Append("<th style='text-align:center;background:#F3F3F3;'>CardType
</th>");
            builder.Append("<th style='text-align:center;background:#F3F3F3;'>TotalPoints
</th>");
[align=left]
[/align]
[align=left]            builder.Append("</tr>");[/align]
[align=left]            foreach (Execlinfo t in lt)[/align]
[align=left]            {[/align]
                builder.Append("<td style='text-align:center;'>" +
t.UserName + "</td>");
                builder.Append("<td style='text-align:center;'>" +
t.Password + "</td>");
                builder.Append("<td style='mso-number-format:\\@;text-align:center;'>" +
t.PasswordSalt + "</td>");
                builder.Append("<td style='text-align:center;'>" +
t.PasswordFormat + "</td>");
                builder.Append("<td style='text-align:center;'>" +
t.AccountStatus + "</td>");
                builder.Append("<td style='text-align:center;'>" +
t.TrueName + "</td>");
                builder.Append("<td style='text-align:center;'>" +
t.Phone + "</td>");
                builder.Append("<td style='text-align:center;'>" +
t.Mobile + "</td>");
                builder.Append("<td style='text-align:center;'>" +
t.Email + "</td>");
                builder.Append("<td style='text-align:center;'>" +
t.Address + "</td>");
                builder.Append("<td style='text-align:center;'>" +
t.SN + "</td>");
                builder.Append("<td style='text-align:center;'>" +
t.CompanyName + "</td>");
                builder.Append("<td style='text-align:center;'>" +
t.Gender + "</td>");
                builder.Append("<td style='text-align:center;'>" +
t.Zip + "</td>");
                builder.Append("<td style='text-align:center;'>" +
t.Position + "</td>");
                builder.Append("<td style='text-align:center;'>" +
t.Sequence + "</td>");
                builder.Append("<td style='text-align:center;'>" +
t.Description + "</td>");
                builder.Append("<td style='mso-number-format:\\@;text-align:center;'>" +
t.Permission + "</td>");
                builder.Append("<td style='text-align:center;'>" +
t.NickName + "</td>");
                builder.Append("<td style='text-align:center;'>" +
t.BirthDay.ToString("yyyy-MM-dd") + "</td>");
                builder.Append("<td style='text-align:center;'>" +
t.RegisterSite + "</td>");
                builder.Append("<td style='text-align:center;'>" +
t.ProvinceID + "</td>");
                builder.Append("<td style='text-align:center;'>" +
t.CityID + "</td>");
                builder.Append("<td style='text-align:center;'>" +
t.Subscription + "</td>");
                builder.Append("<td style='text-align:center;'>" +
t.Signature + "</td>");
                builder.Append("<td style='text-align:center;'>" +
t.CardPoints + "</td>");
                builder.Append("<td style='text-align:center;'>" +
t.Balance + "</td>");
                builder.Append("<td style='text-align:center;'>" +
t.CardType + "</td>");
                builder.Append("<td style='text-align:center;'>" +
t.TotalPoints + "</td>");
[align=left]                builder.Append("</tr>");[/align]
[align=left]            }[/align]
[align=left]            builder.Append("</table>");[/align]
[align=left]            return builder.ToString();[/align]
[align=left]        }[/align]
[align=left]
[/align]
[align=left]        public void ExportExcel(string FileName, string tableContent)[/align]
[align=left]        {[/align]
[align=left]            //byte[] byteArray = Encoding.UTF8.GetBytes(tableContent);[/align]
            //byteArray = Encoding.Convert(Encoding.UTF8,
Encoding.GetEncoding("gb2312"), byteArray);
            byte[]
byteArray = Encoding.GetEncoding("gb2312").GetBytes(tableContent);
[align=left]            System.Web.HttpContext.Current.Response.Clear();[/align]
[align=left]            System.Web.HttpContext.Current.Response.ClearContent();[/align]
[align=left]            System.Web.HttpContext.Current.Response.ClearHeaders();[/align]
            System.Web.HttpContext.Current.Response.Charset
= "utf-8";
[align=left]            HttpContext.Response.ContentEncoding = System.Text.Encoding.GetEncoding("utf-8");[/align]
            string userAgent
= System.Web.HttpContext.Current.Request.ServerVariables["http_user_agent"].ToLower();
[align=left]            if (userAgent.Contains("firefox"))[/align]
[align=left]            {[/align]
                System.Web.HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment;filename=" +
FileName);
[align=left]            }[/align]
[align=left]            else[/align]
[align=left]            {[/align]
                System.Web.HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment;filename=" +
System.Web.HttpContext.Current.Server.UrlEncode(FileName));
[align=left]            }[/align]
            System.Web.HttpContext.Current.Response.AddHeader("Content-Length",
byteArray.Length.ToString());
            System.Web.HttpContext.Current.Response.ContentType
= "application/ms-excel";
[align=left]            System.Web.HttpContext.Current.Response.BinaryWrite(byteArray);[/align]
[align=left]            System.Web.HttpContext.Current.Response.Flush();[/align]
[align=left]            System.Web.HttpContext.Current.Response.Close();[/align]
[align=left]            System.Web.HttpContext.Current.ApplicationInstance.CompleteRequest();[/align]
[align=left]        }[/align]
[align=left]
[/align]
[align=left]
[/align]
[align=left]
[/align]
[align=left]方法二:[/align]
[align=left]
[/align]

[align=left]        public void ExportToExcelOfficeALLByAdditional()[/align]
[align=left]        {[/align]
[align=left]            SearchAdditionalRun search;[/align]
            string excelstr
= "";
            string name
= Request.QueryString["name"];
            string date
= Request.QueryString["date"];
            if (date
== "ALL")
[align=left]            {[/align]
[align=left]                search = new SearchAdditionalRun[/align]
[align=left]               {[/align]
[align=left]                   SearchType = SearchTypeEnum.Total,[/align]
[align=left]                   Status = StatusEnum.Active,[/align]
[align=left]               };[/align]
[align=left]            }[/align]
[align=left]            else[/align]
[align=left]            {[/align]
[align=left]                search = new SearchAdditionalRun[/align]
[align=left]               {[/align]
[align=left]                   ActualDate = date.ToInteger(),[/align]
[align=left]                   SearchType = SearchTypeEnum.Total,[/align]
[align=left]                   Status = StatusEnum.Active,[/align]
[align=left]               };[/align]
[align=left]            }[/align]
            IList<AdditionalRunInfo>
info = iadditionalrun.Search(search);
[align=left]            #region AdditionalRunInfo导出字段[/align]
            string strNull
= "";
[align=left]            excelstr = "AdditionalRunID" + "," +[/align]
[align=left]                             "RequestDescription" + "," +[/align]
[align=left]                             "ReasonID" + "," +[/align]
[align=left]                             "Reason" + "," +[/align]
[align=left]                             "DateRaised" + "," +[/align]
[align=left]                             "ExpectedDate" + "," +[/align]
[align=left]                             "ActualDate" + "," +[/align]
[align=left]                             "ProjectID" + "," +[/align]
                             "Project
#" + "," +
[align=left]                             "ProjectName" + "," +[/align]
[align=left]                             "InsertTime" + "," +[/align]
[align=left]                             "LastChanged" + "," +[/align]
                             "Status" + "\n";//标题
        
[align=left]            #endregion[/align]
            foreach (AdditionalRunInfo
item in info)
[align=left]            {[/align]
[align=left]                #region AdditionalRunInfo导出字段[/align]
                string DateRaised
= item.DateRaised == DateTime.MinValue ? "" :
item.DateRaised.ToString("yyyy-MM-dd");
                string ExpectedDate
= item.ExpectedDate == DateTime.MinValue ? "" :
item.ExpectedDate.ToString("yyyy-MM-dd");
                string InsertTime
= item.InsertTime == DateTime.MinValue ? "" :
item.InsertTime.ToString("yyyy-MM-dd");
                string LastChanged
= item.LastChanged == DateTime.MinValue ? "" :
item.LastChanged.ToString("yyyy-MM-dd");
                string ProjectNumber
= ibkfm.GetBKFM(item.ProjectID).ProjectNumber;
                string ProjectName
= ibkfm.GetBKFM(item.ProjectID).ProjectName;
                string Reason
= isimplecategory.GetSimpleCategoryInfo(item.ReasonID).GetLangInfo(LanguageTypeEnum.Chinese).CategoryName;
[align=left]                excelstr += item.AdditionalRunID + "," +[/align]
[align=left]                            StringFormat(item.RequestDescription) + "," +[/align]
[align=left]                            item.ReasonID + "," +[/align]
[align=left]                            Reason + "," +[/align]
[align=left]                            DateRaised + "," +[/align]
[align=left]                            ExpectedDate + "," +[/align]
[align=left]                            date + "," +[/align]
[align=left]                            item.ProjectID + "," +[/align]
[align=left]                            ProjectNumber + "," +[/align]
[align=left]                            ProjectName + "," +[/align]
[align=left]                            InsertTime + "," +[/align]
[align=left]                            LastChanged + "," +[/align]
                            item.Status + "\n";//标题
  
[align=left]                #endregion[/align]
[align=left]            }[/align]
            string url
= Server.MapPath("~\\fileupload\\") + name + ".csv";//要存储的路径
            string path
= "/fileupload/" + name + ".csv";//导出文件的相对路径,用于下载
            StreamWriter sw
= new StreamWriter(url, false, Encoding.GetEncoding("GB2312"));//把文件作为文件流保存在固定的路径
[align=left]            sw.Write(excelstr);// 文件流写出[/align]
[align=left]            sw.Flush();//判断是否有文件,如果有则删除[/align]
[align=left]            sw.Dispose();//释放流的资源[/align]
            Response.Write("" +
path + "");//输出文件相对路径
[align=left]        }[/align]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息