2010-01-27 26 views
1

似乎有很多建議可以做到這一點,其中一些似乎可行。如何使用C#將文本值轉換爲Excel 2003中的數值(使用C#存儲的數字)012#

實際上,我想要將Excel工作表中的文本值更改爲一個數字(這是一個已設置爲以文本形式存儲的數字,並在其旁邊具有綠色菱形的單元格)。

webpage詳細介紹瞭如何解決在Excel中的問題,通過UI,和我錄這下面的宏(但是這是VBA)...

包括值設置到其自身:

   Range allCellsRng; 
       string lowerRightCell = "AZ500"; 
       allCellsRng = wSheet.get_Range("A1", lowerRightCell).Cells; 
       foreach (Range cell in allCellsRng) 
       { 
        if (cell.Value2.ToString().Length > 0) 
        { 
         cell.Value2 = cell.Value2; 
        } 
       } 

這是一個記錄的VB宏,這說明了什麼會解決這個問題,但我有在C#中表示此問題:

ActiveCell.FormulaR1C1 = "0" 
Range("A1").Select 
Selection.Copy 
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlAdd, SkipBlanks _ 
    :=False, Transpose:=False 
Range("A1").Select 

回答

0

好吧,把它作爲一個問題在這裏引發一個腦波。這看起來工作:

Range cellA1 = wSheet.get_Range("A1", System.Type.Missing); 
cellA1.Value2 = "0"; 
cellA1.Copy(System.Type.Missing); 
Range cellAll = wSheet.get_Range("A1:AZ500", System.Type.Missing); 
cellAll.PasteSpecial(XlPasteType.xlPasteAll, XlPasteSpecialOperation.xlPasteSpecialOperationAdd, 
     false, false); 
+0

如果這個宏能夠正常工作,那麼它就可以工作,因爲它和宏一模一樣...... – Ian 2010-01-27 14:53:00

+0

這個代碼只在你把第一個單元格的值設置爲0時才起作用,但是在其他任何情況下它只會把它加起來,產生不正確的結果 – Jim 2016-02-24 06:19:57

0

這豈不是貝特改變單元格的格式?我相信你應該能夠搶到使用

range.NumberFormat 

的格式和修改成你想要的實際格式...然後,您可以設置範圍的整列或整張紙。

+0

細胞已經被格式化爲一個數字,它只是Excel中被存儲爲文本的數量。根據網頁鏈接,如果您按F2並輸入(基本上打開單元格並退出),該號碼將被存儲爲一個數字。 – 2010-01-27 12:40:06

+0

如果我沒有弄錯,有一個特定的NumberFormat表示存儲爲文本,或者將值前綴爲'做同樣的事情。 – Ian 2010-01-27 12:43:41

+1

否則爲什麼不使用Range.PasteSpecial()方法? – Ian 2010-01-27 12:45:29

1

隨着清除辦公室,代碼非常簡單:

SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.Open(fileName); 
foreach (Worksheet worksheet in spreadsheetDocument.Workbook.Sheets.OfType<Worksheet>()) 
{ 
    foreach (Cell cell in worksheet.GetRange("A1:AZ500")) 
    { 
     string s = cell.Value as string; 
     if (s == null) 
      continue; 
     double d; 
     if (double.TryParse(s, out d)) 
      cell.Value = d; 
     } 
    } 
spreadsheetDocument.Save(); 
相關問題