c# 数据导出成excel 方法总结 见标红部分

public void ServiceOrderExport(string data)

        {

            StringBuilder sb = new StringBuilder();

            Type entityType = null; ;

            PropertyInfo[] entityProperties = null;

            var input = data.DeserializeObject<structServiceOrder>();

            using (var context = SRVDBHelper.DataContext)

            {

                sb.Remove(0, sb.Length);

                var results = context.Usp_SRV_CheckServiceOrder(input.ServiceOrderID, input.AcceptWay,

                input.StatusCode, input.Description, input.OneLevelSortID, input.TwoLevelSortID,

                input.ThreeLevelSortID, input.AInsNO, input.ACompanyName, input.ADepartmentID,

                input.ASectionID, input.AName, input.CInsNO, input.CCompanyName, input.CDepartmentID,

                input.CSectionID, input.CreatorName, input.HInsNO, input.HCompanyName, input.HDepartmentID,

                input.HSectionID, input.HName, input.CreateDate1, input.CreateDate2, input.FinishDate1,

                input.FinishDate2, input.OverDueStatus1,input.OverDueStatus2);

                List<Usp_SRV_CheckServiceOrderResult> entitys = null;

                if (input.HName !=null)

                {                    

                    entitys = (from item in results

                               where item.处理人 != null

                               select item).ToList();

                }

                else

                {

                    entitys = results.ToList();

                }

                //检查实体集合不能为空

                if (entitys == null || entitys.Count < 1)

                {

                    return;

                }

                //取出第一个实体的所有Propertie

                entityType = entitys[0].GetType();

                entityProperties = entityType.GetProperties();

                for (int i = 0; i < entityProperties.Length; i++)

                {

                    sb.Append(entityProperties[i].Name);

                    sb.Append(",");

                }

                sb.Remove(sb.Length - 1, 1);

                sb.Append("\r\n");

                //将所有entity添加到DataTable中

                foreach (object entity in entitys)

                {

                    //检查所有的的实体都为同一类型

                    if (entity.GetType() != entityType)

                    {

                        throw new Exception("要转换的集合元素类型不一致");

                    }

                    object[] entityValues = new object[entityProperties.Length];

                    for (int i = 0; i < entityProperties.Length; i++)

                    {

                        try

                        {

                            entityValues[i] = entityProperties[i].GetValue(entity, null);

                            sb.Append("\"" + HttpContext.Current.Server.HtmlDecode(entityValues[i].ToString().Replace("\"", "\"\"").

                                Replace("\n", Environment.NewLine).Replace("<BR>", Environment.NewLine)) + "\"");

                            sb.Append(",");

                        }

                        catch

                        {

                            entityValues[i] = string.Empty;

                            sb.Append("\"" + entityValues[i].ToString() + "\"");

                            sb.Append(",");

                        }

                    }

                    sb.Remove(sb.Length - 1, 1);

                    sb.Append("\r\n");

                }

                HttpResponse resp;

                resp = System.Web.HttpContext.Current.Response;

                resp.Charset = "GB2312";

                resp.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");

                resp.AppendHeader("Content-Disposition", "attachment;filename=" + string.Format("{0:yyyyMMddHHmmss}", DateTime.Now) + ".csv");

                resp.Write(sb);

                resp.End();

            }

        }

 

你可能感兴趣的:(Excel)