Excel从电子邮件收件箱到SQL Server数据库

时间:2018-05-17 15:48:26

标签: sql-server excel

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

我每天通过电子邮件收到Excel文件。我必须从电子邮件中删除它们并将内容放入数据库。此外,我想自动化它而不是手动操作。

我正在考虑以下想法:

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

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

  3. 我希望这对我想要做的事情有意义。

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

    谢谢, AP

1 个答案:

答案 0 :(得分:0)

你可以在这里使用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

另请参阅此网址。

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