我想在asp.net 3.5中使用3层架构将数据从SQL Server表传输到Excel工作表。用户在Excel工作表中进行了必要的更改后,我希望Excel工作表上传并更新表中的数据,并验证是否有正确的数据。
答案 0 :(得分:0)
答案 1 :(得分:0)
您可以查看库(大量的库)以编程方式读取和写入Excel工作表,并手动处理它们。
OR:查看SQL Server Integration Services(SSIS) - 它们提供了将SQL Server数据导出为多种格式(包括Excel)的简洁方法,并且还提供了返回路由的方法。您也可以从.NET应用程序轻松控制和执行SSIS包。
答案 2 :(得分:0)
我可以想到两种方法。第一种是从Excel VBA(可以使用密码保护)与SQL / Server建立ADO连接。当您在Excel中按下某个按钮时,它会一次读取您的电子表格数据一条记录并具有验证逻辑,或者它只需将插入查询上传到临时表中,然后您就会有一个触发器来查看数据并对其进行处理。这样您就不必上传任何文件了。
我在VBA到SQL / Server中使用了ADO命令,它们非常简单,可靠且速度极快。通过Google搜索找到大量示例。这很棒,因为您可以使用各种特定于Excel的VBA命令来构建记录,然后更新或插入它或者您需要做的任何事情。
为了安全起见,您可以限制用户(隐藏在VBA中的连接字符串和密码) - 只是在某个数据库中插入数据,因此即使密码以某种方式从VBA中被攻击,也不会对任何人产生任何好处因为他们只能插入。
第二种方法是创建一个普通的ASP上传控件,在完成后接受你的Excel文件。在ASP中有一个事件,您可以在文件上载完成后运行ASP.Net代码。那会看到上传的Excel文件,通过普通的.net命令读取它来读取Excel文件(Excel自动化),处理它然后我想要刷新它或丢弃它。我不知道在服务器上运行Excel自动化是否存在复杂问题 - 可能是因为它本质上是在您的Web服务器上运行Excel.Exe(不是一个好主意)。
我相信您可以建立从ASP到Excel文件的ADO连接,并对其进行SQL查询。我已成功完成了这项工作,但遗憾的是,它根据前几条记录决定了字段的类型,这有时会在将Excel文件作为数据库读取时导致很多问题。我想您可以编写一些快速VBA来将Excel数据输出到CSV并上传该CSV文件,这样Web服务器上的任何内容都不必尝试读取Excel文件。在VBA中,您甚至可以通过SendKeys和InternetExplorer自动化自动上传。我已经做到了,效果非常好。出于安全原因,Sendkeys是填充文件上载文本框的唯一方法。
正如您所看到的,第一个答案是更好的答案。我就是这样做的,因为这样你也可以用新数据刷新你的电子表格。
我实际上认为你在这里发布了一个非常有趣的问题。在Excel电子表格中编辑数据并将其重新发送起来要容易得多。我使用了基本对象的Excel风格的网格控件复制了很多功能 - 很棒的软件,但是模拟电子表格需要大量编码,而且它只是一个类似Excel的表单,而不是完整的电子表格。
如果您愿意将MS-Access放在中间位置,可以解决很多这些并发症,但这本身就是一个额外的层次。