繁体   English   中英

从SQL Server或asp.net/C#(mvc 3)页面将数据导入excel

[英]importing data to excel from SQL Server or asp.net/C# (mvc 3) page

我需要制作一个Excel文件,该文件将从与ms sql表的连接中获取数据。 此刻,我正在将数据导出到xml(通过mvc 3页面),然后以这种方式将其导入excel: http : //xignite.web-services-blog.com/2011/03/how-to-import -将市场数据导入到excel-using-xml /中

我不想简单地用数据生成excel文件,因为我希望用户能够在excel中点击刷新按钮并随时提取新数据。 我的问题是,最多可以有10万行,而excel在以这种方式解析xml文件时真的很慢,它将整个cpu核心锁定了几分钟。 无法使用它。

有没有其他更优化的方法来实现这一目标? 我可以尝试直接从ms sql提取数据,但我不希望用户能够读取整个表-他应该只能读取“他的”行。 这就是为什么我目前使用xml的原因-我可以在链接中包含他的登录名,然后仅返回他有权访问的行。 如果我允许他访问ms sql,则必须为每个客户端创建单独的登录名和视图,这将使自动化变得很痛苦...此外,我不确定那会快多少?

抱歉,不清楚的描述-我不确定该将数据导入excel的方式叫什么,也无法真正找到更多方法。

如果您已经在使用Web服务器来生成XML文件,则可以考虑从数据库中即时生成CSV文件。 然后,用户可以从该CSV文件导入数据。 这将按以下方式工作:

  1. 用户打开电子表格,然后点击刷新
  2. 用户的Excel连接到URL,例如http://intranet/report.csv?username = Bob
  3. Web服务器连接到SQL Server并执行查询。
  4. Web服务器创建一个MemoryStream ms对象。
  5. Web服务器使用DataReaderSqlDataReader读取查询结果,并将其以CSV格式(逗号分隔的值)写入ms
  6. Web服务器以Content-disposition: attachment; filename=report.csv响应Content-disposition: attachment; filename=report.csv Content-disposition: attachment; filename=report.csv标头,然后使用Response.BinaryWrite()将CSV发送给用户。
  7. 用户的Excel接收report.csv并使用它刷新用户电子表格的内容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM