null 참조에 대해 런타임 바인딩을 수행할 수 없습니다. Excel 셀 비우기
제목에 언급된 오류를 수정할 방법이 생각나지 않고 어떻게 해야 할지에 대한 아이디어를 찾고 있었습니다.
Excel 스프레드시트의 행을 개체로 읽으려고 합니다.
처음 루프할 때는 행 1, 열 1 및 행 1 열 2에 데이터가 포함되어 있기 때문에 문제가 없습니다.
그러나 2행, 1열 및 2열 2열에 도달하면 스프레드시트의 셀이 "빈"이기 때문에 위 오류와 함께 오버랩됩니다.
"만약 null인 경우" 체크인을 어디에 둘 수 있는지 알 수 없습니다.
누가 그것을 어떻게 하는지 알려줄 수 있나요?
여기 내 코드가...
private static void IterateRows(Excel.Worksheet worksheet)
{
//Get the used Range
Excel.Range usedRange = worksheet.UsedRange;
// create an object to store the spreadsheet data
List<SPREADSHEETModel.spreadsheetRow> spreadsheetrows = new List<SPREADSHEETModel.spreadsheetRow>();
//Iterate the rows in the used range
foreach (Excel.Range row in usedRange.Rows)
{
for (int i = 0; i < row.Columns.Count; i++)
{
spreadsheetrows.Add(new SPREADSHEETModel.spreadsheetRow()
{
col1 = row.Cells[i + 1, 1].Value2.ToString(),
col2 = row.Cells[i + 1, 2].Value2.ToString()
});
}
}
}
사용 안 함.ToString()
원인이 될 것입니다null reference exception
값이 null일 때 사용합니다.Convert.ToString()
null 값에 대한 빈 문자열을 반환합니다.
col1 = Convert.ToString(row.Cells[i + 1, 1].Value2);
col2 = Convert.ToString(row.Cells[i + 1, 2].Value2);
전화를 걸기 전에 필요합니다.ToString
추가하기 전에 이동할 수도 있습니다. 빈 행을 추가하는 것은 유용하지 않다고 생각하기 때문입니다. 하지만 시나리오에서는 그렇지 않을 수도 있습니다.
if (row.Cells[i + 1, 1].Value2 != null && row.Cells[i + 1, 2].Value2 != null)
{
spreadsheetrows.Add(new SPREADSHEETModel.spreadsheetRow()
{
col1 = row.Cells[i + 1, 1].Value2.ToString(),
col2 = row.Cells[i + 1, 2].Value2.ToString()
});
}
그렇지 않으면 다음과 같은 기능이 필요할 수 있습니다.
col1 = row.Cells[i + 1, 1].Value2 != null ? row.Cells[i + 1, 1].Value2.ToString() : null,
그 예외 뒤에 있는 이유가 있습니다.Value2
이다.dynamic
따라서 반환 값은 런타임에 결정됩니다.그리고 만약에Value2
이라null
그것은 결정할 수 없습니다.ToString
호출 방법.
내부에서 루프를 체크인할 수 있습니다.
//Iterate the rows in the used range
foreach (Excel.Range row in usedRange.Rows)
{
for (int i = 0; i < row.Columns.Count; i++)
{
spreadsheetrows.Add(new SPREADSHEETModel.spreadsheetRow()
{
if (row.Cells[i + 1, 1].Value2 != null)
{
col1 = row.Cells[i + 1, 1].Value2.ToString();
}
if (row.Cells[i + 1, 2].Value2 != null)
{
col2 = row.Cells[i + 1, 2].Value2.ToString();
}
if (row.Cells[i + 1, 3].Value2 != null)
{
col3 = row.Cells[i + 1, 3].Value2.ToString();
}
});
}
}
언급URL : https://stackoverflow.com/questions/28235162/cannot-perform-runtime-binding-on-a-null-reference-empty-excel-cells
'source' 카테고리의 다른 글
노드 앱을 실행할 때 bcrypt 잘못된 엘프 헤더 (0) | 2023.08.14 |
---|---|
올바른 GROUP BY 쿼리가 Oracle에서 INSERT INTO와 결합될 때 작동하지 않음 (0) | 2023.08.14 |
도커 구성 Y를 시작하기 전에 컨테이너 X 대기 (0) | 2023.08.14 |
16진수 표현 문자열에서 토이() (0) | 2023.08.09 |
두 열의 최소값으로 정렬 (0) | 2023.08.09 |