2014-05-21 45 views
3

我一直在開發一個應用程序,它向用戶提供了一個可以在EXCEL WAY中編寫數學表達式的頁面。如何以編程方式驗證Excel表達式

它是ASP.NET MVC中的一個應用程序,它使用SpreadSheetGear庫來EXECUTE excel表達式。

如下所示,該頁面有一個texarea用於在右側寫入表達式和兩個按鈕。綠色的是用於驗證表達式,紅色表示乾淨的textarea。

Expression Page

A,B,C是參數,該應用程序將取代的值。請注意,不可能知道參數數據類型。我的意思是,如果我編寫連接函數,用戶需要使用雙引號(「)來定界字符串,例如 CONCATENATE(」A「,」B「)因此是必要的,因爲用戶KNOW需要函數參數及其關聯?數據類型

我的主要問題是如何以驗證表達式 的SpreadsheetGear有不執行此驗證的任何方法

的方法的SpreadsheetGear提供執行一個公式爲:

string formula = "{formula from textarea}" 
worksheet.EvaluateValue(formula) 

它的期望和字符串。

因爲我不知道用戶會寫什麼公式,或者這個公式有多少個參數以及參數數據類型是什麼,所以很難驗證。

現在我的問題是?

我如何驗證表達式?

我認爲在一個替代方案中:爲表達式中的每個參數提供帶有文本框的用戶和頁面。用戶將能夠提供一些數據並驗證公式的結果。如果公式的sintaxe錯誤,應用程序會拋出異常。

enter image description here

這將是一個很好的解決方案,但每個「進程」用戶將交互來,他會寫10,15式,也許這將是有點痛苦。

任何人都可以爲我提供一個很好的解決方案嗎?

謝謝!

+2

只需處理來自EvaluateValue功能異常,並通知用戶該公式是無效的。否則,您將基本上必須解析所有內容,並且幾乎要編寫整個電子表格工具功能才能進行驗證。 –

+0

寫得很好的問題,不幸的是我不認爲你將能夠把它關閉。我想說看一下Excel Services,然後考慮將計算特性減少到「DataTable.Compute(mathFormula)」子集。除此之外,你可能想看看Office365中的Excel對象模型,在這個時候它很不成熟。 –

回答