2011-10-18 6 views
1

서비스를 개발하고 w2003 상자에 설치하여 파일을 읽은 후 해당 정보를 처리해야합니다. 이 과정은 다음과 같습니다. 사용자는 FTP를 사용하여 Excel 파일을 업로드 한 다음 서비스에서 해당 파일을 가져 와서 SQL Server DB의 유효성을 검사 한 다음 업데이트해야합니다.독서 서버 측

응용 프로그램이 컴퓨터에서 제대로 실행되지만 서버에서 라이브러리를 요청하지만 MS Office 2003 주 Interop 어셈블리를 설치하려고하면 "제품을 설치하기 전에 Microsoft Office 2003을 설치하십시오"라는 메시지가 표시됩니다.

우리는 확인을 요구해야하므로 서버 업그레이드를하지 않는 편이 좋을 것입니다. 서버에 업데이트를 설치하지 않고도 Excel 파일을 읽는 간단한 방법이 있습니다.

의견을 환영합니다.

감사합니다. m0dest0.

ps. vb.net을 사용하여 서버에 상호 운용성을 사용하여 2008 년

+0

Excel Object Library를 사용하여 Excel 파일을 조작하는 경우 서버 컴퓨터에 Excel이 설치되어 있어야합니다. –

+1

사용자가 파일을 업로드하도록 허용하는 경우 버전을 Office 2003으로만 제한합니까? 사용자에게 최신 버전의 Office가 설치되어 있으면 어떻게 될까요? – zeroef

+0

@Matt, 고통스러운 설치 과정이 될 것입니다. – m0dest0

답변

2

가 MS에 의해 지원되지 않습니다 대 - "바탕 화면과 같은 일을에서 Windows 서비스를 방지 윈도우 비스타 MS가 도입 된 이후 http://support.microsoft.com/default.aspx?scid=kb;EN-US;q257757#kb2

몇 가지 보안 관련 조치를 참조 "일들 ... 그것은 당신이 여러 가지 보안 조치를 우회하여 작동하도록하는 것을 의미합니다 (권장하지 않음!).

내가 ... Aspose.CellsFlexcel을 추천 할 수 있습니다 좋은 많이 읽을 + SpreadsheetGear을 시도했지만 듣지 않았다

밖에 (무료 및 상용) 몇 가지 옵션이 서버 시나리오에서 엑셀을 처리하려면 그것에 관한 것들 ...

무료 옵션 (최신 xlsx 형식에 한함)은 예를 들어 OpenXML 2 from MSEPPlus입니다.

+0

+1 for OpenXML - 멋진 예제를 찾는 것이 조금 어렵지만 일단 설정을하면 그걸로 놀라운 일을 할 수 있습니다. – zeroef

+0

@zeroef 사실,하지만 OP는 XLSX가 아니라 XLS를 의미하는 Excel 2003을 작성 했으므로 OP를 최신 Excel 형식으로 전환 할 수 있는지 여부에 따라 달라집니다. 언급 한 (상업용) 라이브러리는 내가 언급 한 두 가지 모두를 수행 할 수 있습니다. ... – Yahia

+0

나는 그걸 훑어봤을 것입니다. 좋은 포착 – zeroef

0

최신 버전의 Windows Server에 설치할 항목이없는 솔루션 ..... 정확한 VB.NET 코드가 확실하지 않지만 Microsoft를 사용하는 모든 컴퓨터에서이 작업을 쉽게 수행 할 수 있어야합니다. OLEDB 드라이버는 최신 버전의 Windows 서버에서 사용할 수 있어야하며 매우 오래된 버전의 Windows 서버에 대해서는 Microsoft 웹 사이트에서 무료로 다운로드하여 설치할 수 있습니다. 이 코드를 의사 코드로 작성하려고합니다. 따라서 VB.NET에 맞게 수정해야합니다. 이름으로 필드를 참조하려면 워크 시트에서 선택한 영역의 첫 번째 행에 열 값의 필드 이름이 포함되어야합니다. 그렇지 않으면 숫자 값을 사용하여 반환 된 각 필드를 열 위치별로 인덱싱하기 만하면됩니다.

Set objExcelConnection = CreateObject("ADODB.Connection") 
objExcelConnection.Provider = "Microsoft.Jet.OLEDB.4.0" 
objExcelConnection.ConnectionString = "Data Source=d:\path\to\excel\file\on\your\server.xls;Extended Properties=""Excel 8.0;IMEX=1;"";" 
objExcelConnection.CursorLocation = 3 
objExcelConnection.Open 


sSQL = "select * from [worksheetname$]" 
set rsWorksheet = objExcelConnection.Execute(sSQL) 
do while not rsWorksheet.Eof 
    sValue = rsWorksheet("FieldName") 
    rsWorksheet.MoveNext 
loop 
rsWorksheet.Close 

set objExcelConnection = nothing 
0

Excel 파일을 처리해야 할 때 Excel 데이터 판독기 (http://exceldatareader.codeplex.com/)를 사용합니다. xls 및 xlsx 파일을 문제없이 처리하며 서버 OS의 일부 응용 프로그램에서 실행하고 있습니다. 각 시트를 DataTable 개체로 저장하고 DataTable의 각 "셀"은 동일한 주소를 가진 Excel 셀에 해당합니다. SQL 서버 링크를 설정하는 방법에 따라 내용을 DB로 덤프하는 데 너무 많은 변환이 필요하지 않을 수 있습니다.