2011-11-09 11 views
9

私はC#COM interopでExcelファイルを作成しようとしていますが、デフォルトでは空ではなく3枚、または1枚しか作成していないようです。C#デフォルトで1枚のExcelブックを作成

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); 
+2

:ここではコードです。 Excelを開いて新しい文書を作成すると、3つのシートがあります。シート2と3を削除する必要があるかもしれません。 –

+0

また、簡単で手軽に使えるライブラリNPOI http://code.google.com/p/npoi/で、手軽に基本的な機能から中間的な機能まで幅広い柔軟性を得ることができます。 Office 2010以降で出力を開く必要がある場合は、OpenXMLも検討できます。 COM Interopは、無人の非対話型クライアントアプリケーションで多くの問題を引き起こす可能性があります。このhttp://support.microsoft.com/kb/257757を参照してください –

答えて

20

Workbooks.Add MethodのMSDNの説明を見てみましょう:空か一つだけでそれを作成するために必要なもの 。あなたは、私が先に行って、これを検証した0または1

xl.SheetsInNewWorkbookプロパティを設定することができるかどうか試してみてくださいWorkbooks.Add(XlWBATemplate.xlWBATWorksheet)

  1. 、または
  2. を参照してください。私は、これはExcelのデフォルトの動作だと思う

    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)); 
    
         } 
        } 
    } 
    
+3

私はオプション2を使用しました: "xl.SheetsInNewWorkbook = 1"とそれは問題を解決します。 – Moti

+0

@モティ、喜んで助けてください。あなたの新しいことをここで見て、答えが正しい場合、答えを受け入れることが慣例です(チェックマークを確認してください)。さらに、有益な回答を投票することもできます(上矢印)。 :) – Matt

+0

私は少なくとも8時間質問に答えることができないようです」•評判が100未満のユーザーは、質問後8時間は自分の質問に答えることができず、7時間で自己回答することができます。それまでは、コメントを使用するか、代わりに質問を編集してください。 " – Moti

2
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)); 
関連する問題