我在C#Web应用程序中生成了一个解决方案,该应用程序运行报告,该报告返回包含9个数据表的DataSet。
这些表与多对多关系链接,报告的目的是为任何时间点生成表中包含的记录进度的快照。
这表明一次查询所有9个表,因为在不同时间单独查询表将意味着表之间的结果不匹配。
我在一个zip文件中返回9个csv文件,这在开发中运行良好。但是,在我为许多用户的机器工作的组织中,我们不能依赖他们使用winzip或其他一些归档软件,因此我被告知要找到替代解决方案。
到目前为止,我遇到的问题是:
所有9个数据表必须从同一个查询生成,这样可以为用户提供单独运行报表的选项,因为如果它们在一天中的不同时间运行,结果可能不匹配。 / p>
我一次只能向浏览器返回一个文件,这会阻止我返回解压缩的csv文件集。
我确实考虑过将数据作为excel工作簿上的单独选项卡返回,但是有些结果有前导零,当它们加载到工作表中时会被删除。
如果有人知道我缺少一个明显的解决方案会很棒吗?
答案 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);
}
}
}
}