0

asp.netのFileUploadコントロールを使用して、いくつかのデータを含むExcelをアップロードしています。一部のフォルダに保存できません。Excelシートファイルのストリームを作成することも、ExcelをBLOBとしてアップロードした後にBlobstreamを作成することもできます。そのExcelシートの1枚目をデータテーブルに変換したいのですが、どうすればよいですか?私はC#.NETを使用しています。Interopライブラリを使用したくありません。外部ライブラリを使用できます。データソースとしてExcelの物理パスがないため、Oledb接続が失敗します。私は次のリンクを試しました:

1)http://www.codeproject.com/Articles/14639/Fast-Excel-file-reader-with-basic-functionality

2)http://exceldatareader.codeplex.com/

助けてください。

4

4 に答える 4

2

Excelファイルの種類に応じて、投稿した例を使用するか、OpenXMLの代替手段(xlsxファイルの場合)を使用できます:http://openexcel.codeplex.com/

これで、物理パスの問題を簡単に解決できます。ファイルをBLOBストレージに保存するのは素晴らしいことです。ただし、必要に応じて、ローカルリソースに保存して、ローカルに保存することもできます。これにより、単純なOleDb接続を使用してファイルを処理できるようになります。ファイルの処理が完了したら、ローカルリソースからファイルを削除するだけです(ファイルをアップロードしたので、blobストレージで引き続き使用できます)。

処理が失敗した場合に備えて、何らかのクリーンアップメカニズムを用意することを忘れないでください。ディスクが一時ファイルでいっぱいになることは望ましくありません(これが発生するまでに時間がかかる場合があります)。

ローカルリソースの詳細については、http://msdn.microsoft.com/en-us/library/windowsazure/ee758708.aspxを参照してください。

于 2012-04-18T12:19:39.670 に答える
0

MSOfficeドキュメントを操作するための公式に推奨されている方法であるOpenXMLSDKを使用する必要があります-http ://www.microsoft.com/download/en/details.aspx?id =5124

于 2012-04-18T12:16:44.317 に答える
0

私は最初にリンクに従ってローカルストレージを作成しました:

http://msdn.microsoft.com/en-us/library/windowsazure/ee758708.aspx

上記のSandrinoによって提案されました。Sandrinoに感謝します。次に、oledb接続を使用しましたが、「Microsoft.Jet.Oledb.4.0dllが登録されていません」というエラーが表示されました。次に、Azureサーバーにログオンし、IISで32ビットのアプリプール構成を変更しました。アプリプールを32ビットに変更するには、次のリンクを参照してください。

http://blog.nkadesign.com/2008/windows-2008-the-microsoftjetoledb40-provider-is-not-registered-on-the-local-machine/

于 2012-04-20T07:23:58.180 に答える
0

Azureにログオンして変更したとおっしゃったように、あなたが従ったアプローチは正しくありません。azureで実行されているVMは永続的なものではありません。更新がある場合は、新しいVMマシンを入手します。手動で変更するのではなく、このための方向転換を見つける必要があるかもしれません。Azureアプリで起動タスクを利用できます。以下のリンクを参照してください。

http://msdn.microsoft.com/en-us/library/gg456327.aspx

于 2012-04-20T11:44:37.783 に答える