我想使用asp.net 3.5中的三层体系结构将数据从SQL Server表传输到Excel sheet。之后,用户已在Excel工作表中进行了必要的更改,我希望Excel工作表得到上传,并与适当的数据验证更新表中的数据。
发布于 2010-03-10 01:32:22
发布于 2010-03-10 01:32:47
您可以查看库(有大量的库),以编程方式读取和写入Excel工作表,然后手动处理所有这些操作。
OR:查看 SQL Server Integration Services (SSIS) -它们提供了将SQL Server数据导出为多种格式(包括Excel)的灵活方法,并且还提供了返回路线。您还可以轻松地从.NET应用程序控制和执行SSIS包。
发布于 2010-04-01 16:42:10
我可以想到两种方法。第一种方法是从Excel VBA (可以受密码保护)建立到SQL/Server的ADO连接。当您在Excel中按下一个按钮时,它或者一次读取您的电子表格数据中的一条记录,并具有验证逻辑,或者它只是使用insert查询将其上载到一个临时表,然后您就有了一个触发器来查看数据并对其进行处理。这样你就不需要上传任何文件了。
我在VBA中对SQL/Server使用过ADO命令,它们非常简单、可靠,而且速度非常快。通过谷歌搜索可以找到大量的例子。它非常棒,因为您可以使用各种特定于Excel的VBA命令来构建记录,然后对其进行更新或插入,或者做任何您需要做的事情。
出于安全性考虑,您可以将用户(连接字符串和密码隐藏在VBA中)限制为只能在某个数据库中插入数据,因此即使密码被以某种方式从VBA窃取,也不会对任何人有任何好处,因为他们只能插入数据。
第二种方法是创建一个普通的ASP上载控件,该控件在完成时接受您的Excel文件。在ASP中有一个事件,你可以在文件上传完成后运行ASP.Net代码。这将看到上传的Excel文件,通过用于读取Excel文件的普通.net命令读取它(Excel自动化),然后处理它,然后我猜要么刷新它,要么丢弃它。我不知道在服务器上运行Excel自动化是否存在复杂性--可能是因为它本质上是在您的web服务器上运行Excel.Exe的一个版本(实际上不是一个好主意)。
我相信你可以建立一个从ASP到Excel文件的ADO连接,并对其进行SQL查询。我已经成功地做到了这一点,但不幸的是,它根据前几条记录来决定字段的类型,这在将Excel文件作为数据库读取时有时会导致很多问题。我想您可以编写一些快速的VBA来将Excel数据输出到CSV并上传CSV文件,这样web服务器上的任何东西都不必尝试读取Excel文件。在VBA中,您甚至可以通过SendKeys和InternetExplorer自动化实现自动上传。我已经这样做了,它运行得非常好。出于安全原因,Sendkeys是填充文件上传文本框的唯一方法。
正如你所看到的,第一个答案是更好的。这就是我要做的,因为这样你也可以用新的数据刷新你的电子表格。
实际上,我认为你在这里发布了一个非常有趣的问题。在Excel电子表格中编辑数据并将其发送回来要容易得多。我使用essentialobjects中的Excel样式的网格控件复制了很多这种功能--这是一个很棒的软件,但是要模拟一个电子表格需要大量的编码,而且它仍然只是一个类似Excel的表单,而不是一个完整的电子表格。
如果你愿意把MS-Access放在中间,这可以让你绕过许多这些复杂的问题,但它本身就是一个额外的层。
https://stackoverflow.com/questions/2410945
复制相似问题