10

この ASP.NET Web アプリケーションのユーザーが、特別にフォーマットされた Excel スプレッドシートをアップロードし、配列にスプレッドシートのデータを入力し、配列を Oracle ストアド プロシージャにバインドして、検証とデータベースへの挿入を実行できるようにする必要があります。Web サーバーのハード ディスクにデータを保存できなくても、Excel スプレッドシートからデータを読み取ることができなければなりません。これは私がどうすればよいか分からない部分です。簡単なコード例を次に示します。

<%--ASP.NET Declarative--%>
<asp:FileUpload ID="FileUpload1" runat="server" />
<asp:Button ID="Button1" runat="server" Text="Send File" OnClick="Button1_Click" />

// C# Code-Behind
protected void Button1_Click(object sender, EventArgs e) {
    var postedFile = FileUpload1.PostedFile;

    // ... Read file in memory and put in format to send to stored procedure ...

}

誰でもこれで私を助けることができますか?誰の配慮にも感謝します。

thx、
ゲイブ

4

6 に答える 6

8

これを行うための ExcelDataReader という優れた軽量オープン ソース API が Codeplex で見つかりました。

Excel ファイルの入力ストリームをオブジェクトに変換できSystem.Data.DataSetます (おそらく BIFF 仕様を使用して解析します)。

リンクは次のとおりです。

http://www.codeplex.com/ExcelDataReader

コードサンプルは次のとおりです。

<%--ASP.NET Declarative--%>
<asp:FileUpload ID="FileUpload1" runat="server" />
<asp:Button ID="Button1" runat="server" Text="Send File" OnClick="Button1_Click" />
<asp:GridView ID="GridView1" runat="server" />

// C# Code-Behind
protected void Button1_Click(object sender, EventArgs e) {
    // the ExcelDataReader takes a System.IO.Stream object
    var excelReader = new ExcelDataReader(FileUpload1.FileContent);
    FileUpload1.FileContent.Close();

    DataSet wb = excelReader.WorkbookData;
    // get the first worksheet of the workbook
    DataTable dt = excelReader.WorkbookData.Tables[0];

    GridView1.DataSource = dt.AsDataView();
    GridView1.DataBind();
}
于 2008-11-06T17:23:56.543 に答える
4

FileUpload1 を使用します。ファイルコンテンツストリーム。Excel ライブラリはストリームを直接処理できると思います。

于 2008-11-04T16:25:30.263 に答える
1

Excel の COM ライブラリは、ファイル以外のソースからのファイルの読み込みをサポートしていません。しかし、Excel ファイルの読み書きを可能にする多くのサードパーティ コンポーネントが存在します。

それ以外の場合は、 [MS-XLS]: Excel Binary File Format (.xls) Structure Specificationで XLS ファイル形式のドキュメントを参照できます。

または、Sharepoint Server と同じ方法で Office ファイルを処理することもできます。Microsoft.Office.Excel.Server.WebServices 名前空間を参照してください。

于 2008-11-04T16:58:55.237 に答える
1

おそらくcsvreaderを見てください。csv、xls、およびxlsxを読み取ります。

http://www.csvreader.com

于 2008-11-04T23:38:43.743 に答える
0

これは私が最近遊んでいるものです。

この投稿を確認してください: Excel ワークブックをメモリ ストリーム .NET に書き込む

これは、Excel ブックを XML として操作できる、Carlos Aguilar Mares による優れたライブラリを指しています。

ExcelXMLライター

サーバーにExcelをインストールする必要はありません(Web経由でこれにアクセスしているため、とにかくMSライセンスが壊れています)。

を使用して、Excel ワークブックをストリームとして読み込むことができます。Workbook.Load(stream)

于 2008-11-04T17:39:54.140 に答える
-1

代わりに、ユーザーに CSV ファイルをアップロードしてもらうことはできますか? プレーン テキスト ファイルを扱う方がはるかに簡単です。以前にも同様の問題があり、ユーザーに尋ねたところ、彼らはOKで、多くの作業を節約できました.

幸運を。

于 2008-11-04T18:27:58.193 に答える