工作表上的结果:0x800A03EC
本文关键字:0x800A03EC 结果 工作 | 更新日期: 2023-09-27 18:05:49
我在工作表上得到HRESULT: 0x800A03EC。范围的方法。行数大于70K。Office 2007 .
代码:Microsoft.Office.Interop.Excel.Range neededRange
= currentWS.Range[cell.Cells[1, 1], cell.Cells[nRowCount, nColumnCount]];
这里我的行数大于65530。在这个函数上中断。我观察到,只有当行数超过65530时,它才会中断。
如果使用向后兼容的工作表(.xls)而不是。xlsx
要允许在office 2007版本中打开工作表,它不能包含超过65000行。您可以使用ctrl+向下箭头键来检查工作表中的行数,直到到达底部。如果您尝试获得一个大于该行数的范围,它将创建一个错误
我们收到的是相同的。例外是
带有 内部异常的Stacktrace: at Microsoft.Office.Interop.Excel._Workbook。保存(对象文件名,对象文件格式,对象密码,对象WriteResPassword,对象ReadOnlyRecommended, Object CreateBackup, XlSaveAsAccessMode AccessMode, Object ConflictResolution, Object AddToMru, Object TextCodepage, Object Text可视化布局,对象本地)'
Exception from HRESULT: 0x800A03EC 2012-11-01 10:37:59 '
我们能够解决这个问题的信息从这篇文章,我引用在这里为方便…
- 以管理员身份登录服务器。
- 点击"开始"->"运行",输入"taskmgr"
- 转到任务管理器中的进程选项卡,选中"显示所有进程"用户"
- 如果列表中有"Excel.exe"条目,右键单击输入并选择"结束进程"
- 关闭任务管理器
- 点击"开始"->"运行",输入"services.msc"
- 停止正在运行的Excel自动化服务
- 点击"开始"->"运行",输入"dcomcnfg" 这将调出组件服务窗口,展开"控制台"Root"->"Computers"->"DCOM Config"
- 在组件列表中找到"Microsoft Excel Application"
- 右键单击条目,选择"属性" 进入属性对话框的"身份"选项卡。
- 选择"交互用户"。
- 点击"OK"按钮。
- 切换到服务控制台
- 启动Excel自动化服务
- 重新测试应用程序
我遇到这个问题。
发现在我代码的某个地方,我要求它从0开始计数(就像你在c#代码中那样)。
显示Excel计数从1开始。
查看上面的各种响应,并根据我自己最近的经验(我在做完全不相关的事情时得到了这个错误代码——设置Application.Calculation
),我得出结论,相同的错误代码用于表示多个不相关的问题。所以@Garreh你可能应该问一个新的问题(并不是说任何人都能仅仅根据错误代码提供帮助)。我从c#中看到了同样的事情,在Word互操作中,相同的HRESULT
似乎用于几乎所有类型的错误。我从来没有找到任何令人满意的微软文档来说明这些代码的含义。
如果要保存的分区上没有空间,也可能会出现这种情况。
我检查了我的高清,发现它是最大的。将一些不需要的文件移动到另一个分区解决了我的问题。
简单地说,excel文件损坏了。最好的解决方案是更改/修复文件。(复制现有文件并重新命名)
我不明白这个问题。但有件事解决了我的问题。
进入Excel选项>保存>以此格式保存文件>选择"Excel Workbook(*.xlsx)"。以前,我的工作簿以[兼容模式]打开,现在它们以正常模式打开。Range函数也可以。
仅供参考,得到错误尝试应用行样式....
wSheet.Rows(y).Style = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Red)
无法回复/认可这个答案,所以在这里发布:
实际上,当数据从一个范围移动到另一个范围时,源/目标范围的格式也可能导致此错误。
在我的例子中,我想要复制的区域包含一个日期格式的列,并且该列包含一个具有无效日期值的单元格(由于其值为负整数,因此它甚至没有格式化)。因此,两个区域之间的复制操作在上述单元格处停止,从而产生这里讨论的错误消息。
在我的情况下,解决方案是使用Range。Value2而不是Range。值,这会导致Excel绕过将单元格格式化为日期(此处有更多详细信息)。但是,这将使日期和时间列显示为整数和小数。但是,如果通过设置日期和时间值的Range/Column/Cell,知道在哪里可以得到日期和时间值,则可以将格式更改为所需的格式。NumberFormat属性。
这不是直接回答问题,但我在打开xlsx文件时得到这个错误。问题是我在文件路径中使用了正斜杠。参见https://stackoverflow.com/a/24635904/5932003。它曾经在以前版本的Excel中工作,但不能与版本1711 (Build 8730.2127)。
我能够使用IDispatch->Invoke(…)诊断问题。, except info,…)。EXCEPINFO对象包含了一个有用的错误描述。我是在c++领域,但我怀疑类似于这篇文章的c#代码会做到这一点:在c#中打包IDispatch调用参数(使用disparams)。
在试图保存VS 2017中。net应用程序中创建的Excel文件时,我收到此错误代码0x800A03EC。我换了Excel。应用程序对象属性Visible=True,并让它运行到故障点。试图在Excel中手动完成步骤,然后发现我无法保存文件,因为缺少文件夹权限。我给文件夹添加了写权限,错误消失了。
对于像我这样有同样例外的人:
如果您试图传递空值而不是Missing,也可能发生这种情况。值(或类型缺失)
。
Worksheet worksheet = ...;
return worksheet.Range["A1", null]; //This call generates the error 0x800A03EC
return worksheet.Range["A1", Missing.Value]; //This works correctly
在2021年,当我得到这个问题。实际原因是:
对于Excel区域或单元格,我试图直接添加/删除注释,而不检查是否有注释绑定。
错误码为:
if ( comments_string.Length != 0)
{ range.AddComment( comments_string);
}
工作代码为:
if ( comments_string.Length != 0)
{ if (range.Comment != null) range.Comment.Delete();
range.AddComment(comments_string);
}
编辑:这个更好!你不需要那个旧的函数,抱歉。请按以下步骤执行:
Microsoft.Office.Interop.Excel.Range neededRange = currentWS.Range["A1", ((Microsoft.Office.Interop.Excel.Range)currentWS.Cells[nRowCount, nColumnCount])];
那应该很有效。为了将来的参考,把你正在使用的相关代码放在你的问题里面。不要让别人在评论里问。我想这就是你被否决的原因。
当我试图将单元格数组分配给range.Value时,我有一个准确的代码错误。在我的情况下,这是错误的数据格式的问题。单元格的数据格式被设置为DATE,但用户犯了一个错误,将"20.02.2013"改为"20.02.0213"。Excel的COM对象拒绝输入年份"0213",并抛出了这个错误的异常。
当我在开发一个将项目内容导出到excel文件的应用程序时,我也遇到了同样的问题。
我在论坛上找不到解决我的问题的方法,然后我检查了excel的最大容量,发现下面的链接说
"工作表大小为1,048,576行乘16,384列",这是我的情况下的问题,我导出的行不止这些。详情请参阅下面的链接
http://answers.microsoft.com/en - us/office/forum/office_2013_release excel/with excel - 2013 -很多-行-如何——这contain/271264fb - 3 - ab8 4 c5b aa0d - 7095 c5ac6108
的问候
在执行以下语句时,我有相同的错误代码:
sheet.QueryTables.Add("TEXT" & Path.GetFullPath(fileName), "1:1", Type.Missing)
原因是"TEXT"后面缺少分号(;)。
正确的是:
sheet.QueryTables.Add("TEXT;" & Path.GetFullPath(fileName), "1:1", Type.Missing)
我得到这个异常,因为我输入了:
ws.get_Range("K:K").EntireColumn.AutoFit();
ws.get_Range("N:N").EntireColumn.AutoFit();
ws.get_Range("0:0").EntireColumn.AutoFit();
看到错误了吗?提示:Excel接受从1开始的索引,但不像c#那样从0开始。
我得到这个错误,因为我试图重命名一个有太多字符的工作表
我同意Hugh W的帖子"我的结论是,相同的错误代码用于表示多个不相关的问题"
其他帖子没有提到,如果工作表被锁定,这个错误经常发生。虽然我没有测试过每种情况,但如果您试图通过VSTO/Com在工作表被锁定时抛出此错误,则似乎无法在excel中执行任何操作。例如,更改任何样式artifact(字体,字体大小,颜色,下划线),更改Excel Validation,更改列宽,行高,公式
我通过使用下面的代码解决了这个问题。请不要在这些函数中使用其他参数。
mWorkBook = xlApp.Workbooks.Open(FilePath)
mWorkBook.Save();
已解决
似乎这是一个相当通用的错误为"某些东西出错"与您尝试的操作。我观察到,如果您有公式错误并将公式分配到单元格中,也会发生这种情况。如。"=信息面板()
我遇到过它几次不同的时间,每次它总是一些错误,要么复制一个选项卡名称,或者在这个当前的情况下,它只是发生了,因为我只是有一个打字错误在get_Range
中,我试图通过数字和数字而不是字母和数字来获得单元格。
把我逼疯了,因为错误指向下面几行,但我已经注释掉了"错误行"上面的所有其他表单的创建,而这一行和下面的创建都没有问题。
碰巧扫描了上面的几行,看到我把6 + lastword, C + lastrow
放在我的get_Range
语句中,当然你不能有一个以数字开头的单元格,它总是字母而不是数字。
我遇到了同样的错误。对我来说,当我试图分别设置CountIf和CountIf时,我得到了错误。
经过一些错误的尝试,我发现这是我使用多个参数的所有公式的问题。
参数分隔符";"(分号),我在excel中使用的不是我在代码中使用的正确的。如果我用"(逗号)相反,这个公式是正确使用的。注:之后在Excel中查看时,显示为";(分号)。
我的试错过程包括尝试设置一堆不同的公式,这是我最终得到的"修复"。我正在运行一个英文窗口,但我位于丹麦,我不知道是否有某种本地化涉及到我的问题。
CultureInfo.CurrentCulture.TextInfo。ListSeparator是";",这对于分隔验证器规则值是正确的。也许这就是为什么我的参数分隔符是别的东西的原因。
不管怎样;公式可能是错误的,因为您需要使用不同的参数分隔符。
我有这个相同的错误代码。结果这里的一个评论帮助了我。计数不是从0开始。被注释掉的行抛出了这个错误。
string cell = (string)range.Cells[3, 3].Value;
string QuestionID = (string)range.Cells[1, 0].Value;
这一行抛出了这个错误
我知道这是旧的,但我有同样的错误时,试图设置一个电子表格范围如下:
rngSumFormula = mxlWorksheet.Range(strFormulaRange)
有很多mxlWorksheet。Range语句,但是每次都失败。事实证明,经过大量的挖掘,我在strFormulaRange中的范围值与其他值之间的差异在于它在范围中有逗号,即B2,C2,D2: e2。在此语句之前,所有的范围值都有一个冒号,即D2:E2"
为什么这是一个问题?因为我在Windows 10中不使用逗号作为默认分隔符,而是使用管道字符(|),因为我处理许多SQL批量加载的描述字段,其中包含许多不是分隔符的逗号。一旦我把默认的分隔符改回逗号,错误就消失了。
这可能不会帮助很多人,因为我不认为分隔符的变化是很常见的,但因为这是我的解决方案,我想分享。仅供参考,您可以在这里更改Windows 10中的分隔符:
地区设置>附加日期,时间&区域设置更改日期、时间或数字格式其他设置,然后向下滚动到列表分隔符。
当我试图在Excel工作表中发布Notes列时,我得到了答案。床单不接受它。我一直得到这个错误。我还以为是某个角色之类的。如果是,我也不知道是什么。所以我在250处把它剪掉。我不知道实际的尺寸限制是多少?但是对于我在本报告中的目的来说,这并不重要:
空的我已经填上了"Missing.Value"
if (dr[c] != null && dr[c].ToString() != "")
{
string t = dr[c].ToString().Replace("'t", "").Replace("|", ":").Replace("/", "-").Replace("'n", " ").Trim();
if (t.Length > 250)
t = t.Substring(0, 250);
arr[r, c] = t;
}
当excel文件由于某种原因损坏时,也会出现这种类型的错误