我想避免生成的电子表格包含名为" Sheet1"的空/多余工作表。等等。我想我可以通过指定工作簿应该有多少张表来做到这一点:
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);
}
...但我仍然得到了一个不受欢迎的" Sheet1"除了我创建的工作表。以下是相关代码:
{{1}}
因此,由于在Excel.Application实例中将SheetsInNewWorkbook设置为1并不能解决问题,我需要做些什么才能防止这些流浪汉表现出来?
答案 0 :(得分:3)
您的问题的答案可以在Template
方法的Workbook.Add
参数文档中找到。
[...]如果省略此参数,Microsoft Excel将创建一个新参数 带有大量空白工作表的工作簿(工作表数量设置为
SheetsInNewWorkbook
属性。)
您的代码省略了它,因此它为您创建了一个工作表(因为您已将SheetsInNewWorkbook
设置为1。
该属性也被限制在1到255之间,因此您无法在没有工作表的情况下添加工作簿(除非您使用文件模板)。
同样来自Template
参数文档:
如果此参数是常量,则新工作簿包含单个 指定的表 类型。可以是以下
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);
只需重命名单个创建的工作表。