为什么我得到一个多余的 sheet,即使我明确地将 sheet 计数设置为 1?
Why am I getting a superfluous sheet even though I'm explicitly setting sheet count to 1?
我想避免生成的传播sheets 具有 empty/superfluous sheets 命名为 "Sheet1" 等。我想我可以通过指定一个工作簿应该有多少 sheet 来做到这一点:
_xlApp = new Excel.Application { SheetsInNewWorkbook = 1 };
...但除了我创建的 sheet 之外,我仍然收到不需要的 "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);
}
因此,由于在 Excel.Application 实例中将 SheetsInNewWorkbook 设置为 1 并不能解决问题,我需要做些什么来防止这些流浪汉 sheet 出现?
您的问题的答案可以在 Workbook.Add
方法的 Template
参数的文档中找到。
[...] If this argument is omitted, Microsoft Excel creates a new
workbook with a number of blank sheets (the number of sheets is set by
the SheetsInNewWorkbook
property).
您的代码省略了它,因此它为您创建了一个作品sheet(因为您已将 SheetsInNewWorkbook
设置为 1.
属性 也被限制在 1 到 255 之间,因此您无法添加没有 sheet 的工作簿(除非您使用文件模板)。
同样来自 Template
参数文档:
If this argument is a constant, the new workbook contains a single
sheet of the specified
type. Can be one of the following Microsoft.Office.Interop.Excel.XlWBATemplate
constants: xlWBATChart
, xlWBATExcel4IntlMacroSheet
, xlWBATExcel4MacroSheet
,
or 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);
这只是重命名了创建的单曲 sheet。
我想避免生成的传播sheets 具有 empty/superfluous sheets 命名为 "Sheet1" 等。我想我可以通过指定一个工作簿应该有多少 sheet 来做到这一点:
_xlApp = new Excel.Application { SheetsInNewWorkbook = 1 };
...但除了我创建的 sheet 之外,我仍然收到不需要的 "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);
}
因此,由于在 Excel.Application 实例中将 SheetsInNewWorkbook 设置为 1 并不能解决问题,我需要做些什么来防止这些流浪汉 sheet 出现?
您的问题的答案可以在 Workbook.Add
方法的 Template
参数的文档中找到。
[...] If this argument is omitted, Microsoft Excel creates a new workbook with a number of blank sheets (the number of sheets is set by the
SheetsInNewWorkbook
property).
您的代码省略了它,因此它为您创建了一个作品sheet(因为您已将 SheetsInNewWorkbook
设置为 1.
属性 也被限制在 1 到 255 之间,因此您无法添加没有 sheet 的工作簿(除非您使用文件模板)。
同样来自 Template
参数文档:
If this argument is a constant, the new workbook contains a single sheet of the specified type. Can be one of the following
Microsoft.Office.Interop.Excel.XlWBATemplate
constants:xlWBATChart
,xlWBATExcel4IntlMacroSheet
,xlWBATExcel4MacroSheet
, orxlWBATWorksheet
.
因此,另一种方法是:
_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);
这只是重命名了创建的单曲 sheet。