2011-10-18 19 views
1

サービスを開発してw2003ボックスにインストールして、Excelファイルを読み込んで情報を処理する必要があります。プロセスは次のとおりです。ユーザーはFTPを使用してExcelファイルをアップロードし、サービスでこれらのファイルを取得し、SQL Server DBを検証してから更新する必要があります。reading excel server-side

アプリケーションはコンピュータで正常に動作しますが、サーバー上ではライブラリを要求しますが、MS Office 2003 Primary Interopアセンブリをインストールしようとすると、「製品をインストールする前にMicrosoft Office 2003をインストールしてください」と表示されます。

私はOKなどを必要とする必要があるため、サーバーのアップグレードをしないことをお勧めします。サーバにアップデートをインストールすることなくExcelファイルを読み込む簡単な方法があります。

コメントは歓迎します。

ありがとう、 m0dest0。

ps。 vb.netを使用し、2008年

+0

Excel Object Libraryを使用してExcelファイルを操作する場合は、サーバーマシンにExcelがインストールされている必要があります。 –

+1

ユーザーがファイルをアップロードできるようにするには、バージョンをOffice 2003のみに制限していますか?ユーザーに新しいバージョンのOfficeがインストールされている場合はどうなりますか? – zeroef

+0

@Matt、それは辛いインストールプロセスになります。 – m0dest0

答えて

2

対サーバー上の相互運用機能を使用してMSによってサポートされていない - Windows VistaのMSは、「デスクトップのようなことからWindowsサービスを防止するため、複数のセキュリティ関連の対策を発表して以来http://support.microsoft.com/default.aspx?scid=kb;EN-US;q257757#kb2

を見ます"物事...それはあなたがそれを働かせるためにいくつかのセキュリティ対策を回避する必要があることを意味する(推奨されていない!)。サーバー・シナリオでExcelに対処するために

いくつかのオプション(自由およびコマーシャルが)そこにあります。

私はAspose.CellsFlexcelをお勧めすることができます... SpreadsheetGearをしようとしなかったが、+が良いの多くを読んで聞きますそれについて...

無料のオプション(ただし最新のxlsx形式のみ)は、たとえばOpenXML 2 from MSEPPlusです。

+0

+1 for OpenXML - そこで大きなサンプルを見つけるのは少し難しいですが、セットアップが完了すると、それで驚くべきことができます。 – zeroef

+0

@zeroefは本当ですが、OPはExcel 2003を書いています。これはXLSではなくXLSを意味するので、OPを新しいExcel形式に切り替えることができるかどうかによって決まります...私が言及した(商用)ライブラリは、 ... – Yahia

+0

私はそれを見越しているに違いない。良いキャッチ – zeroef

0

最近のバージョンのWindows Serverには何もインストールしないでください。.....正確なVB.NETコードはわかりませんが、Microsoftを使用しているすべてのマシンでこれを簡単に実行できるはずです最新のWindowsサーバーで利用可能なOLEDBドライバ、またはWindowsサーバーの非常に古いバージョンのMicrosoft Webサイトから無料でダウンロードすることができます。私はこれを擬似コードしようとしますので、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にダンプするために変換があまり必要ない場合があります。