我想知道是否有一种方法可以使用 C# 复制插入图表对话框功能。我需要的是显示一个弹出窗口,但更重要的是让用户选择数据范围。
我还想要用 Excel 的 colorfull 框突出显示范围。这是插入图表时 excel 如何突出显示范围的图像。我希望能够从我的 C# 加载项中获取这些框。
Excel range highlighting http://img696.imageshack.us/img696/5290/excel.png
最佳答案
在 VBA 中,有一个 RefEdit 控件可以让您执行此操作,这里有关于如何使用它的详细演练:How to Use the RefEdit Control with a UserForm .
不幸的是,没有内置控件可以让您在 C# 中执行此操作。您可以使用 VBA 作为前端——我非常怀疑您是否愿意这样做——或者您可以使用 C# 创建等效的 RefEdit 控件。这里有一篇关于如何执行此操作的文章以及功能齐全的 C# 代码示例:How to Code a RefEdit control作者:Gabhan Berry。
根据 zzandy 的评论更新:
"Actually the question is on how to highlight selected ranges, not on how to select range. The InputBox (csharp-examples.net/inputbox) is available from C# and allows to select ranges."
无法使范围以多种颜色突出显示。这种突出显示仅在 Excel 中在工作表上创建公式时出现,而不是在出于任何其他目的选择范围时出现。创建它的唯一方法需要大量的子类化或 Hook ,我不推荐它。
然而,一些解决方案将允许您至少在选择周围有一个选框带(又名“行进的 Ant ”)。如果你使用 VBA 作为前端,你可以使用内置的 RefEdit control ,我在上面提到过,它确实将选取框带放在了所选范围内。
The C# example I gave, above将允许您在 C# 窗体中使用类似 RefEdit 的控件,但在进行选择时它不会包括选取框 - 它只会在正常选择范围时使用标准外观。
如果您愿意使用简单的输入框解决方案,而不是表单上的控件,那么 C# example you gave会起作用(如果您使用 Form.Show() 但不 Form.ShowDialog()),但它不会显示任何特殊选取框带或其他突出显示。对于确实使用选取框选择的简单输入框,您可以使用 Excel.Application.InputBox方法,为 'Type' 传入一个值 '8',这表明 'InputBox' 方法返回的值应该是 'Excel.Range' 数据类型:
Excel.Application excelApp = ...;
string prompt = "Please select the range.";
string title = "Input Range";
int returnDataType = 8;
String DefaultRange = oXL.Selection.Address();
Excel.Range myRange = excelApp.InputBox(
prompt,
title,
DefaultRange,
Type.Missing,
Type.Missing,
Type.Missing,
Type.Missing,
returnDataType)
希望这有助于...
迈克
关于c# - 如何使用 C# 在 excel 中突出显示数据范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1907698/