2

VSTO を使用してデータベースからデータを取得し、ワークシートに表示しています

ユーザーがボタンを押すと、ワークシートにデータが入力されます

問題は、データがワークシートに書き込まれると、列ヘッダーが自動的に含まれることです。この列ヘッダーは必要ありません

最初に設定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);
        }
    }

ただし、データが表示されると、空のセルが含まれます。

ここに画像の説明を入力

その列ヘッダーを完全に回避するにはどうすればよいですか?

4

1 に答える 1

2

残念HeadersながらListObject、Excel の は削除できません。できることは、をに変換してListObjectから最初の行Range削除することです。

Range rng;
rng = this.listObject.Range;
this.listObject.Unlist();
rng.Rows[0].Delete();
于 2016-11-17T15:23:16.533 に答える