文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>如果导出Excel2007?

如果导出Excel2007?

时间:2010-09-22  来源:Frank's Blog

        /// <summary>         /// 导出excel         /// </summary>         /// <typeparam name="T">泛型实体</typeparam>         /// <param name="response"></param>         /// <param name="listColumes">要显示的列名</param>         /// <param name="listProperty">要显示的导出属性名  和实体的属性名有关,顺序由显示的列确定 可以同listColumes</param>         /// <param name="listModel">实体集合</param>         public static void ExportExcel<T>(HttpResponse response, string sheetName, IList<string> listColumns, IList<string> listProperty, IList<T> listModel) where T : class, new()         {             if (listColumns.Count == 0)             {                 throw new IndexOutOfRangeException("No Columnes!");             }             if (listColumns.Count != listProperty.Count)             {                 throw new ArgumentException("Columns and properties length are not equal.");             }             using (StringWriter writer = new StringWriter())             {                 writer.WriteLine("<html xmlns:x=\"urn:schemas-microsoft-com:office:excel\">");                 writer.WriteLine("<head>");                 writer.WriteLine("<!--[if gte mso 9]>");                 writer.WriteLine("<xml>");                 writer.WriteLine(" <x:ExcelWorkbook>");                 writer.WriteLine("  <x:ExcelWorksheets>");                 writer.WriteLine("   <x:ExcelWorksheet>");                 writer.WriteLine("    <x:Name>" + sheetName + "</x:Name>");                 writer.WriteLine("    <x:WorksheetOptions>");                 writer.WriteLine("      <x:Print>");                 writer.WriteLine("       <x:ValidPrinterInfo />");                 writer.WriteLine("      </x:Print>");                 writer.WriteLine("    </x:WorksheetOptions>");                 writer.WriteLine("   </x:ExcelWorksheet>");                 writer.WriteLine("  </x:ExcelWorksheets>");                 writer.WriteLine("</x:ExcelWorkbook>");                 writer.WriteLine("</xml>");                 writer.WriteLine("<![endif]-->");                 writer.WriteLine("</head>");                 writer.WriteLine("<body>");                 writer.WriteLine("<table>");                 writer.WriteLine("<tr>");                 foreach (string item in listColumns)                 {                     writer.WriteLine("<td>" + item + "</td>"); //列名                 }                 writer.WriteLine("</tr>");                 //通过反射 显示要显示的列                 BindingFlags bf = BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Static;//反射标识                 Type objType = typeof(T);                 PropertyInfo[] propInfoArr = objType.GetProperties(bf);                 foreach (T model in listModel)                 {                     writer.WriteLine("<tr>");
                    foreach (string propName in listProperty)                     {                         foreach (PropertyInfo propInfo in propInfoArr)                         {                             if (string.Compare(propInfo.Name.ToUpper(), propName.ToUpper()) == 0)                             {                                 PropertyInfo modelProperty = model.GetType().GetProperty(propName);                                 if (modelProperty != null)                                 {                                     object objResult = modelProperty.GetValue(model, null);                                     writer.WriteLine("<td>" + ((objResult == null) ? string.Empty : objResult) + "</td>");                                 }                                 else                                 {                                     throw new Exception("Property name may be not exists!");                                 }                             }                         }                     }                     writer.WriteLine("</tr>");                 }                 writer.WriteLine("</table>");                 writer.WriteLine("</body>");                 writer.WriteLine("</html>");                 writer.Close();                 response.Clear();                 response.Buffer = true;                 response.Charset = "UTF-8";                 currentPage.EnableViewState = false;                 response.AddHeader("Content-Disposition", "attachment; filename=" + CreateExcelName() + ".xls");                 response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";                 response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");                 response.Write(writer);                 response.End();             }         }

 

 从网上找到以上代码可以导出一个伪Excel,但对于"只需展示"来说正合适.

 不过有点问题: 当前默认导出的是Excel2003格式,开发时就会出现"您尝试打开的文件xxx.xls的格式与文件扩展名指定的格式不一致.打开文件前请验证文件没有损坏且来源可信.是否立即打开该文件?"的提示信息.

请问以上代码如何能导出Excel2007格式的文件呢? 

 

 

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载