微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Excel Interop - 添加工作表并通过返回值更改名称

如何解决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 举报,一经查实,本站将立刻删除。