提问人:sickboy 提问时间:7/10/2023 最后编辑:sickboy 更新时间:7/11/2023 访问量:40
VB.NET 从收到的电子邮件正文中提取Excel表格
VB.NET Extract Excel Tables from received email body
问:
我每天都会收到一封电子邮件,其中包含一些 excel 表(每个大约 10rowsx10columns),我希望将它们留空,保持格式和标签不变(只是擦除单元格内容),并将空表存储在变量或 List(Of) 中,以便最终填充它们。
我试图将它们存储在包含 Tag 的 HTML 代码的 List(Of String) 中,但不幸的是,我遇到了很多关于 HTML 代码的各种问题。
编辑:
我添加了我已经要求参考的帖子,我打开了另一个主题以找到另一种实现我目标的方法。
在示例电子邮件内容下方
有没有其他方法可以做到这一点?
由于我被要求提供调试细节,因此我在下面附上编码细节。
Function GetMailTable(Subject As String, daysAgo As Integer, ParamArray Keywords() As Object)
Dim myOlApp As New Outlook.Application
Dim objNamespace As Outlook.NameSpace = myOlApp.GetNamespace("MAPI")
Dim objFolder As Outlook.MAPIFolder = objNamespace.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox)
Dim itm As Outlook.MailItem
Dim Found As Boolean
Dim strFilter As String
Dim Subj As String = Subject
Dim arrList As ArrayList = New ArrayList
daysAgo = myDate.Subtract(previousBusinessDay(myDate, daysAgo)).TotalDays
strFilter = "@SQL=" & Chr(34) & "urn:schemas:httpmail:subject" & Chr(34) & " like '%" & Subj & "%'"
Dim filtereditemssubj As Object = objFolder.Items.Restrict(strFilter)
Dim filteredItems As Object = filtereditemssubj.Restrict("[ReceivedTime]>'" & Format(myDate.AddDays(-daysAgo), "dd/MM/yyyy") + " 00:00" & "'")
filteredItems = filteredItems.Restrict("[ReceivedTime]<'" & Format(myDate.AddDays(-daysAgo).AddDays(1), "dd/MM/yyyy") + " 00:00" & "'")
Dim htmlDoc As New mshtml.HTMLDocument
Dim tables As mshtml.DispHTMLElementCollection
Dim Table As mshtml.HTMLTable
If filteredItems.Count = 0 Then
Found = False
Else
Found = True
For Each itm In filteredItems
htmlDoc.HTMLBody = itm.HTMLBody
tables = htmlDoc.getElementsByTagName("table")
For Each Table In tables
arrList.Add(Table)
Next Table
Next itm
End If
Return arrList
End Function
此代码不起作用,因为我无法获取邮件的 HTML 内容。 是否有另一种可行的方法来访问 Outlook 邮件的 HTML 内容或复制 Outlook 邮件正文中包含的 excel 表格的内容和布局?
答: 暂无答案
评论