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

C# 如何使用C突出显示excel中的数据范围?,c#,excel,automation,C#,Excel,Automation,我想知道是否有一种方法可以使用C复制插入图表对话框功能。我需要的是显示一个弹出窗口,但更重要的是让用户选择数据范围 我还想用Excel的彩色框突出显示范围。下面是excel在插入图表时如何突出显示范围的图像。我希望能够从我的C外接程序中获得这些框 我在这里可能有点过时,但您是否尝试过录制符合您要求的宏 然后,您可以查看生成的代码并根据需要对其进行调整。在VBA中,有一个RefEdit控件允许您执行此操作,此处有一个关于如何使用它的详细演练: 不幸的是,没有内置控件可以让您在C中完成这项工作。您可

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

我还想用Excel的彩色框突出显示范围。下面是excel在插入图表时如何突出显示范围的图像。我希望能够从我的C外接程序中获得这些框


我在这里可能有点过时,但您是否尝试过录制符合您要求的宏


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

在VBA中,有一个RefEdit控件允许您执行此操作,此处有一个关于如何使用它的详细演练:

不幸的是,没有内置控件可以让您在C中完成这项工作。您可以使用VBA作为前端(我非常怀疑您是否愿意这样做),也可以使用C创建一个等效的RefEdit控件。这里有一篇文章介绍了如何做到这一点,以及一个功能完整的C代码示例:由Gabhan Berry编写

根据Czandy的评论更新:


事实上,问题在于如何 突出显示选定范围,而不是如何突出显示 选择范围。输入框 csharp-examples.net/inputbox是 可从C获得,并允许选择 范围

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

然而,有些解决方案至少可以让你在蚂蚁周围有一个选框带。如果你使用VBA作为前端,你可以利用内置的,我上面提到过的,它会把选框带放在所选范围的周围

将允许您在C窗体中使用类似RefEdit的控件,但在进行选择时不包括选框栏-在正常选择范围时,它将仅使用标准外观

如果您愿意使用一个简单的输入框解决方案,而不是表单上的控件,那么如果您使用form.Show而不是form.ShowDialog,那么这将起作用,但它不会显示任何特殊的选框带或其他突出显示。对于使用选框带选择的简单输入框,您可以使用该方法,为“类型”传入值“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)
希望这有助于


迈克

这没用。未明确选择范围。问题在于是否能够复制某些refedit控件功能,而不是Excel对象模型的特定部分。谢谢,看起来它尽可能接近我想要的位置。是的,这是使用C所能做到的最好的方法。唯一的另一种方法是使用VBA作为前端,这样您就可以使用VBA用户窗体和真正的“RefEdit”控件。实际上,问题是如何突出显示选定的范围,而不是如何选择范围。输入框可从C中获得,并允许选择范围。除非您在工作表上构建工作表公式,否则像这样的多色高亮显示几乎是不可能的。为了解决这个问题,我更新了上面的答案。希望有帮助!