c# - 保存工作簿时无法访问已关闭的文件
问题描述
我正在尝试使用 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);
}
}
}
然后在尝试将工作簿保存到流 (workbook.SaveToStream()) 时出现错误。
我知道在 system.web 部分的 web.config 中添加了以下代码之前已经提出了这个问题,但仍然出现错误。
<httpRuntime executionTimeout="90" maxRequestLength="20000" useFullyQualifiedRedirectUrl="false"
requestLengthDiskThreshold="8192"/>
非常感谢任何帮助。
解决方案
根据你在评论中所说的。我确定您在调用相关方法之前会处理流。
因此,您应该检查方法调用之前的代码,确保在调用方法之前它不会释放或关闭流。
有关处置的更多信息:https ://www.dotnetperls.com/using
推荐阅读
- python - 如何从课堂外导入变量?
- excel - Excel VBA 返回“编译错误:预期:表达式”
- css - CSS Grid 在网格区域中居中图像
- jenkins - 如何在多分支管道中进行干净的 SVN 签出/更新
- node.js - 在 node.js 中将流转换为字符串
- php - 如何使用引导行类为卡片创建 3 列
- python - Django - 如何重新渲染页面以根据表单的字段显示数据?
- javascript - 从服务器加载的js文件不起作用,但在本地加载的工作
- sql - 如何重命名透视查询中的列
- javascript - 在 HTML 画布 (jsketcher2D) 中添加图片并将其保留在背面