@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

Spreadsheetの読み込み

1
投稿者投稿内容
未記入
会議室デビュー日: 2007/01/15
投稿数: 8
投稿日時: 2007-01-19 19:41
いつもお世話になります。

@Spreadsheet解説ページがなかなか見つからなく、表題の件のSpreadsheetの読み込みができない状態です。
ASpreadsheetを実装するにあたって疑問な点があるのですが、エクセル(通常保存のもの:拡張子=.xls)を読み込むのか、エクセルをSpreadsheet形式(対話式変換後のもの:拡張子=.html)にしたものを読み込むのかが分かりません。

状況としましては、COMコンポーネント(Microsoft Office Spreadsheet 9.0)の追加後、参照設定でOWC.DLLの追加を行いました。

<記述>
using OWC;

string html = "http://localhost/...*.html";
Spreadsheet Spreadsheet1 = new Spreadsheet();
Spreadsheet1.HTMLURL = html;

以上のように記述しております。
最終的には、DB(SQL Server)からデータを読み、直接Spreadsheetへ出力するか、もしくは一旦エクセルへ落としSpreadsheetへ読み込む。
クライアント側で編集作業は行わないものとし(プロテクト)、参照のみ可能(オートフィルタ機能は必要)というのが完成形となります。

上記の状態で実行するとエラーは起きませんが、Spreadsheetは白紙のままとなってしまいます。

Spreadsheet.TitleBar.Caption = "123456789";

ということも試しに追加してみましたが、タイトルの変更も行われませんでした。

大変長い文章となってしまいましたが、VC#ははじめたばかりの超初心者なので、参考になるサイト等あれば宜しくお願い致します。
未記入
会議室デビュー日: 2007/01/15
投稿数: 8
投稿日時: 2007-01-19 19:46
申し訳ございません。当方の環境を忘れてました。

環境
Win 2000
Office 2000
Microsoft Visual C# .NET
.NET FrameWork 1.0
かめたろ
ぬし
会議室デビュー日: 2003/03/20
投稿数: 255
投稿日時: 2007-01-23 11:17
Office Web Components の Spreadsheet の件ですね。

引用:
未記入さんの書き込み (2007-01-19 19:41) より:
ASpreadsheetを実装するにあたって疑問な点があるのですが、エクセル(通常保存のもの:拡張子=.xls)を読み込むのか、エクセルをSpreadsheet形式(対話式変換後のもの:拡張子=.html)にしたものを読み込むのかが分かりません。


 xls用のプロパティやメソッドが見当たらないため、xlsを読み込むことはムリと思われます。また、対話式変換後のhtmlも読み込むことはできません。そのhtmlファイルをテキストエディタで覗けば理由は分かります。
 Excelでhtmlやmht形式で対話機能ONにして保存した場合、そのファイル自体に対話機能が含まれます。objectタグでAxSpreadsheetが指定されていて、そのActiveXの XMLDATAプロパティ にブックの情報(XMLスプレッド形式)が設定されています。

ドキュメントを見たわけではないので正確ではないとおもいますが・・・
Version 11.0.0.6555です。

★表示するデータを指定するプロパティ
  ・XMLURL
  ・XMLDATA
  ・HTMLURL
  ・HTMLDATA
  ・CSVURL
  ・CSVDATA
 URL系はファイルを指定、DATA系はデータそのもの(文字列)を指定。
 XMLは「XML スプレッドシート」形式
 HTMLは「Web ページ」形式(対話機能ONは不可、ブック全体も不可)
 CSVは「CSV (カンマ区切り)」形式 ←これは試してないけどね

 あと、DataTypeプロパティに上記のどのプロパティを使うのかを指定することも必要!
 ちなみに、〜DATAのプロパティから、Spreadsheet上での変更が反映されたデータを取得することができます。


引用:
未記入さんの書き込み (2007-01-19 19:41) より:
<記述>
using OWC;

string html = "http://localhost/...*.html";
Spreadsheet Spreadsheet1 = new Spreadsheet();
Spreadsheet1.HTMLURL = html;

以上のように記述しております。
 :
上記の状態で実行するとエラーは起きませんが、Spreadsheetは白紙のままとなってしまいます。


@HTMLURLに指定しているhtmlファイルの形式がAxSpreadsheetに適していない。
ADataTypeプロパティに"HTMLURL"が設定されていない。
思いつくのはこんなところ。


引用:
未記入さんの書き込み (2007-01-19 19:41) より:
最終的には、DB(SQL Server)からデータを読み、直接Spreadsheetへ出力するか、もしくは一旦エクセルへ落としSpreadsheetへ読み込む。
クライアント側で編集作業は行わないものとし(プロテクト)、参照のみ可能(オートフィルタ機能は必要)というのが完成形となります。


XMLスプレッドシート形式でDBに保存したりファイルに保存したりしてます。フル機能で使えるのはたぶんxml形式だけかと。シートにデータを埋め込んだりするために、System.Xml.XmlDocumentを使ったりしました。同じ内容でxml形式とxls形式のサイズを比較すると、ほとんどの場合xmlの方がかなりでかくなってしまうのが痛いところ。


引用:
未記入さんの書き込み (2007-01-19 19:41) より:
Spreadsheet.TitleBar.Caption = "123456789";

ということも試しに追加してみましたが、タイトルの変更も行われませんでした。


タイトルバー自体、表示されていますか?DisplayTitleBarプロパティがFalseになってない?
未記入
会議室デビュー日: 2007/01/15
投稿数: 8
投稿日時: 2007-01-23 20:23
かめたろさんいつもありがとうございます。

結果から言いますと、Office Web ComponentsのSpreadsheetの読み込みができました。
詳細については、COMコンポーネントから追加をするのではなく、まずExcelにてSpreadSheetを作成し、それをVisualStudioで開き、データの取り込み部(SQL ServerへのSelect文→取得データをHTMLDATAへLoop)を追加しました。

少々時間がかかりましたが、ひとまず理想通り動いたのでほっとしました。
今後とも宜しくお願い致します。
1

スキルアップ/キャリアアップ(JOB@IT)