为什么我得到一个多余的工作表,即使我明确地设置工作表计数为1?

我想避免生成名为“Sheet1”的空白/多余的工作表。 我以为我可以通过指定工作簿应该有多less张工作表来这样做:

_xlApp = new Excel.Application { SheetsInNewWorkbook = 1 }; 

…但我仍然得到一个不需要的“Sheet1”,除了我创build的工作表。 这是相关的代码:

 using Excel = Microsoft.Office.Interop.Excel; . . . private Excel.Application _xlApp; private Excel.Workbook _xlBook; private Excel.Sheets _xlSheets; private Excel.Worksheet _xlSheet; . . . private void InitializeSheet() { _xlApp = new Excel.Application { SheetsInNewWorkbook = 1 }; _xlBook = _xlApp.Workbooks.Add(Type.Missing); _xlBook.Worksheets.Add(Type.Missing, Type.Missing, Type.Missing, Type.Missing); _xlSheets = _xlBook.Worksheets; _xlSheet = (Excel.Worksheet)_xlSheets.Item[1]; _xlSheet.Name = String.Format("Price Compliance {0} {1}", _month, _year); } 

所以,因为在Excel.Application实例中将SheetsInNewWorkbook设置为1并不能解决问题,所以我需要做些什么来防止这些stream行单显示出来?

您的问题的答案可以在Workbook.Add方法的Template参数的文档中find。

[…]如果省略此参数,Microsoft Excel将创build一个带有大量空白工作表的新工作簿(工作表数由SheetsInNewWorkbook属性设置)。

您的代码省略了它,因此它正在为您创build单个工作表(因为您已将SheetsInNewWorkbook设置为1。

该属性也被限制在1到255之间,所以你不能在没有工作表的情况下添加工作簿(除非使用文件模板)。

另外从Template参数文档:

如果此参数是一个常量,则新工作簿将包含指定types的单个工作 。 可以是以下Microsoft.Office.Interop.Excel.XlWBATemplate常量之一: xlWBATChartxlWBATExcel4IntlMacroSheetxlWBATExcel4MacroSheetxlWBATWorksheet

所以另一种方法是:

 _xlApp = new Excel.Application(); _xlBook = _xlApp.Workbooks.Add(Excel.XlWBATemplate.xlWBATWorksheet); _xlSheets = _xlBook.Worksheets; _xlSheet = (Excel.Worksheet)_xlSheets.Item[1]; _xlSheet.Name = String.Format("Price Compliance {0} {1}", _month, _year); 

这只是重命名单个创build的工作表。