2016-11-17 25 views
2

我使用VSTO從數據庫中帶來一定的數據,並在工作表VSTO:不要inlcude列標題

用戶按下一個按鈕,在工作表被用一些數據填充顯示它

問題是,當數據被寫入工作表時,它會自動包含一個列標題,我不想要這個列標題

我最初設置ListObject.ShowHeaders = false;,但它包含一個空單元格,我不想空細胞。

這是我的聲明ListObject

private void CreateListObject() 
    { 
     worksheet = (Excel.Worksheet)this.Application.ActiveWorkbook.Worksheets[1]; 

     Worksheet extendedWorksheet = Globals.Factory.GetVstoObject(worksheet); 
     Excel.Range cell = extendedWorksheet.Range["C12", "C16"];//Obtain a range 
     this.listObject = extendedWorksheet.Controls.AddListObject(cell, "Data");//Add to ListObject 
     this.listObject.AutoSetDataBoundColumnHeaders = false; 
     this.listObject.ShowAutoFilter = false; 
     this.listObject.ShowHeaders = false; //I thought this was enough 
     this.listObject.ShowTableStyleRowStripes = false; 
    } 

這是我如何填充數據

internal void DisplayData() 
    { 
     try 
     { 
      using (MyDbContext db = new MyDbContext()) 
      { 
       List<Thing> things= db.Things.ToList(); 
       CreateListObject(); 

       string[] mappedColumns = { "serialNumber" }; 
       this.listObject.SetDataBinding(things, string.Empty, mappedColumns); 
      } 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.Message); 
     } 
    } 

但是,當得到的數據顯示,它包括一個空單元格:

enter image description here

何我完全避免該列標題?

回答

2

恐怕在Excel中HeadersListObject無法刪除。你可以做的是將ListObject轉換爲Range,然後刪除的第一行。

Range rng; 
rng = this.listObject.Range; 
this.listObject.Unlist(); 
rng.Rows[0].Delete(); 
+0

謝謝,它的工作 – Tuco

+0

不客氣! – dee

+1

對,在c#中第一行的索引是'0'。 – dee