3

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

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

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

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

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

  1. 所有 9 个数据表必须由同一个查询生成,这排除了让用户选择单独针对表运行报告的选项,因为如果它们在一天中的不同时间运行,结果可能不匹配。

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

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

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

4

1 回答 1

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);
            }
        }
    }
}
于 2012-07-26T09:22:21.060 回答