繁体   English   中英

使用c#excel introp将多个工作表添加到工作簿中时,如何避免COMException?

[英]How can i avoid COMException while adding multiple worksheets into a workbook using c# excel introp ?

我正在尝试创建一个具有多个工作表的工作簿,但是当我尝试在工作簿中添加第6个工作表时,我就得到了COMException。 那么有什么方法可以扩展工作簿中的工作表? 在此处输入图片说明

如果您使用循环将工作表放入一个循环中,但不确定该工作簿中有多少张工作表,则建议您在该工作簿中查找工作表总数,然后循环获取该工作表对象

例如

int SheetCount = xlWorkBook.Sheets.Count;

将为您提供该工作簿中可在For Loop中使用的工作表数。

如果需要更多的工作表,则可以使用xlexcel.Worksheets.Add获得更多的工作表。

评论的后续行动:

我尝试了这种方法,是的,当我尝试从工作簿中获取超过5个工作表时,它不会引发异常。 但这只是将数据(我正在为第六张纸写的数据)覆盖到第五张纸,即使我在工作簿中添加一个后试图得到第六张工作纸也是如此。 似乎下面的代码片段返回了工作簿中的第五个可用工作表。 m_ExcelSheet =(Excel._Worksheet)(m_ExcelSheets.get_Item(6)); 添加新工作表后,如何停止覆盖第五个工作表中的数据? – saurabh.mridul 1分钟前

添加工作表的语法是

 expression.Add(Before, After, Count, Type)

如果未在.Add指定参数,则该工作表将被添加为第一个工作表。

当您在未指定参数的情况下在添加工作表之后浏览工作表时,您的worksheets(1)将成为您添加的最新工作表。 因此,您的工作表5(现在为工作表6)将被覆盖。

您需要指定要添加的新工作表必须添加到现有工作表的末尾。

参数说明

  1. Before :(可选)(数据类型:Variant)一个对象,该对象指定要在其之前添加新图纸的图纸。
  2. After :(可选)(数据类型:Variant)一个对象,该对象指定要在其后添加新图纸的图纸。
  3. 计数 :(可选)(数据类型:变量)要添加的页数。 默认值为一。
  4. 类型 :(可选)(数据类型:变量)指定图纸类型。 可以是以下XlSheetType常量之一:xlWorksheet,xlChart,xlExcel4MacroSheet或xlExcel4IntlMacroSheet。 如果要基于现有模板插入图纸,请指定模板的路径。 默认值为xlWorksheet。

这是一个有关如何在最后添加工作表的示例。

//~~> Add a new worksheet at the end of the worksheets
xlWorkSheet = xlWorkBook.Sheets.Add(Type.Missing, xlWorkBook.Sheets[xlWorkBook.Sheets.Count], Type.Missing, Type.Missing);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM