1

生成されたスプレッドシートに「Sheet1」などの名前の空の/余分なシートが含まれないようにしたい。ワークブックに必要なシート数を次のように指定することで、それができると思いました。

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

...しかし、作成したシートに加えて、不要な「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 に設定してもうまくいかないので、これらのトランプ シートが表示されないようにするにはどうすればよいでしょうか?

4

1 に答える 1

3

あなたの質問に対する答えは、メソッドのTemplateパラメーターのドキュメントにあります。Workbook.Add

[...] この引数を省略すると、Microsoft Excel は多数の空白シート (シートの数はSheetsInNewWorkbookプロパティによって設定されます) を含む新しいワークブックを作成します。

あなたのコードはそれを省略しているため、単一のワークシートを作成しています(SheetsInNewWorkbook1に設定したため.

このプロパティも 1 ~ 255 の範囲に制限されているため、シートのないワーク ブックを追加することはできません (ファイル テンプレートを使用しない限り)。

Templateパラメータのドキュメントからも:

この引数が定数の場合、新しいブックには、指定された種類の1 つの シートが含まれます。Microsoft.Office.Interop.Excel.XlWBATemplate 次の定数のいずれかを指定できます: xlWBATChartxlWBATExcel4IntlMacroSheetxlWBATExcel4MacroSheet、または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);

作成された単一のシートの名前を変更するだけです。

于 2015-12-15T23:33:15.633 に答える