将数据集输出为.csv文件的集合.zip不是选项C#

将数据集输出为.csv文件的集合.zip不是选项C#,c#,file-io,zip,C#,File Io,Zip,我在一个C#web应用程序中生成了一个解决方案,它运行一个报告,返回一个包含9个数据表的数据集 这些表通过多对多关系链接,报告的目的是为任何时间点的表中包含的记录生成进度快照 这意味着同时查询所有9个表,因为在不同时间单独查询这些表将意味着表之间的结果不匹配 我以zip文件的形式返回了9个csv文件,在开发过程中效果很好。然而,在我工作的组织中,许多用户的机器非常有限,我们不能指望他们有winzip或其他一些存档软件,因此我被告知要找到替代解决方案 到目前为止,我遇到的问题是: 所有9个数据表都

我在一个C#web应用程序中生成了一个解决方案,它运行一个报告,返回一个包含9个数据表的数据集

这些表通过多对多关系链接,报告的目的是为任何时间点的表中包含的记录生成进度快照

这意味着同时查询所有9个表,因为在不同时间单独查询这些表将意味着表之间的结果不匹配

我以zip文件的形式返回了9个csv文件,在开发过程中效果很好。然而,在我工作的组织中,许多用户的机器非常有限,我们不能指望他们有winzip或其他一些存档软件,因此我被告知要找到替代解决方案

到目前为止,我遇到的问题是:

  • 所有9个数据表都必须由同一个查询生成,这就排除了向用户提供针对表单独运行报告的选项的可能性,因为如果在一天中的不同时间运行,结果可能不匹配

  • 我一次只能向浏览器返回一个文件,这会阻止我返回解压缩的csv文件集合

  • 我确实考虑过将数据作为excel工作簿上的单独选项卡返回,但是有些结果有前导零,当它们加载到工作表中时会被删除


  • 如果有人知道我缺少的一个明显的解决方案,那就太好了。

    使用DotNetZip,您可以像这样压缩和解压文件:

    using Ionic.Zip;
    
    namespace ConsoleApplication23
    {
        class Program
        {
            static void Main(string[] args)
            {
                //Zip your files like so
                ZipFile x = new ZipFile();
                x.AddFile(@"C:\myFile");
                x.AddFile(@"C:\mySecondFile");
                x.Save(@"c:\myZipFile.zip");
    
                //Unzip like so
                ZipFile y = ZipFile.Read(@"c:\myZipFile.zip");
    
                foreach (ZipEntry e in y)
                {
                    e.Extract(@"c:\test", ExtractExistingFileAction.OverwriteSilently);
                }
            }
        }
    }
    

    有些计算机运行的Windows操作系统是否比XP旧?所有>=XP的Windows计算机都可以处理ZIP文件否,但有一些本地限制显然禁用了ZIP。您在使用数据库吗?如何在每次运行报表时创建一条记录,并将每个报表的数据存储在数据库中。然后可以选择任何现有报告,并将链接到该报告的每个表中的数据作为CSV文件单独下载。通过这种方式,所选报告的所有文件都将同步。感谢WraithNath,我希望避免尝试在所有用户之间管理类似的内容,多次运行报告等,但我的选项非常有限!谢谢这个JMK。如果我理解正确,这将直接将zip文件保存到用户C:\drive?如果是这样的话,如果没有存档软件,他们将如何解压呢?我想知道是否有可能按照您在这里所说的做,然后使用类似DotNetZip的东西来解压C:\驱动器上的.zip文件?我会研究一下itAh好的,我是在假设您不想使用任何第三方库的情况下工作的,如果不想,那么DotNetZip会让这变得更容易!对不起,我没有说清楚,我们的项目中已经有了对DotNetZip的引用,我可以在这个场景中使用它。我已经更新了我的答案,你可以在你的.Net程序中完全压缩和解压文件,不管用户计算机上有什么限制,只要允许他们运行您的程序,并对您正在使用的目录具有读/写访问权限