相关疑难解决方法(0)

来自HRESULT的异常:0x800A03EC错误

使用以下代码运行Excel加载项时出现"HRESULT:0x800A03EC"错误:

Excel.Range rng = ActiveSheet.Cells[x, y] as Excel.Range;                
string before = rng.Value2; 
string cleanV = System.Text.RegularExpressions.Regex.Replace(before, @"\s+", "");
rng.set_Value(cleanV);
Run Code Online (Sandbox Code Playgroud)

当错误发生时,X和Y设置为1,因此不会违反Excel范围.我进行了广泛的搜索并尝试了多种设置单元格值的方法(例如,Cells [x,y],range.set_Value()),但是为什么会发生这种错误以及如何避免它.

任何帮助是极大的赞赏.

以下是例外情况:


System.Runtime.InteropServices.COMException was unhandled by user code
  HResult=-2146827284
  Message=Exception from HRESULT: 0x800A03EC
  Source=""
  ErrorCode=-2146827284
  StackTrace:
       at System.RuntimeType.ForwardCallToInvokeMember(String memberName, BindingFlags flags, Object target, Int32[] aWrapperTypes, MessageData& msgData)
       at Microsoft.Office.Interop.Excel.Range.set_Value(Object RangeValueDataType, Object value)
       at ImportValidation.ThisAddIn.removeAnySpaces(Int32 x, Int32 y) in c:\Users\dshevelev\Documents\Visual Studio 2012\Projects\ImportValidation\ImportValidation\ThisAddIn.cs:line 354
       at ImportValidation.ThisAddIn.ReadHeaders(Hashtable columnAddress) in c:\Users\dshevelev\Documents\Visual Studio 2012\Projects\ImportValidation\ImportValidation\ThisAddIn.cs:line 123
       at ImportValidation.ThisAddIn.mapColumns() in c:\Users\dshevelev\Documents\Visual Studio 2012\Projects\ImportValidation\ImportValidation\ThisAddIn.cs:line 493
       at ImportValidation.Ribbon1.button6_Click(Object …
Run Code Online (Sandbox Code Playgroud)

c# excel interop add-in exception

59
推荐指数
3
解决办法
24万
查看次数

将大型2D数组写入Excel

我正在寻找使用C#将大型2D数组写入Excel工作表。如果数组是500 x 500,那么我用来编写此代码的代码如下:

 var startCell = Worksheet.Cells[1, 1];
 var endCell = Worksheet.Cells[500, 500];
 var writeRange = (Excel.Range)Worksheet.Cells[startCell, endCell;
 writeRange.Value = myArray;
Run Code Online (Sandbox Code Playgroud)

我在这条线上有一个例外:

var endCell = Worksheet.Cells[500, 500];
Run Code Online (Sandbox Code Playgroud)

正如通过COM使用C#和Excel的任何人都可以作证,收到的错误消息几乎没有用。我认为问题在于,当我第一次创建工作表时,用于工作表的基础数据结构的大小不足以索引单元500,500。

有人知道如何达到预期的结果吗?我希望有一个简单的方法可以在创建Range之前重新调整基础数据结构的大小。

谢谢。

编辑:错误消息是:

{"Exception from HRESULT: 0x800A03EC"}
Run Code Online (Sandbox Code Playgroud)

和excel错误代码为-2146827284。

更新:在下面的注释中提供的链接暗示了在兼容模式下打开Excel工作表的问题。这似乎是问题所在。如果在运行代码之前以.xlsx或.xlsm格式保存文档,这似乎可以正常工作。我的问题是我不能期望用户每次都这样做。有没有实现这一目标的计划方式?是否只是打开文件,检查扩展名,然后根据需要将其保存为新格式的情况?

c# excel

5
推荐指数
1
解决办法
5361
查看次数

无法使用C#保存Excel文件

我正在尝试修改和保存Excel中的数据.使用下面的代码,我正在访问工作表,执行修改,然后保存文件.我无法保存文件.这是我的代码:

Application excel = new Application();
        excel.Visible=true;
        Workbook wb = (Workbook)excel.Workbooks.Open(@"C:\Users\dnyanesh.wagh\Desktop\BookExcel1.xlsx");
        Worksheet ws = (Worksheet)wb.Worksheets[1];
        ws.Cells[1, 1] = "sagar";
        ws.Cells[2, 1] = "sagar";
        ws.Cells[3, 1] = "sagar";
        wb.Save();
        wb.close();
Run Code Online (Sandbox Code Playgroud)

我收到此错误:"名为'BookExcel1.xlsx'的文件已存在于此位置.您要替换它吗?"

所以我将代码更改为:

Workbook wb = (Workbook)excel.Workbooks.Open(@"C:\Users\dnyanesh.wagh\Desktop\BookExcel1.xlsx",0, false, 5, "", "",
            false, XlPlatform.xlWindows, "", true, false,
            0, true, false, false););
Run Code Online (Sandbox Code Playgroud)

然后错误是:"BookExcel1.xlsx被user_name.open修改为只读".如果我单击"取消"按钮,我会收到上面的例外"HRESULT异常:0x800A03EC"

我也尝试过:

wb.SaveAs(@"C:\Users\dnyanesh.wagh\Desktop\BookExcel1.xlsx");
wb.Close(true,null,null);
Run Code Online (Sandbox Code Playgroud)

从那里我收到相同的错误,上面的文件显示修改.

任何人都可以告诉我如何保存文件并进行修改?

c# excel save

5
推荐指数
1
解决办法
1万
查看次数

标签 统计

c# ×3

excel ×3

add-in ×1

exception ×1

interop ×1

save ×1