NPOI - сохранение книги, созданной из файла шаблона

Я второй раз имею дело с NPOI. Я создаю книгу из файла шаблона excel, подобного этому.

        string dldir = AppDomain.CurrentDomain.BaseDirectory + "Download\\excel\\";
        string uldir = AppDomain.CurrentDomain.BaseDirectory + "Upload\\default_export_file\\";
        string filename = DateTime.Now.ToString("yyyy-M-d") + "_" + user.first_name + "_" + query.default_export_filename;

        System.IO.File.Delete(Path.Combine(dldir, filename));

        //System.IO.File.Copy(Path.Combine(uldir, query.default_export_filename), Path.Combine(dldir, filename));


        HSSFWorkbook hssfwb;
        using (FileStream file = new FileStream(Path.Combine(uldir, query.default_export_filename), FileMode.Open, FileAccess.ReadWrite))
        {
            hssfwb = new HSSFWorkbook(file);
        }

        MemoryStream mstream = new MemoryStream();
        hssfwb.Write(mstream);

        FileStream xfile = new FileStream(Path.Combine(dldir, filename), FileMode.Create, System.IO.FileAccess.Write);
        byte[] bytes = new byte[mstream.Length];
        mstream.Read(bytes, 0, (int)mstream.Length);
        xfile.Write(bytes, 0, bytes.Length);
        xfile.Close();
        mstream.Close();

Но когда я проверил созданный файл. Он ничего не содержит. Размер правильный. Но содержимое просто пробелы. И я не мог открыть его в MS Excel тоже. Я повторил и отследил код, но не могу найти, что заставляет его просто писать пробелы.

Кто-нибудь знает, почему это происходит

К вашему сведению: я использую VS 2010, ASP.Net MVC 4 и NPOI 1.2.5, установленные из галереи NuGet.


person strike_noir    schedule 18.10.2012    source источник


Ответы (1)


Как насчет этого:

MemoryStream mstream = new MemoryStream();
hssfwb.Write(mstream);

FileStream xfile = new FileStream(Path.Combine(dldir, filename), FileMode.Create, System.IO.FileAccess.Write);
byte[] bytes = new byte[mstream.Length];
mstream.Read(bytes, 0, (int)mstream.Length);
xfile.Write(bytes, 0, bytes.Length);
xfile.Close();
mstream.Close();

Изменено:

FileStream xfile = new FileStream(Path.Combine(dldir, filename), FileMode.Create, System.IO.FileAccess.Write);
hssfwb.Write(xfile);
xfile.Close();
person ChunHao Tang    schedule 18.10.2012