C#COM相互運用機能を使用してExcelファイルを作成しようとしていますが、デフォルトでは空または1枚ではなく3枚で作成されているようです。空または1つだけで作成するために必要なもの:
Excel.Application xl = null;
Excel._Workbook wb = null;
// Create a new instance of Excel from scratch
xl = new Excel.Application();
xl.Visible = true;
wb = (Excel._Workbook)(xl.Workbooks.Add(Missing.Value));
wb.SaveAs(@"C:\a.xls", Excel.XlFileFormat.xlWorkbookNormal,
null, null, false, false, Excel.XlSaveAsAccessMode.xlShared,
false, false, null, null, null);
Workbooks.Addメソッド に関するMSDNの説明をご覧ください。
Workbooks.Add(XlWBATemplate.xlWBATWorksheet)
を試す、またはxl.SheetsInNewWorkbook
プロパティを0または1に設定できるかどうかを確認してください。私は先に進んでこれを確認しました。コードは次のとおりです。
using Microsoft.Office.Interop.Excel;
using System.Reflection;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Application xl = null;
_Workbook wb = null;
// Option 1
xl = new Application();
xl.Visible = true;
wb = (_Workbook)(xl.Workbooks.Add(XlWBATemplate.xlWBATWorksheet));
// Option 2
xl = new Application();
xl.SheetsInNewWorkbook = 1;
xl.Visible = true;
wb = (_Workbook)(xl.Workbooks.Add(Missing.Value));
}
}
}
Excel.Application xl = null;
Excel._Workbook wb = null;
xl = new Excel.Application();
xl.SheetsInNewWorkbook = 1;
xl.Visible = true;
wb = (_Workbook)(xl.Workbooks.Add(Missing.Value));