2010-10-29 78 views
2

我試圖在Excel中格式化單元格爲貨幣格式。於是我去到Excel中,記錄了我的一個普通細胞轉化爲貨幣格式宏,看看VB腳本,並看到它的輸出如下:Excel Interop貨幣格式

的NumberFormat =「$#,## 0.00」

所以我採取這種格式,並將其粘貼到我的代碼,它的作品的程度,即時獲取貨幣字符之前,我的Excel表中的值。然而,單元格的格式仍然是一個數字,excel在單元格的左下方放置了一個綠色的小三角形,告訴我格式不正確(它是,它應該是貨幣,但是它的編號是數字)有沒有什麼辦法在C#中實際設置單元格爲「貨幣」格式?

感謝

回答

0

不知道我理解你的問題:
在Excel中,包括貨幣,整數和日期/時間的所有數值都舉行浮點雙打。值的格式只控制它在呈現(可見)層中的呈現方式。
綠色三角形測試不包括格式測試。
問題是您正在創建文本值而不是數值?

+0

沒有值設置單元格是數字。爲了更好地理解我的問題,如果你在Excel中右鍵點擊一個單元格,然後點擊格式單元格,有一個包含「數字」和「貨幣」和其他類型的不同格式的列表,有沒有辦法讓我設置一個使用excel interop格式化爲「貨幣」的單元格,我嘗試使用NumberFormat來完成,但它似乎無法工作 – 2010-10-29 10:29:17

+0

您可以嘗試將樣式設置爲Currency。
但我不認爲它的數字格式是問題,因爲除了檢查存儲爲文本的數字之外,沒有用於格式化的綠色三角形檢查。
也許你應該發佈你的代碼。 – 2010-10-29 17:31:04

+0

順便說一句,如果一個數字作爲字符串/文本輸入或格式化爲文本,然後格式化爲貨幣不會將其轉換回數字。 – 2010-10-29 17:33:15

2

好的,我嘗試了很多代碼,我發現這比其他任何語言/區域設置的作品更好。

numberFormat = @"_-[$$-409]* #,##0.00_ ;_-[$$-409]* -#,##0.00 ;_-[$$-409]* ""-""??_ ;[email protected]_ "; 
+0

這解決了我的問題 – joab 2017-08-31 20:41:46

6

範圍對象有一個「樣式」屬性......在智能感知元說,這是「返回一個對象,你可以使用」唯一,但你也可以只設置與該屬性的風格。要獲得內置的「貨幣」風格,請使用(例如)Workbook對象的「樣式」屬性。

例子:

using Excel = Microsoft.Office.Interop.Excel; 

... 

var excel = new Excel.Application(); 
var wb = excel.Workbooks.Add(); 
var sheet = (Excel.Worksheet)wb.Sheets[1]; 
((Excel.Range)sheet.Cells[3, 4]).Style = wb.Styles["Currency"]; 

其實你可以將其設置爲字符串「貨幣」,這可能是什麼查爾斯建議。

((Excel.Range)sheet.Cells[3, 4]).Style = "Currency";