如何评估Excel格式的string

如何以编程方式评估Excel格式string?

我以编程方式创build基于特定格式的数据的Excel单元格,例如一些单元格中的xml; 有格式string需要应用于他们。

例如“[Red]#,## 0.00”为987564.63635

在填入单元格之前,我想检查(基本上只有颜色)的单元格或文本。 如果不能很好地显示给用户,例如淡黄色很差,用户几乎看不到这种颜色。

因此,在创build单元格之前,我需要知道格式string的颜色,例如“[Red]#,## 0.00”或“[Color 32] dd / mm / yyyy”或更复杂的Excel格式string。

我想知道。 有什么样的图书馆可以做这个工作吗? 或.net有这种function已经? 或者我必须自己做?

样品

例如,如果格式string是“[Red]#,## 0,00”,我想知道相应的Sysmte.draw.Color为基于string的[Red]。 或者根据string或相应的RGB值为[Red]指定相应的Web颜色ff0000

您可以使用Excel范围对象来访问所有单元的configuration设置。

例如:

Worksheet sheet = excelApp.ActiveWorkbook.ActiveSheet; Range r = sheet.Cells[1, 1]; MessageBox.Show(r.Value2 + "\n" + r.Text + "\n" + r.NumberFormat); 

r.Value2拥有单元格(公式)的下划线值。

r.Text保存单元格的可见(用户)值(结果)。

r.NumberFormat保存格式string – 在你的例子中它将保存“[Red]#,## 0.00”。

从那里你需要在NumberFormat成员上使用任何string处理技术(我推荐一个正则expression式)来find你正在寻找的颜色或者任何其他的东西。

编辑 ,这里有一些使用regExp和TypeCovertor来完成string到Color对象的转换。 (继续上面的来源)

 string formatString = r.NumberFormat; Regex colorRegExp = new Regex(@"^\[(?<color>\S+)\]", RegexOptions.Compiled); Color resultColor; System.ComponentModel.TypeConverter converter = System.ComponentModel.TypeDescriptor.GetConverter(new Color()); Match m = colorRegExp .Match(formatString); if (true == m.Success) { string colorString = m.Groups["color"].Value; resultColor = (Color)converter.ConvertFromString(colorString); } 

正则expression式对象被编译为程序集以提高性能。 我假设使用Color resultColor对象是你自己Color resultColor的东西(它有ARGB和其他成员来检查)。

最后的评论,你可以很容易地减less这个例子中的行数,我只是想强调每一步的方式。