2016-11-27 1 views
0

전체 Excel 데이터를 텍스트 배열 (셀에 표시된 텍스트와 정확히 일치 함)로 읽으려고합니다. 내가 대체 할 경우Excel 범위를 텍스트 배열로 읽습니다. (셀의 화면에 표시되는 내용을 나타내는 문자열)

코드가 작동합니다 [,] DBNull이 객체로 변환 할 수

나는 배열

Microsoft.Office.Interop.Excel.Range range = excelSheet.get_Range("A1", "P" + excelRowCount); object[,] values = (object[,])(range.Text);

에 엑셀 내용을 변환하려면이 코드를 사용하고 있지만이 같은 오류를 얻고있다 range.Value 또는 range.Value2range.Text 그러나 셀의 데이터 11:00:00 AM입니다 경우 즉, 예를 들어 정확한 데이터를 제공하지 않습니다 range.Value 여기 0.95833333333333337 을 준다 나는 필요 40K 있기 때문에 00 PM, 그러나 그 의지 둔화 과정 : 11 : 00 : 00 오후 11시 0분 0초

가치 0.95833333333333337 변환하지만 excelSheet.Cells[rowNo, columnNo].Text와 함께 가면 내가 올바른 텍스트, 즉를 얻을 것이다 DateTime.FromOADate() 방법을 사용 엑셀 시트에 기록하십시오.

object[,] values = (object[,])(range.Value);과 같은 배열에 정확한 텍스트를 가져올 방법이 있습니까? range.Text이 작동하지 않는 이유는 무엇입니까?

답변

0

당신이 변형에 여러 개의 세포는 .text을 받고 (. varr = 범위 ("A1 : A10") 텍스트)을 시도 할 경우 https://fastexcel.wordpress.com/2011/11/30/text-vs-value-vs-value2-slow-text-and-how-to-avoid-it/에서 당신은 결과의 배열을하지 않습니다. 대신 범위에있는 모든 셀에 동일한 값으로 포맷 된 동일한 값이 포함되어 있으면 형식이 지정된 단일 값을 가져 오지만 셀 중 다른 값이나 형식이 다른 경우 Null을 얻습니다 (유용한 트릭이 될 수 있음).

해당 기사는 각 셀의 .Text 속도 문제와도 일치합니다. 하지만 .Text는 원하는 날짜 서식을 포함하여 많은 셀 속성을 읽으려고합니다.

또한 셀 내용이 맞지 않으면 .Text가 ######를 반환 할 수 있으므로 모든 열/행을 자동 맞춤해야합니다.