2017-05-29 165 views
0

我從C#編寫函數到Excel文件有問題。從C#寫入Excel函數#

private void AddDemandFunctions() 
{ 
    Func<string, string, string> function = (range, shift) => 
    { 
     var builder = new StringBuilder(); 
     builder.Append("=LICZ.JEŻELI("); 
     builder.Append(range); 
     builder.Append("; \""); 
     builder.Append(shift); 
     builder.Append("\")"); 
     return builder.ToString(); 
    }; 

    int startRow = 5; 
    int endRow = 20; 
    string [] columns = { "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "AA", "AB", "AC", "AD", "AE", "AF", "AG", "AH", "AI", "AJ", "AK", "AL", "AM" }; 

    foreach (var column in columns) 
    { 
     string range = column + startRow + ":" + column + endRow; 
     worksheet.Range[column + 21].Formula = function(range, "D"); // HERE I GET AN EXCEPTION RIGHT IN MY FACE :(
     worksheet.Range[column + 22].Formula = function(range, "E"); 
     worksheet.Range[column + 23].Formula = function(range, "L"); 
     worksheet.Range[column + 24].Formula = function(range, "N"); 
    } 
} 

唯一的例外是:

An unhandled exception of type 'System.Runtime.InteropServices.COMException' occurred in mscorlib.dll 
Additional information: Wyjątek od HRESULT: 0x800A03EC. 

我的Excel中(2010年)是波蘭語言版本。當我試圖刪除「=」時,它可以工作,但它只寫文本。然後,如果我在excel文件中添加「=」,一切都可以。函數字符串中沒有錯誤。

我也試圖與非拋光功能:COUNTIF和我有同樣的例外......

任何想法?從PL

問候:)

+0

可能的重複:https://stackoverflow.com/questions/16400302/excel-worksheet-cellsrow-col-formula-vs-range-set-valuemissing-value-一個 – ASh

+0

我認爲我正在使用不同的庫,因爲我沒有metod set_Value Range對象就像你的主題... – Roofy

+0

它是excel.interop?嘗試'Value'屬性('set_Value'是一個setter) – ASh

回答

1

你要檢查什麼是真正的內部細胞,當你公式手動輸入。 Excel會在編輯欄中顯示「= COUNTIF(E5:E20;」D「)」,但是如果您閱讀真實內容,您會看到「= COUNTIF(E5:E20,」D「)」< - 請注意逗號而不是分號在公式中。

怎麼辦? 手動將公式寫入單元格,打開VBA編輯器(Alt + F11或Ctrl + G)並輸入即時窗口,即? Worksheet.range(「G1」)。公式 - 取決於您輸入公式的位置。

如果將根據顯示Excel將不扔東西在你的臉上;-)

我想也有逗號>分號問題什麼格式公式。編輯: 對不起,工作表是我的本地變量。你必須使用語法:

? ActiveWorkbook.ActiveSheet.range(「G1」)。公式

+0

你是genious的!非常感謝它的工作。問題是用分號「;」=>「,」:) – Roofy