数据到Excel中的单元格?

我正在使用VSTO创建Excel加载项。 这个插件检索并显示来自sql-server的大量数据。 这很好,但后来我打算访问excel中的一些数据并以某种方式对其进行修改。 我的问题是我需要一种分类我想修改的单元格的方法。 有什么方法可以将元数据添加到单元格中,以了解它是否应该修改的单元格? 例如,为单元格添加一个属性,例如“editable_cell”,并执行诸如Excel.FindCellsWithAttribute(“editable_cell”)之类的操作来查找所需的单元格?

谢谢!


有几种方法可以做到这一点。 我不知道你的具体要求,所以我将简要概述一些解决方案。

  • 创建一个命名范围,但如果你做得不对,添加/删除数据会影响定义的命名范围。 有时,最好定义一个名为范围的单元格作为书签,然后“选择范围”将为您提供所有数据。

  • 创建一个样式。 将此样式应用于您希望“查找”的每个数据单元。 定义一个方法,该方法返回单元格具有指定样式的Range基础。

  • 创建一个PivotCache对象。 此对象能够自行更新,并减少文件大小,尤其是在工作簿中重复使用高速缓存时。 这也是解决工作表中行数限制的一种方法。

  • 创建一个列表。 这具有许多优点。 您可以随意添加/删除数据。 添加/删除列。 把列表看作是一张表。

  • 作为“code4life”提及使用XML映射(http://msdn.microsoft.com/zh-cn/library/aa203737(office.11​​).aspx)。

  • 如果工作簿是XMLSS,则定义一个新的名称空间并用名称空间中的属性装饰单元格。 然后您可以使用XPath“查询”。 这是一个非常强大的功能,因为您可以将任何需要的内容嵌入到工作簿中。

  • 各有其优点/缺点。 我已经多次使用过每种解决方案。


    AMissico列出了一些非常好的解决方案。 我想添加一个适合我的工具:

    在C#(ExcelDNA / VSTO)或VBA中,您可以执行如下操作:

    var app = (Application) ExcelDnaUtil.Application;
    app.ActiveCell.AddComment("This is an editable cell");
    

    显而易见的缺点是用户可以看到这个评论 - 在我的情况下,它发挥得非常好,因为我可以为用户提供有用的诊断信息,并解析相同的文本以获取我想要的元数据。

    您还可以使用以下方式隐藏注释:

    app.DisplayCommentIndicator = XlCommentDisplayMode.xlNoIndicator;
    

    但是请注意,这会隐藏所有评论,而不仅仅是您添加的评论。 要遍历表单中的注释,可以使用以下内容:

    var comments = ((Worksheet)app.ActiveSheet).Comments;
    foreach(Comment comment in comments)
    {
        var text = comment.Text();
        // do something...
    }
    

    我不记得一个方法去做你正在问的问题。 过去我所看到的是根据你想查找的内容来设置范围名称。 另一个选择是隐藏它旁边的单元格或其他预定的偏移量(例如,总是向右3个单元格,或同一个位置,但在隐藏页面上)。 隐藏的单元格/页面会包含您要查找的数据。

    在我曾经工作的会计师事务所中,似乎意外出现的一件事是您应将所有数据推送到隐藏的“丑陋”页面,并使用公式/查找来引用您的数据。 这样,您可以更新“丑陋”的页面,并知道数据的位置,同时拥有一个“漂亮的页面”,让用户可以随心所欲地浏览内容。

    链接地址: http://www.djcxy.com/p/67833.html

    上一篇: data to a cell in Excel?

    下一篇: Call methods written in C# in Excel 2007 from cell formulas