2009-09-09 2 views
0

ADO.NET을 사용하여 Excel (xls) 워크 시트의 데이터 테이블을 채 웁니다.Excel에서 예상치 못한 문자가 발생했습니다.

예상치 못한 문자가 있습니다. 처음에 나는 그들이 수입 중 어떻게 든 왔다고 생각했기 때문에 C# 프로그램에서 그들을 쏟아 내려고했지만 아무 것도 시도하지 않았다.

마지막으로 Excel로 문자를 다시 추적하고 Excel에서 바꾸기 기능을 사용하여 문자를 ''로 바꿀 수있었습니다. 이러한 문자는 Excel에서 공백으로 표시되며 텍스트 파일로 덤프 된 데이터 테이블의 위치에서 거꾸로 작업하여 찾았습니다.

Excel에서도 명확한 서식 지정 기능을 사용해 보았습니다. 그러나 그것은 그 일을하지 않았다.

ascii 문자 (33-127) 만 입력하면 데이터 테이블의 입력을 필터링 할 수 있습니까?

데이터 테이블 (typeof(System.String)) 열을 문자열로 변환하면 어떤 종류의 문자열을 얻을 수 있습니까? 문자열을 char 배열로 변환 할 때 char을 식별 할 수없는 것 같습니다.

제안 사항? 이러한 문자가 예기치 않게 발생했기 때문에 스프레드 시트 입력을 필터링하여 표시되는 인쇄 문자와 공백 만 유지하도록하고 싶습니다. 가져 오는 텍스트는 텍스트, 숫자 데이터가 아니어야합니다.

테이블을 덤프 할 때 텍스트 파일에 나타나는 예기치 않은 문자는 ÿ입니다.

+0

가능한 경우 스크린 샷을 표시하십시오. – madcolor

답변

0

는 원점 필드 carriage return ("\r"), newline ("\n"), tab ("\t") characters (Jon Skeet answering even outside stackoverflow) 또는 NULL 필드가 포함되어 있습니까?

정보를 데이터베이스로 보내기 전에 모든 문자를 스트라이핑 해보십시오.

+0

Jon 또는 Voyager ... C# 프로그램은 모든 문제를 인식하지 못한 것 같습니다. 여기 상황이 있습니다. Excel 파일은 다른 곳에서 수신됩니다. 모든 신비한 문자는 Excel 파일을 열 때 빈 공간을 표시합니다. 실제로는 보이지 않게 렌더링합니다. 그래서 C# strip을 인쇄용 문자가 아닌 다른 것으로 만들려고했습니다. 그것은 작동하지 않았다. 그러나 처리 결과를 출력 할 때 스트롱 문자가 출력되는 텍스트 파일에 나타납니다. 마침내 필자는 이상한 문자를 제거하기 위해 Excel 매크로를 작성했습니다. 그게 효과가 있었어 ... 같은 종류의 코드는 C#에서 작동해야했지만 그렇지 않았다. –

+0

나는 C#에서 문제를 해결하기 위해 파일을 더 많이 가지고 있기 때문에 모든 입력 파일에 teh 매크로를 복사해야한다. 한번 터치 원칙을 위반한다. Excel 파일의 now-a-days 매크로는 xlm 파일 등 보안 문제를 야기합니다. –

0

감사합니다. Voyager, 답장을 보내 주셔서 감사합니다.

내가 말할 수있는 것은 아닙니다. 빈 셀에서 일부 null이 있지만 그들을 제거했습니다. 나는 어떤 \ r, \ n, \ t 그리고 다른 non printing 글자들을 걸러 내려고했다. 나는 C에서 그런 종류의 일을 여러 번했지만, C# 프로그램에서 그렇게 할 수없는 것처럼 보였다.

마지막으로 필자는 엑셀 워크 시트 그 자체와 vba 매크로 (모듈 또는 그것이 무엇이든간에)를 사용하여 모든 문제가되는 문자 (32 미만 및 126 이상)를 없앴습니다. 주위가 많이 걸려있었습니다.

그러나 모든 데이터가 C# 프로그램을 통과하므로 하나의 프로그램과 여러 스프레드 시트가 일치하므로 Excel에서 문제를 해결하는 것이 좋습니다.