- - PR -
C# で Excel の任意シートの任意セルの内容を読むには
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2004-07-26 00:36
C#.NET にて、Excel の任意シートの任意セルの内容の読み込みを
行いたいのですが、その手法を教えてください。 具体的には、アンケート用紙のようなレイアウトは固定ではある けれども、その中で必要な情報を持ったセルの配置が複雑なシート より、必要なセルの情報を取り出したいのです。 さらに、シート内で 1 ページ分に当たる例えば 10 × 20 のセル 範囲が(入力者の COPY&PASTE により)縦に任意の回数繰り返され、 その構成のシートもブック内に複数存在する(ただし、シート名 は既定ルールに則る)。そういった構成のブックが複数寄せられ ることを想定します。 これらの Excel ファイルを読み込み、データベースに入力値を 登録したいと考えています。 お聞きしたいことは以下の4点です。 @実現可能でしょうか? A実現可能であれば、どのような手法で行えばよいでしょうか? Bその手法は、C#.NET パッケージのみで可能でしょうか? CC#.NET のみでは不可能である場合、他に必要なコンポーネント は何でしょうか? 簡易な矩形のセル範囲を命名してレコードセットとして取得する 手法は過去のスレッドなどから可能であると分かったのですが、 想定するケースに当てはめることができませんでした。 長文をお読みいただき、ありがとうございます。 どうか、お知恵をお貸しください。 | ||||
|
投稿日時: 2004-07-26 08:48
1.可能です。 2.どんなに複雑であっても、所詮はエクセル。行と列でアクセス可能です。 3.いいえ。 4.収集するエクセルの、最上位バージョンが必要です。 任意のシートや任意のセルにアクセスする方法は、「マクロ記録」を利用するとよいでしょう。ただし、この方法では「特定のシート、セル」になるので、適切に変更する必要があります。 回答者により、任意の場所に任意の記入をされると、人間が目視で確認しなければならなくなります。機械的に判別できる「仕掛け」を作る必要があります。これは普通、「特定の列」であったり、「特定の文字列があるセルから特定できるセル」(「※」の右側など)であったります。 「回答」と「質問」が結びつかなければ、アンケートになりえません。したがって、「質問」と「回答」が結びつけられるよう、回答者による「任意」は、大幅に制限する必要があると思います。。 | ||||
|
投稿日時: 2004-07-26 08:54
めーと申します。
1ページのレイアウトが固定であるならば、ページの支点となるセルを求め、 その位置からの相対位置やセル範囲の命名で該当セルの値を 取得することができると思います。 また、ページが縦に複数回繰り返される場合でも、列が揃っているのであれば 縦方向にページの支点を検索することで、各ページを識別することができると 思います。(1シートの行はたかだか65000行程度なので) Excelの操作については、Microsoft Excel Object LibraryのCOMを 使用することで、値の取得に限定すればVBAと同じように扱うことができると 思います。(それ以上の操作はわかりませんが) Microsoft Excel Object Libraryについては以下を参照ください。 http://backno.mag2.com/reader/BackBody?id=200407150800000000069455000 http://backno.mag2.com/reader/BackBody?id=200407220800000000069455000 | ||||
|
投稿日時: 2004-08-02 13:00
Jitta 様
めー様 ご返信ありがとうございます。 ご提案いただいた手法や留意点、またキーワード共に大いに参考に させて頂きました。 ただ、蛇足ではあるのですが…結局、ワークシート数は固定となり、 ワークシート毎に全ての項目範囲(A1:X65535)を命名して Data- Set として取得して、プログラムで解析することとなりました。 返信が遅くなりましてすみません。 今後ともよろしくお願いします。 |
1