如何避免使用c#excel introp将多个工作表添加到工作簿中的COMException?
我正在尝试创build一个有多个工作表的工作簿,但是我尽快尝试在工作簿中添加第6个工作表时遇到了COMException。 那么有没有办法在工作簿中扩展工作表?
如果您正在使用循环让工作表处于循环状态,并且不确定工作簿中有多less工作表,那么我会build议您在该工作簿中find总计表格计数,然后循环以获取工作表对象
例如
int SheetCount = xlWorkBook.Sheets.Count;
将为您提供在For循环中可以使用的工作簿中的工作表数量。
如果你需要更多的工作表,那么你可以使用xlexcel.Worksheets.Add
来获得更多的工作表。
后续从评论:
我试过这种方法,是的,当我试图从工作簿中获取5以上的工作表时,不会抛出exception。 但它是覆盖数据(我正在写第六张)到第五张表,即使我尝试在工作簿中添加一个后获得第六个工作表。 看起来下面的代码片段返回第五个工作簿中的最后一个可用工作表。 m_ExcelSheet =(Excel._Worksheet)(m_ExcelSheets.get_Item(6)); 添加新工作表后,如何停止在第五个工作表中覆盖数据? – saurabh.mridul 1分钟前
添加工作表的语法是
expression.Add(Before, After, Count, Type)
如果您没有在.Add
指定参数,则工作表将作为第一个工作表添加。
当您添加工作表而没有指定参数后循环工作表时,工作worksheets(1)
将成为您添加的最新工作表。 因此你的工作表5(现在工作表6)被覆盖。
您需要指定添加的新工作表必须添加到现有工作表的最后。
参数说明
- 之前 :(可选)(数据types:变体)指定添加新工作表之前的工作表的对象。
- 之后 :(可选)(数据types:变体)指定表单之后添加新工作表的对象。
- 计数 :(可选)(数据types:变体)要添加的工作页数。 默认值是1。
- types :(可选)(数据types:变体)指定表单types。 可以是以下XlSheetType常量之一:xlWorksheet,xlChart,xlExcel4MacroSheet或xlExcel4IntlMacroSheet。 如果要根据现有模板插入工作表,请指定模板的path。 默认值是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);