我有一个使用NPOI版本的MVC应用程序:2.1.3.0在excel文件中读写,用户可以在本地机器上下载该excel文件。文件格式:xlsx。
public ActionResult NPOI()
{
FileStream fs = new FileStream(Server.MapPath(@"\Content\SampleExcel.xlsx"), FileMode.Open, FileAccess.Read);
XSSFWorkbook templateWorkbook = new XSSFWorkbook(fs);
ISheet sheet = (ISheet)templateWorkbook.GetSheet("Sheet1");
IRow dataRow = (IRow)sheet.GetRow(1);
dataRow.GetCell(0).SetCellValue(77);
sheet.ForceFormulaRecalculation = true;
MemoryStream ms = new MemoryStream();
templateWorkbook.Write(ms);
return File(ms.ToArray(), "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "SampleExcel.xlsx");
}
在excel文件中写入工作正常。但是当浏览器是用户机器中的IE和excel 2013时。
如果下载完成后用户使用IE打开(预览文件)选项:
然后在excel 2013中观察到此错误:
其次是:
虽然服务器端的模板文件(SampleExcel.xlsx)已打开并与excel 2013一起保存。然后我也不知道为什么显示文件已损坏。用户机器上有足够的内存,它永远不会触及任务管理器中的峰值。 任何帮助都将受到高度赞赏。
答案 0 :(得分:0)
我想通了,实际上问题不在于内存,而在于该特定计算机的用户权限。如果管理员尝试执行相同的上述步骤而没有访问自定义,那么他就不会遇到任何问题。
无论如何,感谢大家的时间:)