如何解决Excel Interop - 添加工作表并通过返回值更改名称
我正在尝试更改通过 Add
方法创建的工作表的名称,并使用其返回值。这是由 stackoverflow 上的几个回答者建议的。但它不起作用并给出错误代码为 0x800401A8
的 COMException。其他两种方法工作正常。有人能告诉我为什么第一种方法不起作用吗?
代码:
Application excel = new Application();
Workbook wb = excel.Workbooks.Open(fileInfo.FullName);
// Creates a new worksheet,chart,or macro sheet. The new worksheet becomes the active sheet.
var sheet = wb.Sheets.Add(Before: Type.Missing,After: wb.Sheets[wb.Sheets.Count],Count: 1,Type: XlSheetType.xlWorksheet);
try
{
((Worksheet)sheet).Name = "ASDF";
} catch(COMException e)
{
Trace.WriteLine($"Fail 1 - 0x{e.ErrorCode:X}");
}
try
{
((Worksheet)wb.ActiveSheet).Name = "ASDF";
} catch(COMException e)
{
Trace.WriteLine($"Fail 2 - 0x{e.ErrorCode:X}");
}
try
{
((Worksheet) wb.Sheets[wb.Sheets.Count]).Name = "ASDF";
} catch (COMException e)
{
Trace.WriteLine($"Fail 3 - 0x{e.ErrorCode:X}");
}
跟踪输出:
Fail 1 - 0x800401A8
异常详情:
threw an exception of type 'System.Runtime.InteropServices.COMException'
Data: {System.Collections.ListDictionaryInternal}
ErrorCode: -2147221080
HResult: -2147221080
HelpLink: null
InnerException: null
Message: "0x800401A8"
Source: "Testfall-Manager"
StackTrace: " at Microsoft.Office.Interop.Excel._Worksheet.set_Name(String RHS)"
TargetSite: {Void set_Name(System.String)}
解决方法
这是excel文件本身。以上方法适用于空的 excel 文件 (xlsx)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。