给我的 excel sheet in excel 一个 tableStyle

Give a tableStyle to my excel sheet in excel

我正在使用 excel dna 在 excel 文件中显示存储过程的结果,我想为我的 header 提供 table 样式excel sheet 但我没有找到方法,我发现的例子与我的情况不同,这是我的代码,它可能会解释更多:

   public static object loadViewData(string date)
    {
        DateTime dt = DateTime.ParseExact(date, "dd/MM/yyyy", CultureInfo.InvariantCulture);
        object[,] resultFromDB = getViewDataFromDB(dt);           
        object res= ArrayResizer.displayResultInExcelFile(resultFromDB);

        return res;
    }

getViewDataFromDB returns 来自 sql 服务器的数据,displayResultInExcelFile 将数据显示到 excel 文件中,这是它的代码:

            public static object displayResultInExcelFile(object[,]array)
    {
        var caller = Excel(xlfCaller) as ExcelReference;
        if (caller == null)
            return array;

        int rows = array.GetLength(0);
        int columns = array.GetLength(1);
        if (rows == 0 || columns == 0)
            return array;

        var rowLast = caller.RowFirst + rows - 1;
        var columnLast = caller.ColumnFirst + columns - 1;
        if (rowLast > ExcelDnaUtil.ExcelLimits.MaxRows - 1 ||
         columnLast > ExcelDnaUtil.ExcelLimits.MaxColumns - 1)
        {
            return ExcelError.ExcelErrorValue;
        }

        ExcelAsyncUtil.QueueAsMacro(
            delegate
            {
                var newTarget = new ExcelReference(caller.RowFirst + 1, rowLast + 1, caller.ColumnFirst, columnLast, caller.SheetId);
                newTarget.SetValue(array);
            } );
        return array;
    }

我可以在 excel 文件中添加 table 样式吗?我想要

TableStyle = "TableStyleMedium9";

谢谢

我终于找到了如何将 table 样式添加到我的 excel sheet,

 public static object displayResultInExcelFile(object[,]array)
{
    var caller = Excel(xlfCaller) as ExcelReference;
    if (caller == null)
        return array;

    int rows = array.GetLength(0);
    int columns = array.GetLength(1);
    if (rows == 0 || columns == 0)
        return array;

    var rowLast = caller.RowFirst + rows - 1;
    var columnLast = caller.ColumnFirst + columns - 1;
    if (rowLast > ExcelDnaUtil.ExcelLimits.MaxRows - 1 ||
     columnLast > ExcelDnaUtil.ExcelLimits.MaxColumns - 1)
    {
        return ExcelError.ExcelErrorValue;
    }

    ExcelAsyncUtil.QueueAsMacro(
        delegate
        {
            var newTarget = new ExcelReference(caller.RowFirst + 1, rowLast + 1, caller.ColumnFirst, columnLast, caller.SheetId);
Microsoft.Office.Interop.Excel.Application oxl = (Microsoft.Office.Interop.Excel.Application)Marshal.GetActiveObject("Excel.Application");
            oxl.Visible = true;               
            Workbook wrkbk = oxl.ActiveWorkbook;
            string wbkname =wrkbk.Name;
            Worksheet wrksht = wrkbk.ActiveSheet ;
            string wrksheetname = oxl.ActiveSheet.Name;               
            object cell1 = wrksht.Cells[newTarget.RowFirst+1, newTarget.ColumnFirst];

            object cell2 = wrksht.Cells[newTarget.RowFirst+1
                , newTarget.ColumnLast];
            Range headerRange = wrksht.get_Range(cell1, cell2);
            wrksht.ListObjects.AddEx(XlListObjectSourceType.xlSrcRange, headerRange, Type.Missing,XlYesNoGuess.xlYes,Type.Missing).Name= "MyTableStyle";
            wrksht.ListObjects.get_Item("MyTableStyle").TableStyle = "TableStyleMedium9";

            newTarget.SetValue(array);
        } );
    return array;
}