3

9つのデータテーブルを含むDataSetを返すレポートを実行するC#Webアプリでソリューションを作成しました。

テーブルは多対多の関係でリンクされており、レポートの目的は、任意の時点のテーブルに含まれるレコードの進行状況のスナップショットを作成することです。

これは、9つのテーブルすべてが一度にクエリされることを示します。これは、異なる時間にテーブルを個別にクエリすると、結果がテーブル間で一致しないことを意味するためです。

9つのcsvファイルをzipファイルで返していましたが、これは開発で正常に機能しました。しかし、私が働いている組織では、多くのユーザーのマシンが非常に限られており、winzipやその他のアーカイブソフトウェアを備えているとは言えません。そのため、別の解決策を見つけるように言われました。

これまでのところ、私が直面した問題は次のとおりです。

  1. 9つのデータテーブルはすべて同じクエリから生成する必要があります。これにより、テーブルが1日の異なる時間に実行されると結果が一致しない可能性があるため、テーブルに対してレポートを個別に実行するオプションがユーザーに与えられなくなります。

  2. ブラウザに一度に返すことができるファイルは1つだけです。これにより、解凍した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 に答える