如何在c#中为给定的工作表添加excel列表对象

本文关键字:工作 添加 excel 对象 列表 | 更新日期: 2023-09-27 18:19:08

我目前正在开发一个excel插件在c#与几个方法(表值函数),将提供给excel用户和程序员(VBA)。

我怎么能写一个方法添加一个新的ListObject (excel表)到给定的excel工作表,并绑定给定的数据表作为数据源?如下所示:

using Excel = Microsoft.Office.Interop.Excel;
...
[ClassInterface(ClassInterfaceType.AutoDual)]
public class TableFunctions {
...
public Excel.ListObject CreateListObject(Excel.Worksheet ws, string TableName, DataTable dt, string CellStr = "A1")
{
...
}

这种将工作表对象作为参数发送的方法显然不起作用。或者可以吗?

如何在c#中为给定的工作表添加excel列表对象

经过一番研究,我找到了我的问题的答案,如何在c#中以编程方式将ListObject (excel表)添加到工作表:

public Excel.ListObject WriteToExcelTable(Excel.Worksheet WSheet, string TableName, string CellStr = "A1", bool ClearSheetContent = false)
{
    Excel.Range range;
    if (ClearSheetContent)
        WSheet.Cells.ClearContents();  // clear sheet content
    // get upper left corner of range defined by CellStr
    range = (Excel.Range)WSheet.get_Range(CellStr).Cells[1, 1];   //
    // Write table to range
    HelperFunc.WriteTableToExcelSheet(WSheet, this._tbl, range.Address);
    // derive range for table, +1 row for table header
    range = range.get_Resize(this.RowCount + 1, this.ColumnCount);
    // add ListObject to sheet
    // ListObjects.AddEx Method 
    // http://msdn.microsoft.com/en-us/library/microsoft.office.interop.excel.listobjects.addex%28v=office.14%29.aspx
    Excel.ListObject tbl = (Excel.ListObject)WSheet.ListObjects.AddEx(
        SourceType: Excel.XlListObjectSourceType.xlSrcRange,
        Source: range,
        XlListObjectHasHeaders: Excel.XlYesNoGuess.xlYes);
    // set name of excel table
    tbl.Name = TableName;
    // return excel table (ListObject)
    return (Excel.ListObject)tbl;
}

查看我的文章关于这和其他相关的代码excel和。net集成