我正在尝试创建一个具有多个工作表的工作簿,但是一旦我尝试在工作簿中添加第 6 个工作表,我就会收到 COMException。那么有什么方法可以扩展工作簿中的工作表吗?
1 回答
如果您使用循环使工作表进入循环并且不确定工作簿中有多少张工作表,那么我建议您在该工作簿中查找总工作表数,然后循环获取工作表对象
例如
int SheetCount = xlWorkBook.Sheets.Count;
将为您提供该工作簿中可在 For 循环中使用的工作表数量。
如果您需要更多工作表,则可以使用xlexcel.Worksheets.Add
来获取更多工作表。
评论的跟进:
我尝试了这种方法,是的,当我尝试从工作簿中获取超过 5 个的工作表时,它不会引发异常。但它只是将数据(我正在为第 6 张写)覆盖到第 5 张,即使我在工作簿中添加一个后尝试获取第 6 张工作表。下面的代码片段似乎返回了第 5 个工作簿中的最后一个可用工作表。m_ExcelSheet = (Excel._Worksheet)(m_ExcelSheets.get_Item(6)); 添加新工作表后如何停止覆盖第 5 个工作表中的数据?– saurabh.mridul 1 分钟前
添加工作表的语法是
expression.Add(Before, After, Count, Type)
如果您未在 中指定参数,.Add
则工作表将添加为第一个工作表。
当您在添加工作表而不指定参数后循环工作worksheets(1)
表时,您将成为您添加的最新工作表。因此,您的工作表 5(现在的工作表 6)被覆盖。
您需要指定要添加的新工作表必须添加到现有工作表的末尾。
参数说明
- Before:(可选)(数据类型:Variant)一个对象,它指定在其之前添加新工作表的工作表。
- After:(可选)(数据类型:Variant)一个对象,它指定在其后添加新工作表的工作表。
- 计数:(可选)(数据类型:变体)要添加的工作表数。默认值为一。
- 类型:(可选)(数据类型:变体)指定工作表类型。可以是以下 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);