IE+JAVASCRIPTでのEXCELファイル編集方法について

[上に] [前に] [次に]
もえちゃん [E-Mail] 2000/01/17(月) 15:21:10
IE5.0+JAVASCRIPTを使って、以下のしくみの実現方法
を模索しています。
どなたかご教示の程よろしくお願いします。

[実現したいしくみ]
以下の1〜3の一連の処理をボタンクリック一回で完了させる。
1.サーバよりEXCELファイル(雛型ファイル)をダウンロード
  する。
2.特定のセルにIE上で入力された値を埋め込む。
3.更新されたファイルをクライアント側の特定のディレクトリに
  保存する。

[質問]
HTMLを使用してファイルのダウンロードは成功しました。
この時、EXCELが起動しダウンロードしたシートがアクティブに
なっています。
このシートに対してどのようにデータを埋め込めばよいのかわかりませ
ん。
AcvtiveXオブジェクト(GetObject関数など)を使うと
実現できるような気がするのですが。
どなたかご存知の方、いらっしゃいませんか?

hiro-kim 2000/01/17(月) 15:40:47
(1) Webページのフォームに,セル格納値と格納ディレクトリを入力。ボタンを押す。
(2) Webサーバ側のCGIプログラムが起動。Webサーバ側の雛形CSVテキストファイルをOpenして,値を埋め込んで,Webサーバ側の別ディレクトリに保存する。
……では,いけないのですか。

もえちゃん [E-Mail] 2000/01/17(月) 16:05:00
早速のご回答どうもありがとうございます。

雛型のExcelファイルは帳票のテンプレートのようなものを想定していますので、テキストファイルではちょっと役不足なのです。
ご指摘のようにサーバ側で処理をさせるような事も考えました。
例えばJAVAなどで直接EXCELファイルにデータを書きこむ事は可能でしょうか?

うぐいす 2000/01/17(月) 18:39:23
1)サイト上でデータを入力
2)結果を埋め込んだExcelファイルをサーバ上に作成
3)Excelファイルのダウンロード
というものでしたら、作成したことがあります。

私はASP(アクティブ サーバー ページ)を使用しています。
サーバー側の処理であればJavaScriptやVBScriptで可能だと思います。

# hiro-kimさんと同じ事を書いている気がするのですが・・・。

もえちゃん [E-Mail] 2000/01/17(月) 19:15:35
うぐいすさん、hiro-kimさんありがとうございます。
スキル不足でお恥ずかしいのですが良かったら教えてください。

1.ASPは全てのWebサーバがサポートしているのですか?
2.うぐいすさん案(Javascript)のコーディングサンプルなどありませんでしょうか?

うぐいす 2000/01/17(月) 20:30:59
ASPは残念ながら、WinNTサーバーのみのようです。
更に、私はVBScriptを使用しているため、JavaScriptのサンプルコードはありません。

とりあえず、ASP(VBScript)のソースを書き込んでおきます。
'(シングルコーテイション)は、VBではコメント表示の記号です。

===========================================================
<%@Language="VBScript"%>
<%
  ' ### Excel作成 ###
  '定数の宣言(Excelファイルのパス)
  const efpath = "c:\inetpub\wwwroot\test.xls"
  const dlpath = "http://www.hoge.co.jp/test.xls"

  '変数の宣言
  dim excelobj
  dim bookobj
  dim sheetobj

  dim item_a
  dim item_b
  dim item_c

  'テストデータを適当に代入
  item_a="test"
  item_b=30
  item_c=item_b/6

  'Excelファイルのオープン
  Set excelobj = CreateObject("Excel.Application")
  Set bookobj = excelobj.WorkBooks.Open(efpath)
  Set sheetobj = bookobj.Sheets(1)

  ' *** データの格納 ***
  'セルB5に'test'という文字列が表示される
  sheetobj.Cells(2,5).Value = item_a
  'セルc5に30という数値が表示される
  sheetobj.Cells(3,5).Value = item_b
  'セルd5に5という数値が表示される
  sheetobj.Cells(4,5).Value = item_c

  '終了処理
  bookobj.Save
  sheetobj.Application.Quit

  Set sheetobj = Nothing
  Set bookobj = Nothing
  Set excelobj = Nothing
%>
<html>
<head>
<title>Excel - Test</title>
</head>
<body>
  <!-- 本当は、圧縮ファイルにした方がいいと思うけど・・・ -->
  <a href="<%=dlpath%>">ダウンロードテスト</a>
</body>
</html>
===========================================================

もえちゃん [E-Mail] 2000/01/18(火) 10:03:00
うぐいすさん、ご親切にどうもありがとうございました。
サーバ側の処理+VBSCRIPTの方向で検討してみます。

もえちゃん 2000/01/18(火) 11:22:38
すみません、質問の続きです。
ASPがIISしかサポートしていないとすれば、WWWサーバがAIXの場合はVBScriptでの処理は無理だということですよね?
とすればJAVAなどを使うしかないのでしょうか?

hiro-kim 2000/01/18(火) 12:55:42
ASP(VBScript)はMicrosoft製品だからExcelデータ(.xls)に対応しているわけです。.xlsの直接読み書きはJavaの通常の機能ではできないです。.xlsのデータ形式がわかっていれば別ですが。

「雛型の帳票のテンプレート」というのが1Sheetかつ単純なものであれば,CSVテキスト形式の代わりにSYLKテキスト形式を使うことで,セル幅・セル高さ・文字修飾などの情報を維持したデータファイルを作ることが,一応できます。

このレベルではとてもニーズを満たさない,というようですと,当初の質問どおり,クライアント側での処理を考える必要があると思います。

もえちゃん [E-Mail] 2000/01/18(火) 17:22:17
しつこくて申し訳ありませんが、教えてください。
SYLK形式のファイルならば,サーバ側でJAVAやJAVASCRIPTを使用してアクセス可能だということでしょうか?

hiro-kim 2000/01/18(火) 18:12:21
テキストファイルなのですから,Excelで実際にSYLK形式で出力してみて試してみればよいと思います。

IBM AIX ではどんなWebサーバプログラムが動くのかすら私は知りませんから,それが SSJS(Server-Side JavaScript)に対応しているのかに至ってはまったく不明。Javaについては,IBMですからとうぜん対応しているでしょうけれど。

もえちゃん [E-Mail] 2000/01/18(火) 19:09:21
[[解決]]
どうにか解決できそうです。
どうもありがとうございました。

[上に] [前に] [次に]