如何使用C#突出显示Excel中的数据范围?

时间:2009-12-15 14:06:18

标签: c# excel automation

我想知道有没有办法使用C#复制插入图表对话框功能。我需要的是显示一个弹出窗口,但更重要的是让用户选择数据范围。

我还希望使用Excel的彩色框突出显示范围。这是插入图表时excel如何突出显示范围的图像。我希望能够从我的C#插件中获得这些框。

Excel range highlighting http://img696.imageshack.us/img696/5290/excel.png

2 个答案:

答案 0 :(得分:3)

在VBA中有一个RefEdit控件可以让你这样做,并且在这里有一个关于如何使用它的详细演练:How to Use the RefEdit Control with a UserForm

不幸的是,没有内置控件允许您在C#中执行此操作。你可以使用VBA作为你的前端 - 我非常怀疑你想做什么 - 或者你可以使用C#创建一个RefEdit控件。有一篇关于如何执行此操作的文章,以及一个功能齐全的C#代码示例,这里是:Gabhan Berry的How to Code a RefEdit control

根据zzandy的评论进行更新:

  

“实际上问题是关于如何   突出显示所选范围,而不是如何   选择范围。 InputBox   (csharp-examples.net/inputbox)是   可从C#获得并允许选择   范围“。

无法以多种颜色突出显示范围。这种突出显示仅在Excel中在工作表上创建公式时发生,而不是在为任何其他目的选择范围时。创建它的唯一方法是需要大量的子类化或挂钩,我不推荐它。

但是,有些解决方案可以让你至少在选择范围内拥有一个选区(也就是“行军蚂蚁”)。如果你使用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)

希望这会有所帮助......

麦克

答案 1 :(得分:-1)

我可能在这里有点过时了,但是你试过录制一个能做你想做的宏吗?

然后,您可以查看生成的代码并根据需要进行调整。