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

时间:2012-07-26 09:01:21

标签: c# file-io zip

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

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

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

我在一个zip文件中返回9个csv文件,这在开发中运行良好。但是,在我为许多用户的机器工作的组织中,我们不能依赖他们使用winzip或其他一些归档软件,因此我被告知要找到替代解决方案。

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

  1. 所有9个数据表必须从同一个查询生成,这样可以为用户提供单独运行报表的选项,因为如果它们在一天中的不同时间运行,结果可能不匹配。 / p>

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

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

  4. 如果有人知道我缺少一个明显的解决方案会很棒吗?

1 个答案:

答案 0 :(得分:1)

使用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);
            }
        }
    }
}