2009-08-12 11 views
0

스프레드 시트를 제대로 포맷 할 수없는 고객이 있습니다. 필자는 합리적인 가이드 라인을 따르기 위해 10 번 이상 질문했지만 (예 : 올바른 데이터 형식으로 열을 지정하는 것처럼) 지능 또는 전문성이 부족하거나 두 가지 모두에있어, 그들은 그렇게 할 수 없거나하지 않을 것입니다.바보 용 Excel 스프레드 시트 자동 수정

스프레드 시트에 대해 ODBC 연결을 설정하고 제품 수 또는 제품 가격이 포함 된 열을 제외한 데이터를 가져옵니다. Excel에서 각 열의 유형을 수동으로 "숫자"로 설정하지 않으면 값이 결과를 표시하는 ASP 페이지에 null로 표시됩니다.

들어오는 데이터 유형을 변경하는 SQL 문을 작성할 수 있습니까? ADODB.Recordset이 모든 열의 값을 표시하는 한 모든 열을 문자열로 변환하면 걱정하지 않습니다.

코드 :

<% 
Dim MM_SQLSource 

MM_SQLSource = "SELECT * FROM [Inventory$]" 
Set rsGetExcelInfo = Server.CreateObject("ADODB.Recordset") 
rsGetExcelInfo.ActiveConnection = MM_Excel_Connect 
rsGetExcelInfo.Source = MM_SQLSource 
rsGetExcelInfo.CursorType = 0 
rsGetExcelInfo.CursorLocation = 2 
rsGetExcelInfo.LockType = 1 

rsGetExcelInfo.Open() 
%> 
+1

당신이 당신의 클라이언트를 바보라고 부르는 경우에, 지적이는 전문가가 아닌. 어쩌면 그들은 떠나서 당신의 문제를 해결할 것인가? –

답변

1

그것은 전적으로 고객의 잘못이되지 않을 수 있습니다. Excel에는 열의 형식을 지정하는 방법에 대한 자체 아이디어가있는 경우가 있습니다. 예를 들어 우편 번호가 포함 된 열이 있고 일부는 Plus 4가있는 열이 있고 다른 열이없는 열이있는 경우 해당 열의 서식이 어떻게 지정되는지에 관해서는 거의 헛수고입니다. 원래의 질문으로

site에 따라 변환은

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

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

내 첫 번째 경향은 COM을 사용하여 스프레드 시트에서 데이터를 읽는 것이 좋습니다. 나는 각 셀의 형식을 읽고 이에 따라 처리 할 수있을 것이라고 확신하지만, COM을 통해 Excel이 어렵고 끔찍하게 빠르다는 것을 항상 발견했다. (나는 C++로만 해왔다.)

1

안타깝게도 AFAIK 모든 ODBC/ADO/OLEDB/모든 가제트는 몇 행을 검사 한 후 각 열의 데이터 유형을 추측합니다 (기본값은 8입니다.).

Python [1] /Perl/PHP/.Net에서 사용할 수있는 패키지/모듈/라이브러리가 있으며, 셀별로 Excel 파일을 읽을 수 있습니다. 더 좋은 것들은 값과 세밀한 유형 (text/numeric/date/boolean/error/empty)을 각 셀에 제공 할 것입니다. 그 정보로 무장하고 각 열에 무엇이 있어야하는지에 대한 지식을 얻을 수 있습니다. 수리 작업을해라.

[1] 예 : http://pypi.python.org/pypi/xlrd 그 중 제가 저자입니다 ... (a) ODBC 문제 (b) 'CSV로 저장'문제 (c) COM 문제

1

Excel 사용을 중단하고 그것은 사용자 데이터 입력에 대한 몇 가지 양식과 실제 데이터베이스에?

스프레드 시트를 데이터베이스에 저장하는 것이 너무 어렵지 않아야합니다. 접근은 괜찮을 것이다. 또는 SQL Server 백 엔드와 액세스 프런트 엔드를 사용하십시오. 또는 더 많은 노력을 감당할 수 있다면 웹 프런트 엔드를 만드십시오.

이 작업을 수행하는 것이 더 어려워 질수록 데이터가 더 나 빠지고 오류, 불일치 및 누락이 많아집니다.

모두에게 호의적이며이 일을 공식화하십시오.

관련 문제