C#Excel VSTO-将表添加到范围

时间:2018-11-22 20:00:01

标签: c# excel listobject excel-tables

我对C#非常陌生,我希望您能对我有所帮助。 目前,我正在研究读取sqlite3数据库文件的Excel-VSTO加载项。 查询结果存储在数组中。 我将这些数组写入指定的Excel单元格。

到目前为止,一切都很好-现在,我想创建一个超出此范围的listObject。我坚持使用我的方法:

private void build_table4(string StartCol, int StartRow, string EndCol, int RowsCount, int ColCount, Boolean show_totals, string TableStyle, string TableName, int IncludeRowsBefore)
    {

        string StartCell = StartCol + Convert.ToString(StartRow - IncludeRowsBefore);
        string EndCell = EndCol + Convert.ToString(StartRow + RowsCount);

        Microsoft.Office.Interop.Excel.Workbook xlWb = Globals.ThisAddIn.Application.ActiveWorkbook;
        Microsoft.Office.Interop.Excel.Worksheet xlWorksheet = xlWb.Sheets[1];

        //Excel.Range tableRange = (Excel.Range)xlWorksheet.Range[xlWorksheet.Cells[StartCellY, StartCellX], xlWorksheet.Cells[ToCellY, ToCellX]];
       Excel.Range tableRange = (Excel.Range)xlWorksheet.Range[StartCell, EndCell];

         Excel.ListObject list = xlWorksheet.ListObjects.Add(Excel.XlListObjectSourceType.xlSrcRange, tableRange,
                                                 Type.Missing, Excel.XlYesNoGuess.xlYes, Type.Missing);

        //list.Name = "Table";
        list.Name = TableName;
        //list.TableStyle = "TableStyleMedium2";
        list.TableStyle = TableStyle;
        //list.ShowTotals = show_totals;
        //xlWorksheet.Rows.AutoFit();
        //xlWorksheet.Columns.AutoFit();
        Excel.ListRow row = list.ListRows.AddEx(Type.Missing, Type.Missing);

        //MessageBox.Show("StartCellX:" + StartCellX + ", StartCellY:" + StartCellY + ", RowsCount:" + RowsCount + ", ColCount:" + ColCount + ", ToCellX:" + ToCellX + ", ToCellY:" + ToCellY);
    }

当我这样称呼它时:

private void button1_Click(object sender, RibbonControlEventArgs e)
    {  
        build_table4("B", 3, "H", 15, 7, false, "", "Daten", 0);
    }

我尝试了很多,但是还没有找到解决方案。 它总是会添加我没想到的另外两行,而我却找不到原因:

Before and after

我希望您对我有一些提示。提前致谢。 对不起,我的英语不好:x

0 个答案:

没有答案