为什么我得到一个多余的工作表,即使我明确地设置工作表计数为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
常量之一:xlWBATChart
,xlWBATExcel4IntlMacroSheet
,xlWBATExcel4MacroSheet
或xlWBATWorksheet
。
所以另一种方法是:
_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的工作表。