保存工作簿时无法访问已关闭的文件

时间:2018-05-21 11:19:37

标签: c# spreadsheet

我尝试使用SpreadsheetGear保存带有一些数据的工作簿.Below就是代码。

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())时出现错误。

我知道这个问题在代码之前和之后被问到system.web部分的web.config,但仍然出错。

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

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

根据您在评论中所说的内容。我确信在调用相关方法之前你正在处理流。

因此,您应该检查方法调用之前的代码,确保在调用方法之前它不会处理或关闭流。

有关处置的更多信息:https://www.dotnetperls.com/using