Невозможно получить доступ к закрытому файлу при сохранении книги - PullRequest
0 голосов
/ 21 мая 2018

Я пытаюсь сохранить книгу с некоторыми данными, используя SpreadsheetGear. Ниже приведен код для этого.

public class ExcelExporter
{
    public void Export(System.IO.Stream stream, IEnumerable<LabDataEntity> readings)
    {
        using (stream)
        {
            var workset = SpreadsheetGear.Factory.GetWorkbookSet();
            var workBook = workset.Workbooks.Add();
            var errorWorkSheet = workBook.Worksheets.Add();

            errorWorkSheet.Name = "File Errors";
            SpreadsheetGear.IRange errorCells = errorWorkSheet.Cells;
            errorWorkSheet.Cells.ShrinkToFit = true;
            errorCells[0, 1].Value = "DCP ID";
            errorCells[0, 2].Value = "DCP Name";
            errorCells[0, 3].Value = "Site ID";
            errorCells[0, 4].Value = "Site Name";

            int i = 1;
            foreach (var rdg in readings)
            {
                errorCells[i, 0].Value = rdg.DCPCode;
                errorCells[i, 1].Value = rdg.DCPName;
                errorCells[i, 2].Value = rdg.SiteID;
                errorCells[i, 3].Value = rdg.SiteName;
                i++;
            }

            workBook.SaveToStream(stream,SpreadsheetGear.FileFormat.OpenXMLWorkbook);
        }
    }
}

Cannot access closed file

Затемошибка возникает при попытке сохранить книгу в поток (workbook.SaveToStream ()).

Я знаю, что этот вопрос задавался до того, как был добавлен код ниже в файл web.config в разделе system.web, новсе еще получаю ошибку.

  <httpRuntime executionTimeout="90" maxRequestLength="20000" useFullyQualifiedRedirectUrl="false"
                 requestLengthDiskThreshold="8192"/>

Любая помощь очень ценится.

1 Ответ

0 голосов
/ 22 мая 2018

На основании того, что вы сказали в комментариях.Я уверен, что вы удаляете поток перед вызовом рассматриваемого метода.

Поэтому вам следует проверить код, который идет перед вызовом метода, убедиться, что он не удаляет или не закрывает поток до того, как метод будетзвонил.

Подробнее об утилизации: https://www.dotnetperls.com/using

...