如何从机器人框架C#阅读附件内容?

我正在写一个机器人,期待用户给我发送一个附件,我想阅读并翻译成对象。

到目前为止,我有以下代码:

if (message.Attachments != null && message.Attachments.Any()) { var attachment = message.Attachments.First(); using (HttpClient httpClient = new HttpClient()) { if ((message.ChannelId.Equals("skype", StringComparison.InvariantCultureIgnoreCase) || message.ChannelId.Equals("msteams", StringComparison.InvariantCultureIgnoreCase)) && new Uri(attachment.ContentUrl).Host.EndsWith("skype.com")) { var token = await new MicrosoftAppCredentials().GetTokenAsync(); httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token); } var responseMessage = await httpClient.GetAsync(attachment.ContentUrl); var contentLenghtBytes = responseMessage.Content.Headers.ContentLength; // this is populated correctly if(attachment.Name.ToLower().Equals("opportunity.xlsx")) { var temp = attachment.Content; // This Content is always null, even though everything else is populated. } } } 

任何人都可以build议我怎样才能读取附件的xlsx内容?

谢谢

ContentContent属性中不可用。 您首先需要使用ContentUrl下载附件,然后在下载文件后使用响应消息执行任何您想要的操作。

看看接收附件 C#示例。

 public virtual async Task MessageReceivedAsync(IDialogContext context, IAwaitable<IMessageActivity> argument) { var message = await argument; if (message.Attachments != null && message.Attachments.Any()) { var attachment = message.Attachments.First(); using (HttpClient httpClient = new HttpClient()) { // Skype & MS Teams attachment URLs are secured by a JwtToken, so we need to pass the token from our bot. if ((message.ChannelId.Equals("skype", StringComparison.InvariantCultureIgnoreCase) || message.ChannelId.Equals("msteams", StringComparison.InvariantCultureIgnoreCase)) && new Uri(attachment.ContentUrl).Host.EndsWith("skype.com")) { var token = await new MicrosoftAppCredentials().GetTokenAsync(); httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token); } var responseMessage = await httpClient.GetAsync(attachment.ContentUrl); var contentLenghtBytes = responseMessage.Content.Headers.ContentLength; await context.PostAsync($"Attachment of {attachment.ContentType} type and size of {contentLenghtBytes} bytes received."); } } else { await context.PostAsync("Hi there! I'm a bot created to show you how I can receive message attachments, but no attachment was sent to me. Please, try again sending a new message including an attachment."); } context.Wait(this.MessageReceivedAsync); } 

如果这是你的意思,你将不得不使用其他的DLL读取Excel数据。 你的意思是阅读Excel文件的内容后,它已经被吹倒,然后你可以使用https://github.com/ExcelDataReader/ExcelDataReader