2011-02-24 6 views
1

주소가 포함 된 Excel 스프레드 시트가 있습니다. OLEDB를 사용하여 스프레드 시트에서 데이터를 읽고 C#의 DataTable에 저장하고 있습니다.oledb를 사용하여 하이픈 우편 번호를 읽는 방법

String connString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filename + @";Extended Properties=""Excel 8.0;HDR=1;IMEX=1"""; 

다음과 같은 문제가 있습니다. DataSet Visualizer를 사용하면 우편 번호 입력란에 빈 문자열이 생깁니다.

12345-1234 --> "" 

그래서이 동작을 수정하여 우편 번호가 나타나도록하십시오. 하이픈 다음에 자릿수를 잘라야한다면 괜찮을 것입니다. 우편 번호를 읽을 수 있도록하려면 어떻게해야합니까?

답변

1

Excel에는 종종 열의 형식을 지정하는 방법에 대한 자체 아이디어가 있습니다. 예를 들어 우편 번호가 포함 된 열이 있고 일부는 Plus 4가있는 열이 있고 다른 열이없는 열이있는 경우 해당 열의 서식이 어떻게 지정되는지에 관해서는 거의 헛수고입니다. 어쩌면 엑셀은 Zip + 4로 가득 차 있다고 가정 할 것입니다. 아마도 5 자리 Zip 또는 아마 숫자 일 것입니다. 필자는이 파일을 수년 동안 사용해 왔으며 Microsoft에서이 결정을 내릴 때 난수 생성기를 사용하게되었습니다. 원래의 질문으로

site에 따라 변환은

SELECT CONVERT(BadField, SQL_CHAR) AS FixedField FROM [Table$] 

같은 아마 뭔가를 작동 할 수 있습니다, 유효한 SQL 스칼라 함수이다?

내 첫 번째 경향은 스프레드 시트에서 데이터를 읽는 데 COM (OleDb 대신)을 사용하는 것이 좋습니다. 각 셀의 형식을 읽고 그에 따라 처리 할 수있을 것이라고 확신하지만 COM을 통해 Excel이 어렵고 굉장히 빠르지는 않습니다.

+0

변환 제안을 확실히 시도 하겠지만 COM은 무엇입니까? 나는 interop의 큰 팬이 아니지만, 우연히 그것을 고려해야 할 수도 있습니다. 이 사이트에는 ODBC 기능 목록이 있지만 OLEDB를 사용하고 있습니다. 그게 효과가 있니? – MAW74656

+0

IMEX가 작동하는 법을 모르겠지만 IMEX = 1의 조합과 원래의 셀 형식을 변경하면 트릭을 만들었지 만 게시물에서 많은 것을 배웠습니다. 따라서 대답 기호는 – MAW74656

+0

입니다. 사용자가 Excel에서 지정한 셀 서식은 거의 항상 OleDb에서 데이터를 볼 방법에 영향을 미치지 않습니다. 어떤 형식을 사용하여 작동시키지 않았습니까? –

관련 문제