数据到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下一篇: Call methods written in C# in Excel 2007 from cell formulas