我将向ASP添加一个分区.NET应用程序(VB.NET codebehind),允许用户获取返回给他们的Excel文件数据,我将根据数据库数据生成该文件.虽然有几种方法可以做到这一点,但每种方法都有自己的缺点.you将如何返回数据?我在寻找一种尽可能简洁明了的东西.

推荐答案

CSV

赞成的意见:

  • 易于理解的

欺骗:

  • 它可能不适用于其他地区或不同的Excel配置(即列表分隔符)
  • 无法应用格式、公式等

HTML

赞成的意见:

  • Still pretty 易于理解的
  • 支持简单的格式和公式

欺骗:

  • 您必须将文件命名为xls,Excel可能会警告您打开非原生Excel文件
  • 每个工作簿一份工作表

OpenXML(Office 2007.XLSX)

赞成的意见:

  • 原生Excel格式
  • 支持所有Excel功能
  • 请勿安装Excel副本
  • 可以生成数据透视表
  • 可以使用开源project EPPlus生成

欺骗:

  • Excel 2007之外的兼容性有限(现在应该不是问题)
  • 复杂,除非你使用的是第三方组件

SpreadSheetML(开放格式XML)

赞成的意见:

  • 易于理解的 compared to native Excel formats
  • 支持大多数Excel功能:格式、样式、公式、每个工作簿多张工作表
  • 使用它不需要安装Excel
  • 不需要第三方库——只需写出xml即可
  • 可以通过Excel XP/2003/2007打开文档

欺骗:

  • 缺乏良好的文件
  • 旧版本的Excel(2000之前)不支持
  • 只写,一旦打开它并从Excel中进行更改,它就会转换为原生Excel.

XLS(由第三方组件生成)

赞成的意见:

  • 生成包含所有格式、公式等的本地Excel文件.

欺骗:

  • 花钱
  • 添加依赖项

com互操作

赞成的意见:

  • 使用本机Microsoft库
  • 阅读对本机文档的支持

欺骗:

  • 非常慢
  • 依赖项/版本匹配问题
  • 阅读时web使用的并发性/数据完整性问题
  • 非常慢
  • web使用的扩展问题(与并发不同):需要在服务器上创建大量Excel应用程序的实例
  • 需要Windows
  • 我有提过它很慢吗?

Asp.net相关问答推荐

如何以编程方式设置单元格 colored颜色 epplus?

如何在asp.net中单击按钮的新选项卡中打开页面?

业务逻辑中的实体框架最佳实践?

如何判断一个IP地址是否是私有的?

如何在页面的基类中执行 Page_Load()?

这两种方法有什么区别?

将存储过程中 Select 查询的结果返回到列表

在 ASP.NET 中将虚拟路径转换为实际 Web 路径

如何从 JS 访问 ViewBag

使下拉列表项不可 Select

如何从 Asp.net Mvc-3 发送邮箱?

IIS Express 安装目录在哪里?

捕获的异常本身为 null !

将字典绑定到中继器

在 C# 中动态创建 Json

当文件上传超出 ASP.NET MVC 中允许的大小时显示自定义错误页面

ASP.net 网站中的 C# 密码文本框

连接字符串正确时出现实例失败错误

在.net的内存数据库中

Application_End global.asax