[英]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)将被覆盖。
您需要指定要添加的新工作表必须添加到现有工作表的末尾。
参数说明
这是一个有关如何在最后添加工作表的示例。
//~~> 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.