繁体   English   中英

使用查询将数据从SQL Server表传输到Excel,反之亦然

[英]Transfer data from SQL Server table using query to Excel and vice-versa

我想使用asp.net 3.5中的3层体系结构将数据从SQL Server表传输到Excel工作表。 用户在Excel工作表中进行了必要的更改后,我希望Excel工作表能够上载并更新表中的数据,并验证正确的数据。

您可以设置一个SSIS包以从Excel导入数据

您可以查看库(大量的库)以编程方式读取和写入Excel工作表,然后手动处理所有这些工作。

或者:检查SQL Server集成服务 (SSIS)-它们提供了将SQL Server数据导出为多种格式(包括Excel)的巧妙方法,并且还提供了返回路径。 您也可以从.NET应用程序轻松控制和执行SSIS包。

我可以想到两种方法。 首先是从Excel VBA(可以用密码保护)建立到SQL / Server的ADO连接。 当您在Excel中按下一个按钮时,它要么一次读取一个电子表格数据并具有验证逻辑,要么简单地使用插入查询将其上传到临时表中,然后您便有了一个触发器来查看数据并对其进行处理。 这样,您不必上传任何文件。

我已经在VBA中将ADO命令用于SQL / Server,它们非常简单,可靠且异常快速。 通过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电子表格中编辑数据并将其发送回去要容易得多。 我已经使用了来自Essentialobjects的Excel样式的网格控件来复制了很多功能-很棒的软件,但是要模拟电子表格需要很多编码,但它仍然只是Excel形式,而不是完整的电子表格。

如果您愿意将MS-Access放在中间,那么可以避免很多这些麻烦,但它本身就是额外的一层。

暂无
暂无

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

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