C#调用Excel的单变量求解时 间歇性报错

SupermanZgn 2016-06-12 03:26:52
功能描述:
用C#调用Excel的“单变量求解”功能,返回计算后的值。
服务器环境:
Windows Server2012R2 , Office2013
调用代码:
Microsoft.Office.Interop.Excel.Application excelApplication = new Microsoft.Office.Interop.Excel.Application();
string newPath = string.Format(@"D:\ExcelTool\测试0610.xlsm");
var workBook = excelApplication.Application.Workbooks.Add(newPath);
excelApplication.DisplayAlerts = false;
excelApplication.AlertBeforeOverwriting = false;
excelApplication.Visible = false;
var sheet = (Worksheet)workBook.Sheets["Sheet1"];
//单元格赋值
sheet.Cells[3, 2] = B3;
sheet.Cells[3, 3] = C3;
sheet.Cells[3, 4] = D3;
sheet.Cells[3, 5] = E3;
sheet.Cells[3, 6] = F3;
sheet.Cells[3, 7] = G3;
//获取计算后的值B5
var rangeC5 = sheet.get_Range("C5", Type.Missing);
var succededB5 = rangeC5.GoalSeek(0, sheet.get_Range("B5", Type.Missing));
var xRangeB5 = sheet.get_Range("B5", Type.Missing);
double xValueB5 = Convert.ToDouble(xRangeB5.Value);

workBook.Close();
问题描述:
间歇性的报错,报错之后在一段时间内(大约10分钟)一直是报错状态,然后正常,然后不定什么时候又报错。
错误日志:
错误应用程序名称: EXCEL.EXE,版本: 15.0.4420.1017,时间戳: 0x506741b5
错误模块名称: combase.dll,版本: 6.3.9600.18202,时间戳: 0x569e6ee3
异常代码: 0xc0000005
错误偏移量: 0x000000000003a02f
错误进程 ID: 0x9940
错误应用程序启动时间: 0x01d1c44c4cef9e66
错误应用程序路径: C:\Program Files\Microsoft Office\Office15\EXCEL.EXE
错误模块路径: C:\Windows\SYSTEM32\combase.dll
...全文
356 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
SupermanZgn 2016-06-21
  • 打赏
  • 举报
回复
目前来看应该就是内存不够原因引起的,内存达到峰值的时候就报错,降下来就正常。 如果其他人遇到类似的问题,可以参考一下。
SupermanZgn 2016-06-13
  • 打赏
  • 举报
回复
引用 2 楼 xuzuning 的回复:
诱发 0xc0000005 的因素太多了:内存不够、杀毒软件.......
有没有可能是权限的原因 权限列表如下: 控制台根节点—组件服务--计算机—我的电脑—DCOM配置--Micorosoft Excel Application节点配置了这些用户: Administrators、Everyone、Guests、INTERACTIVE、ANONYMOUS LOGON、NETWORK SERVICE 并给这些用户加了所有权限。
xuzuning 2016-06-13
  • 打赏
  • 举报
回复
诱发 0xc0000005 的因素太多了:内存不够、杀毒软件.......
SupermanZgn 2016-06-13
  • 打赏
  • 举报
回复
没有搞过的么

110,499

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧