如何在 C# 中将 excel ListObject 添加到给定工作表?

2024-05-07

我目前正在 C# 中开发一个 Excel 插件,其中包含多种方法(表值函数),可供 Excel 用户和程序员 (VBA) 使用。

如何编写一个方法,将新的 ListObject(Excel 表)添加到给定的 Excel 工作表,并将给定的 DataTable 绑定为数据源?像下面这样:

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")
{
...
}

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


经过一番研究,我找到了问题的答案,即如何在 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;
}

See 关于此代码以及 Excel 和 .net 集成的其他相关代码。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 C# 中将 excel ListObject 添加到给定工作表? 的相关文章

  • 如何将 Visual-Studio 2010 切换到 c++11

    我是 c 编程新手 我想尝试 c 11 新功能 那么我要问的是如何切换 Visual studio 2010 才能编译 c 11 源代码 你可以参考这个表 VC10 中的 C 0x 核心语言功能 表格 http blogs msdn com
  • PartialView Action 正在调用自身

    我有 MVC 应用程序 它用于从主视图 ProductMaster 将 ProductAreaGrid 列表显示为 PartialView 并且它将在局部视图内将 CreateProductArea 作为 PartialView 我的 Gr
  • 多线程 - 比单线程慢

    当我使用多个线程而不是单线程运行程序时 它会变慢 不是应该更快吗 该程序应该遍历从起始目录开始的所有目录 并查找并打印所有名为 X 的文件 代码如下 while done pthread mutex lock lock if list is
  • 从 Golang 调用 C 函数

    我想在 Golang 中编写控制器逻辑并处理 json 和数据库 同时在 C 中使用我的数学处理模型 在我看来 调用 C 函数的开销必须尽可能低 就像设置寄存器 rcx rdx rsi rdi 一样 执行一些操作fastcall 并获取 r
  • 多个线程访问一个变量

    我在正在读的一本教科书中发现了这个问题 下面也给出了解决方案 我无法理解最小值怎么可能是 2 为什么一个线程不能读取 0 而所有其他线程都执行并写入 1 而无论是1还是2 最后写入的线程仍然必须完成自己的循环 int n 0 int mai
  • 查询从同一表中的另一条记录获取值并按大于间隙阈值的差异进行过滤

    我将数据导入到 MS Access 中的临时表中 如下所示 我添加了需要使用 SQL 查询计算的 Gap 和 Previous Current 列 间隙阈值 是用户输入或范围提供给查询和例如是 300 GlobalID 对 ItemID 进
  • 如果我重新分配并且新大小为 0,会发生什么情况。这与释放等效吗?

    给出以下代码 int a NULL a calloc 1 sizeof a printf d n a a realloc a 0 printf d n a return 0 它返回 4078904 0 这个 realloc 相当于 free
  • 确定相关词的编程方式?

    使用网络服务或软件库 我希望能够识别与词根相关的单词 例如 座位 和 安全带 共享词根 座位 但 西雅图 不会被视为匹配 简单的字符串比较对于这类事情似乎是不可行的 除了定义我自己的字典之外 是否有任何库或 Web 服务不仅可以返回单词定义
  • List 或其他类型上的 string.Join

    我想将整数数组或列表转换为逗号分隔的字符串 如下所示 string myFunction List
  • 检测笔记本电脑盖子的关闭和打开

    是否可以检测笔记本电脑的盖子何时打开或关闭 从我读到的内容来看 这是不可能的 但 SO 之前已经帮助我完成了不可能的任务 我发现唯一可能朝着正确方向的事情是关于报告电源按钮所需的 IOCTL 的 MSDN 博客文章 https learn
  • 如何在 ASP.NET Core 项目中使用 MStest 测试 Ok() 结果

    我正在使用 MStest 来测试我的控制器 我想测试这个动作 HttpGet Name GetGroups public async Task
  • 动态菜单创建IoC

    我想知道是否有人知道我如何创建如何使用 AutoFac 之类的东西来让我动态地允许 dll 创建自己的表单和菜单项以在运行时调用它们 所以如果我有一个 员工 dll 新入门表格 证书表格 供应商 dll 供应商详细信息来自 产品形态 在我的
  • 如何使 WinForms UserControl 填充其容器的大小

    我正在尝试创建一个多布局主屏幕应用程序 我在顶部有一些按钮链接到应用程序的主要部分 例如模型中每个实体的管理窗口 单击这些按钮中的任何一个都会在面板中显示关联的用户控件 面板包含用户控件 而用户控件又包含用户界面 WinForms User
  • 在 C# 窗口应用程序中运行 C/C++ 控制台应用程序?

    现在 我想开发一个简单的应用程序 因此我决定最快的编码方式是 C NET 但现在 我很难实现我需要的功能之一 我想做的是在 C 应用程序的窗口内运行 C C 控制台应用程序 就像在虚幻前端中一样 添加一点通信方式 以便我可以为控制台应用程序
  • 如何使用“路径”查询 XDocument?

    我想查询一个XDocument给定路径的对象 例如 path to element I want 但我不知道如何继续 您可以使用以下方法System Xml XPath Extensions http msdn microsoft com
  • 包含从代码隐藏 (ASP.NET C#) 到 ASPX 中的图像概述的图像列表 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • C# 和断点 - 这里有魔术师吗?

    我有这个 public static void ByLinkText string text for var i 0 i lt 50 i try Setup Driver FindElement By LinkText text Click
  • 使用 apachesoap:使用 .net 在 Web 服务中映射复杂数据类型

    我有一个用 Coldfusion 编程的 Web 服务 我试图使用 c net 来使用它 特定的 Web 服务返回一个 Coldfusion 结构 具有键和值的项目的集合 该结构由 Web 服务公开为 apachesoap Map 类型的复
  • 线程安全的有限大小队列,不使用锁

    我正在尝试编写一个主题队列 但遇到死锁和其他多线程问题 我想用Interlocked CompareExchange避免lock用法 但这段代码并没有按预期工作 它只是擦除整个队列 我在这里做错了什么 public class FixedS
  • 获取给定日期的周数

    例子 DD MM YYYY 1 1 2009 should give 1 31 1 2009 should give 5 1 2 2009 should also give 5 Format 1 2 2009 ww 回报6 那么 怎样才能得

随机推荐

  • 始终保持数据库连接打开可以吗?

    我在业余时间从事单用户桌面数据库应用程序之类的工作 并且我总是不确定我所做的设计选择 现在 就目前情况而言 每当用户想要与数据库 这是一个本地 SQLite 数据库 因此通常只有一个用户一次看到它 交互时 应用程序就会创建一个新连接 执行它
  • 如何在 Bash 中将字符串转换为小写

    有办法进去吗bash questions tagged bash将字符串转换为小写字符串 例如 如果我有 a Hi all 我想将其转换为 hi all 有多种方法 POSIX标准 https en m wikipedia org wiki
  • AxAcroPDF - Vista64 类未注册错误

    我们有一个用 C 编写的 WinForms 应用程序 它使用 AxAcroPDFLib AxAcroPDF 组件来加载和打印 PDF 文件 在 Windows XP 下一直运行没有任何问题 我已将开发环境移至 Vista 64 位 现在除非
  • flutter 检测 url 并显示预览

    我正在尝试制作一个类似于 wats app 的链接预览功能 它有两个部分 从文本字段检测 URL 显示该 URL 的预览 第 2 部分有很多插件可以显示预览 但我一直坚持第 1 部分 即如何检测和解析用户在文本字段中输入的 URL 还有一个
  • VB.NET 中的自动递增文本框

    单击按钮后如何增加文本框内容 将其放在按钮单击事件中 Dim int As Integer Integer TryParse TextBox1 Text int TextBox1 Text int 1
  • Enzyme 和 React 路由器:如何使用 useHistory 浅层渲染组件

    我一直在尝试用以下方式渲染组件shallow 由enzyme 该组件正在使用useHistory from react router dom const baseMatch match lt id string gt path url pa
  • 如何实现复杂的sql命令

    我在 MySQL 中有一个 sql 表 其中包含以下记录 user dob john 1 10 96 jane 3 4 97 jill 1 8 96 jack 2 9 00 jane 12 14 07 john 1 11 98 这是我要执行
  • 为什么 HttpClient 使套接字保持打开状态?

    在创建 使用和处置多个 HttpClient 时 我注意到有套接字处于 TIME WAIT 状态 例如 运行以下命令后 using System Net Http namespace HttpClientTest public class
  • 使用在 Linux 上运行的 .NET Core 时连接到 MongoDB 失败

    我正在使用 ASP NET Core 2 0 构建一个网站 一个月前刚刚从 1 1 升级 MongoDB 也由 Mongo Atlas 在 AWS 上托管 这个 MongoDB 实例有 3 个副本集 需要 SSL 进行连接 并且已经设置可以
  • 计算行的排名

    我想根据一个字段对用户 ID 进行排名 对于相同的字段值 排名应该相同 该数据位于 Hive 表中 e g user value a 5 b 10 c 5 d 6 Rank a 1 c 1 d 3 b 4 我怎样才能做到这一点 可以使用ra
  • Django ModelForm 不将数据保存到数据库

    Django 初学者在使用表单时遇到很多困难 是的 我已经完成了本教程并浏览了很多网络 我所拥有的是我在这里和其他网站上找到的内容的混合体 我正在使用 Python 2 7 和 Django 1 5 虽然官方文档很广泛 但它往往假设您已经了
  • 为什么 const int x = 5;不是C中的常量表达式吗?

    本以为C不会再给我带来惊喜了 但这却让我大吃一惊 const int NUM FOO 5 int foo NUM FOO gt error C2057 expected constant expression 我的 C 经验让我内心不赞成
  • 在java中使用朴素贝叶斯(weka)进行简单的文本分类

    我尝试在我的java代码中使用朴素贝叶斯weka库进行文本分类 但我认为分类的结果不正确 我不知道问题是什么 我使用 arff 文件作为输入 这是我的训练数据 relation hamspam attribute text string a
  • ALGOL 曾经用于“主流”编程吗? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我知道ALGOL http en wikipedia org wiki ALGOL作为一种理论语言 该语言非常重要 并且根据维基百科 它也
  • 至少一个对象必须实现 IComparable

    var listair empcon OrderBy x gt x CustomerConnection OrderBy y gt y Id ToList 当我使用此语句时 我收到异常 至少一个对象必须实现 IComparable 我怎么解
  • 让“git pull”在拉取不同分支时要求确认

    当同时处理许多项目和分支时 我偶尔会犯一些愚蠢的错误 比如拉入错误的分支 例如在分支上master I did git pull origin dangerous code并且有一段时间没有注意到这一点 这个小错误造成了很大的混乱 当我尝试
  • .net 4.5.1 ASP.NET MVC 5 中的用户锁定

    因此 在新的 Net Framework 4 5 1 AspNetUser 表中没有用于在有限次数的不成功尝试后将用户锁定的列 是否有为此目的构建的框架或解决方案来取代以前的 net 框架中曾经存在的功能 还是我必须自己构建 在即将发布的
  • 如何使用 Windows forfiles 命令的完整路径运行命令?

    我正在尝试运行以下命令 forfiles p Schemas m xsd c cmd c C Program Files x86 Microsoft SDKs Windows v10 0A bin NETFX 4 6 1 Tools xsd
  • 如何在 AWS Elastic Beanstalk 上配置 WSGI 应用程序的名称?

    我的 Python Web 应用程序称为app example py import flask app flask Flask name split 0 当我尝试使用 AWS EB 启动它时 run py set correctly wit
  • 如何在 C# 中将 excel ListObject 添加到给定工作表?

    我目前正在 C 中开发一个 Excel 插件 其中包含多种方法 表值函数 可供 Excel 用户和程序员 VBA 使用 如何编写一个方法 将新的 ListObject Excel 表 添加到给定的 Excel 工作表 并将给定的 DataT