一个 Aspose.Cells 简单的示例
2013-04-22 17:20 音乐让我说 阅读(952) 评论(1) 编辑 收藏 举报Aspose.Cells是一个广受赞誉的电子表格组件,支持所有Excel格式类型的操作,用户无需依靠Microsoft Excel也可为其应用程序嵌入读写和处理Excel数据表格的功能。Aspose.Cells可以导入和导出每一个具体的数据,表格和格式,在各个层面导入图像,应用复杂的计算公式,并将Excel的数据保存为各种格式等等---完成所有的这一切功能都无需使用Microsoft Excel 和Microsoft Office Automation。
首先利用 VS 的 NuGet 获取 Aspose.Cells ,目前最新版是:Aspose.Cells.7.4.2
直接贴代码了:
public class UserInfo { public string UserName { get; set; } public Guid UserId { get; set; } public DateTime DateOfBirth { get; set; } public int Age { get; set; } } public static class UserInfoRepository { public static IList<UserInfo> GetAll() { return new UserInfo[] { new UserInfo(){ UserId = Guid.NewGuid(), UserName = "张三", Age = 18, DateOfBirth = new DateTime(1985,1,21,12,13,14) }, new UserInfo(){ UserId = Guid.NewGuid(), UserName = "李四", Age = 19, DateOfBirth = new DateTime(1986,2,22) }, new UserInfo(){ UserId = Guid.NewGuid(), UserName = "王五", Age = 20, DateOfBirth = new DateTime(1987,3,23,12,13,14) }, new UserInfo(){ UserId = Guid.NewGuid(), UserName = "赵六", Age = 21, DateOfBirth = new DateTime(1988,4,25,12,13,14) }, new UserInfo(){ UserId = Guid.NewGuid(), UserName = "杨七", Age = 22, DateOfBirth = new DateTime(1989,5,2) } }; } } public class HomeController : Controller { public ActionResult Index() { ViewBag.Message = "欢迎使用 ASP.NET MVC!"; return View(); } public ActionResult About() { Workbook BuildReport_WorkBook = new Workbook(); Worksheet BuildReport_WorkSheet = BuildReport_WorkBook.Worksheets[0]; BuildReport_WorkSheet.FreezePanes(1, 1, 1, 0); //冻结第一行 Cells BuildReportCells = BuildReport_WorkSheet.Cells; BuildReportCells[0, 0].PutValue("姓名"); BuildReportCells[0, 1].PutValue("Id"); BuildReportCells[0, 2].PutValue("出生年月"); BuildReportCells[0, 3].PutValue("年龄"); IList<UserInfo> userInfo = UserInfoRepository.GetAll(); if(userInfo != null && userInfo.Count > 0) { int i = 0; foreach (UserInfo item in userInfo) { int row = i + 1; BuildReportCells[row, 0].PutValue(item.UserName); BuildReportCells[row, 1].PutValue(item.UserId); BuildReportCells[row, 2].PutValue(item.DateOfBirth); BuildReportCells[row, 3].PutValue(item.Age); i++; } } BuildReport_WorkSheet.Name = "users"; BuildReport_WorkSheet.AutoFitColumns(); //让各列自适应宽度 MemoryStream ms = new MemoryStream(); BuildReport_WorkBook.Save(ms, SaveFormat.Excel97To2003); return File(ms.ToArray(), "application/octet-stream", "User.xls"); } }
备注:
您可以封装一个公共的方法,利用泛型,反射要导出的模型类。比如:
void SaveToExcel<T>(IEnumerable<T> items)
SaveToExcel 方法应该有多个重载,比如指定一个或多个要导出的字段,先后顺序(比如:UserId 放在 UserName 的后面),字体颜色等等。最后使用 Lambda 表达式,以便利用强类型指定要导出的字段。
调用的时候:
IList<UserInfo> users = null; //从数据库中读取 SaveToExcel(users);
最后: NPOI 也是一个不错的选择,您可以研究一下!
谢谢浏览!
作者:音乐让我说(音乐让我说 - 博客园)
出处:http://music.cnblogs.com/
文章版权归本人所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。