Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无需首先解析,即可将Excel文件转换为Json字符串_C#_Excel_Post_Json.net_Memorystream - Fatal编程技术网

C# 无需首先解析,即可将Excel文件转换为Json字符串

C# 无需首先解析,即可将Excel文件转换为Json字符串,c#,excel,post,json.net,memorystream,C#,Excel,Post,Json.net,Memorystream,好吧,这和我看到的其他帖子不同。我并不是试图首先打开一个Excel文件并将内容解析为Json对象。我试图获取该文件,并将其转换为某种类型的流对象或字节[],然后将其转换为Json,以便将其用作WebAPI的POST方法的输入参数 下面是完整的场景 我的客户将使用一个内部网站来选择一个或多个Excel文件。用户工作的工作站可能安装或未安装Excel,因此,我的所有Excel处理都必须在服务器上完成。处理Excel文件后,它们将合并到System.Data.DataTable中,并将值聚合到一个主报

好吧,这和我看到的其他帖子不同。我并不是试图首先打开一个Excel文件并将内容解析为Json对象。我试图获取该文件,并将其转换为某种类型的流对象或字节[],然后将其转换为Json,以便将其用作WebAPI的POST方法的输入参数

下面是完整的场景

我的客户将使用一个内部网站来选择一个或多个Excel文件。用户工作的工作站可能安装或未安装Excel,因此,我的所有Excel处理都必须在服务器上完成。处理Excel文件后,它们将合并到System.Data.DataTable中,并将值聚合到一个主报告中。此聚合报告需要返回到客户端系统,以便保存

我目前有这个网站在ASP.NET中使用C运行得很好。但是,我需要网站的胆量成为一个WebAPI,这样我拥有的自动化程序就可以直接调用WebAPI,并完成与仅内部网站相同的任务。这将允许此类任务的所有处理现在通过一个代码库运行,该任务大约有4个版本,它们的行为都不同,提供不同的输出

我认为这样做的方式是,从客户端将Excel文件转换为System.IO.MemoryStream对象数组,然后将整个数组序列化为Json.NET流,并将该流上载到Web服务器,然后将其反序列化回MemoryStream数组。完成后,我可以迭代数组并通过MemoryStream处理每个Excel文件


我的问题是,我不知道如何将MemoryStream[]转换为Json,然后在服务器上反序列化。

与其尝试将excel文件作为Json传递,不如让用户将文件上传到服务器,然后再从那里处理它


在JSON中,不要给出文件的内容,而是放一个指向该文件的链接。

你说的是csv文件还是实际的excel文件xlsx/openxml?你尝试了什么?你被困在哪里?我建议您阅读以下内容:Json.NET将把byte[]字节数组序列化为Base64字符串,如中所述。这就是你需要的吗?我想你可能已经一针见血了,@dbcOther选项包括和。是的,我考虑过了,但我不想在Web服务器上生成文件,即使我以后会删除它们。我们的服务器没有太多的TLC,因此执行大量的读写操作以将文件临时存储在服务器本地会随着时间的推移导致服务器不稳定。我们使用samba网络共享来帮助解决其中一些问题。将实际文件放在磁盘上也会使调试过程大大简化,因为您可以查看和测试上传的文件,而不必跟踪用户提供的示例。