首页 > 解决方案 > Excel 从电子邮件收件箱到 SQL Server 数据库

问题描述

我必须将数据从 Excel 导入 SQL Server 数据库。

我每天都通过电子邮件获取 Excel 文件。我必须从电子邮件中取出它们并将内容放入数据库。另外,我想自动化它而不是手动进行。

我正在考虑以下想法:

  1. 从收件箱中提取电子邮件附件(使用某些工具等的自动化过程)并将其保存到O:驱动器中(然后从那里拉入数据库很简单)

  2. 借助任何可用的工具(开源),直接从收件箱将 Excel 内容导入 SQL Server。

我希望这对我正在尝试做的事情有意义。

有人可以告诉我如何自动化吗?

谢谢,美联社

标签: sql-serverexcel

解决方案


您可以将 VBA 用于此处的所有内容。

1) 从 Outlook 下载附件。

Public Sub SaveAttachmentsToDisk(MItem As Outlook.MailItem)
Dim oAttachment As Outlook.Attachment
Dim sSaveFolder As String
sSaveFolder = "C:\Users\DT168\Documents\outlook-attachments\"
For Each oAttachment In MItem.Attachments
oAttachment.SaveAsFile sSaveFolder & oAttachment.DisplayName
Next
End Sub

2) 将数据从 Excel 文件加载到 SQL Server。

Sub InsertARecord()
Dim cnt As ADODB.Connection
Dim rst As ADODB.Recordset
Dim stCon As String, stSQL As String
Set cnt = New ADODB.Connection
Set rst = New ADODB.Recordset

stCon = "Provider=MSDASQL.1;Persist Security Info=False;Data Source=JOEY"
cnt.ConnectionString = stCon
stSQL = "INSERT INTO MyTable (FieldNames)"
stSQL = stSQL & "VALUES (ActualValues)"
stSQL = stSQL & "WHERE lockStatus = 'nolock'"

cnt.Open
rst.Open stSQL, cnt, adOpenStatic, adLockReadOnly, adCmdText

If CBool(rst.State And adStateOpen) = True Then rst.Close
Set rst = Nothing
If CBool(cnt.State And adStateOpen) = True Then cnt.Close
Set cnt = Nothing

End Sub

另外,请参阅此 URL。

https://www.excel-sql-server.com/excel-sql-server-import-export-using-vba.htm#Introduction


推荐阅读