2011-06-29 48 views
0

如何以編程方式評估一個Excel格式字符串?如何評價Excel格式字符串

我以編程方式創建基於特定格式的數據的Excel單元格,例如 中的某些單元格;有格式字符串需要應用於它們。

e.g 「[紅色]#,## 0.00」 爲987564.63635

填充進入細胞之前,我想檢查(基本上只顏色)的單元格或文本。 如果它不能很好地顯示給用戶,例如淡黃色很差,用戶幾乎看不到這種顏色。我需要知道格式字符串 的顏色,例如「[Red]#,## 0.00」或「[Color 32] dd/mm/yyyy」或者偶數更復雜的Excel格式字符串。

我想知道。有什麼樣的圖書館可以完成這項工作嗎? 還是.net有這種功能嗎? 或我必須自己做?

樣品

如 如果格式字符串 「[紅色]#,## 0.00」, 我想知道有關的[紅色]基地相應Sysmte.draw.Color串。 或對應的web顏色,FF0000,對於[紅色]在串 基或相應的RGB值

+0

請澄清你所說的「評估」,也許用一個例子什麼輸入和對應的輸出應該是什麼說明的意思。是「[Red]#,## 0。00「的輸入?將」紅色「然後是輸出?或(255,0,0)? –

回答

2

可以使用Excel範圍對象來訪問該單元的所有的配置設置。

例如:

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保存格式字符串 - 在你的榜樣,將舉辦 「[紅色]#,## 0.00」。

從那裏,你將需要使用NumberFormat的成員(我推薦一個正則表達式)的任何字符串操作技術來找到你正在尋找的顏色或任何其他東西。

編輯,這裏是正則表達式和TypeCovertor的一些使用來完成串色的對象轉換。 (具有繼續上述源)

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); 
} 

正則表達式對象被編譯到裝配性能。我假設使用Color resultColor對象是你可以自己想象的東西(它有ARGB和其他成員來檢查)。

而且最後的評論,你可以很容易地減少線路的數量在這個例子中,我只是想強調的每一步。

+0

」在NumberFormat成員上使用任何字符串操作技術「我認爲這是OP要求怎麼做的... –

+0

@Corbett:感謝您指出這個,不知何故,我錯過了原來的問題;-),看到我上面的更新 – NirMH