【问题标题】:VSTO: Don't include column headerVSTO:不包括列标题
【发布时间】:2017-04-01 04:09:14
【问题描述】:

我正在使用 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);
        }
    }

但是当数据显示出来时,它会包含一个空单元格:

如何完全避免使用该列标题?

【问题讨论】:

    标签: c# excel vsto listobject


    【解决方案1】:

    Excel中ListObjectHeaders恐怕无法删除。您可以做的是将ListObject 转换为Range,然后删除第一行。

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

    【讨论】:

    • 对,c#中第一行的索引是0
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-19
    相关资源
    最近更新 更多