用c#检索Excel自动化函数中的单元格值

我需要检索一个单元格而不是Excel.Range在我的方法。

using Excel = Microsoft.Office.Interop.Excel; ... public object vReadNumber(Excel.Range targetRange) { ... Doing Something With targetRange ... } 

任何想法?

Excel.Range.Count属性报告有多less个单元格在该范围内。 例如:

 if (targetRange.Count > 1) { throw new ArgumentException(...); } 

Excel.Range.Cells [,]索引器从范围的第一个区域返回任何单元格。 但请注意,Excel使用基本1索引(不是基数0)。 因此,要访问该范围的左上angular的单元格,可以使用:

 Excel.Range topLeftCell = (Excel.Range)targetRange.Cells[1,1]; 

请注意,您必须强制转换为上面的Excel.Range,因为Excel.Range.Cells [,]索引器将返回一个Excel.Range对象强制转换为System.Object。

当范围由单个单元格组成时,您还应该注意Excel.Range.Value属性将返回一个primefaces值,如double,string,boolean等。 它将返回一个二维基数组1,但是,如果范围的第一个区域包含多个单元格。 例如:

 if (targetRange.Count = 1) { object myValue = targetRange.get_Value(Type.Missing); MessageBox.Show(myValue.ToString()); } else { object[,] myArray = targetRange.get_Value(Type.Missing); for(int row = 1; row <= myValue.GetLength(0); row++) { for(int column = 1; column <= myValue.GetLength(1); column++) { MessageBox.Show(myArray[row, column].ToString()); } } } 

希望这可以帮助!

麦克风

 // nb cell is derived from a WorkSheet object xlSheet // by cell = xlSheet.Cells[row, col] public T CellValue<T>(object cell) { T result = default(T); try { Range rg = (Range)cell; object value = rg.Value2; if (value != null) { if (typeof(T) == typeof(DateTime)) { DateTime dateValue; if (value is double) { dateValue = DateTime.FromOADate((double)value); } else { DateTime.TryParse((string)value, out dateValue); } result = (T)Convert.ChangeType(dateValue, typeof(T)); } else result = (T)Convert.ChangeType(value, typeof(T)); } } catch { result = default(T); } return result; }