2010-02-19 37 views
5

hiện nay tôi đang làm điều này:Làm thế nào để có được giá trị của một ô bằng chỉ số hàng và cột chỉ số

string cellValue = sheet.get_Range("A12", _missing).Value2.ToString(); 

làm việc này nhưng tôi thực sự cần phải chọn một ô bằng cách liên tiếp và chỉ số cột.

tôi nhận được một ngoại lệ null khi tôi cố gắng

string cellValue = ((Range)sheet.Cells[row, column]).Value2.ToString(); 

bất kỳ ý tưởng?

+0

bản sao có thể có của [Làm cách nào để nhận phạm vi Excel bằng cách sử dụng số hàng và cột trong VSTO/C#?] (Http://stackoverflow.com/questions/2333202/how-do-i-get-an-excel- range-using-row-and-column-number-in-vsto-c) – nawfal

Trả lời

7

Trường hợp nào xảy ra ArgumentNullException? Hãy thử tách ra mã của bạn như thế này và bước qua nó:

object rangeObject = sheet.Cells[row, column]; 
Range range = (Range)rangeObject; 
object rangeValue = range.Value2; 
string cellValue = rangeValue.ToString(); 

Điều này sẽ cho bạn thấy nơi các đối tượng null là.

+0

NullReferenceException xảy ra tại ô chuỗiValue = rangeValue.ToString(); vì phạm vi.Value2 là không. tôi biết tờ của tôi là tốt nhưng tôi nghĩ sheet.Cells [hàng, cột] là thủ phạm thực sự. – CurlyFro

+0

Tôi nghĩ sau đó, rằng một null 'range.Value2' chỉ ra rằng các tế bào không có một giá trị. Nếu bạn nhìn vào ô trong Excel, nó có trống không? –

+2

Ngoài ra, Excel interop sử dụng lập chỉ mục dựa trên 1. Vấn đề có thể là bạn đang sử dụng các chỉ mục dựa trên không tham chiếu đến một ô trống. Nếu đúng như vậy, thì tất cả những gì bạn cần làm là sử dụng 'row + 1' và' column + 1' để lấy ô đúng. –

0

Tôi gặp vấn đề tương tự. Các nullref sẽ xảy ra khi các tế bào tôi đã đọc là trống rỗng.

string foo = (((Range) ActiveWorksheet.Cells[row, column]).Value2 != null 
      ? ((Range) ActiveWorksheet.Cells[row, column]).Value2.ToString() 
      : "Coalesce some false string here..."); 

Chú ý rằng bạn phải kiểm tra cho null trước bạn cố gắng để chuyển đổi hoặc đúc các giá trị.

Các vấn đề liên quan