从SQL Server或asp.net/C#(mvc 3)页面将数据导入excel
本文关键字:excel 导入 数据 mvc Server SQL asp net | 更新日期: 2023-09-27 18:21:28
我需要制作一个excel文件,该文件将从与ms-sql表的连接中获取数据。目前,我正在将数据导出到xml(通过mvc 3页面),然后通过这种方式将其导出到excel中:http://xignite.web-services-blog.com/2011/03/how-to-import-market-data-into-excel-using-xml/。
我不想简单地用数据生成excel文件,因为我希望用户能够点击excel中的刷新按钮,随时获取新的数据。我的问题是,可能有多达10万行,而excel在以这种方式解析xml文件方面真的很慢,它会锁定整个cpu核心几分钟。不可能使用它。
有没有更优化的方法来实现这一点?我可以尝试直接从ms-sql中获取数据,但我不希望用户能够读取整个表——他应该只能读取"他的"行。这就是为什么目前我使用xml-我可以在链接中包括他的登录名,然后只返回他可以访问的行。如果我允许他访问ms-sql,我必须为每个客户端创建单独的登录名和视图,这将是一种自动化的痛苦。。。此外,我不确定那会快多少?
很抱歉描述不清楚——我不太确定这种将数据导入excel的方式叫什么,也找不到太多关于它的信息。
如果您已经在使用web服务器生成XML文件,那么可以考虑从数据库动态生成CSV文件。然后,用户可以从此CSV文件导入数据。这将按以下方式工作:
- 用户打开电子表格并单击刷新
- 例如,用户的Excel连接到URLhttp://intranet/report.csv?username=Bob.
- Web服务器连接到SQL服务器并执行查询
- Web服务器创建一个
MemoryStream ms
对象 - Web服务器使用
DataReader
或SqlDataReader
读取查询结果,并以CSV格式(逗号分隔值)将其写入ms
- Web服务器使用
Content-disposition: attachment; filename=report.csv
头进行响应,并使用Response.BinaryWrite()
向用户发送CSV - 用户的Excel接收report.csv并使用它刷新用户电子表格的内容