// メニュー出力用div生成
function createMenu(html)
{
// divを生成
divTag = document.createElement('DIV')
// ボディにdivを追加
menudiv = document.body.appendChild(divTag)
menudiv.innerHTML = html
// メニュー生成後まだ未生成メニューがあれば続ける
exfi++
if(exfi < exFile.length) loadExcel(exFile[exfi])
else parent.frames.excelFrame.location.href = toolsdir + "howto.htm"
}
/*=======================================================*/
// Excel Web Page の読み込み
//
// メニュー完成後、メニューのリンクをクリックしたときに
// 右フレームへシートまたはブックを読み込む処理です。
// Excelブック内のシート読み込み
function loadToExcelFrame(sheetLength,imgid,itemurl,topurl)
{
var ex = parent.frames.excelFrame
if( sheetLength == 1 )
{
//単体シートページの場合excelFrameへtopurlを読込む
ex.location.href = exceldir + topurl
} else {
//複数シートページの場合
if(ex.frSheet)
{
//現在のExcelブック読込用フレームのファイル名を取得
var fileName = getFileName(ex.location.href)
if(fileName == topurl)
{
//ブックが同じならシートフレーム(frSheet)だけ書換える
ex.frSheet.location.href = exceldir + itemurl
} else {
//ブックが違えばexcelFrameごと書換えてからシートを読込む
ex.location.href = exceldir + topurl
setTimeout("ex.frSheet.location.href ='"+ exceldir + itemurl+"'",300)
}
} else {
//単体ページの場合ブックフレーム(excelFrame)ごと書換える
ex.location.href = exceldir + topurl
setTimeout("ex.frSheet.location.href ='"+ exceldir + itemurl+"'",300)
}
}
}
/*========================================================*/
// 補助処理
//
// メニューtopクリック時のホルダ画像とmenu表示/非表示切り替え
function openMenu(menuOj)
{
var menuName = menuOj.id + "_0"
var oj = document.getElementById(menuName)
if( oj.style.display == "none" )
{
menuOj.firstChild.setAttribute("src", toolsdir + "imgs/minus.gif")
oj.style.display = "block"
} else {
menuOj.firstChild.setAttribute("src", toolsdir + "imgs/plus.gif")
oj.style.display = "none"
}
}
// ブック内のシートのurlを配列.hrefに収めて返す
function getLinks(ex,menunum)
{
var links = ex.document.getElementsByTagName("Link")
if( links.length == 1 )
{
//単体ページの場合
shLinks = links
shLinks[0].href = [exFile[menunum]]
return shLinks
} else {
//複数ページの場合
var cnt = 0
var shLinks = new Array()
for( i = 0 ; i < links.length ; i++ )
{
if(links[i].getAttribute("id") == "shLink" &&
links[i].getAttribute("href") != ""){
shLinks[cnt] = links[i]
cnt ++
}
}
//document.allなら下記でも可
//shLinks = ex.document.getElementsByTagName("Link").item("shLink")
return shLinks
}
}
//urlの文字列からファイル名を取り出す
function getFileName( str )
{
var wk = ( "" + str ).split('/')
var res = wk[ wk.length-1 ]
if(res=="howto.htm")
var res = "tools/howto.htm"
else if(str.indexOf(".files") != -1) //O7対策
var res = wk[ wk.length-2 ] +"/"+wk[ wk.length-1 ]
return res
}
//-->
</script>
</head>
<body bgcolor = "#cccccc"
onload = "startLoadExcels()">
<!-- タイトル -->
<div id="title">
Excel WebViewer
<a style="text-decoration:none " href="./howto.htm" target="excelFrame">
<font color="#cccccc">[?]</font></a>
</div>
</body>
</html>
↑このスクリプトサンプル ./sample/f3/f3.htm
【動作ブラウザ】
win mac linux
n4 n6 n7 m1 e5 e6 o7 n4 n6 n7 m1 e5 s1 n4 n6 n7 m1 k3
× ○ ○ ○ ○ ○ ○ × ○ ○ ○ ○ ○ × ○ ○ ○ ×
このスクリプトは、とりあえず読み込んで
表示するだけだが、アイディアしだいでたと
えばファイル参照ダイアログを組み込んだり、
JavaScriptでできることは少し書き換えるだ
けで実装できるので挑戦してみて欲しい。
注意:
*このスクリプトはフレーム間のデータアクセスを含むので同一ドメイン内での処理を想定している。
*ExcelのWebページで保存後のhtmlを再度Excelで読むことも可能だがグラフなどはgif画像に置き換えられているなど元のExcelデータとは多少異なることに注意が必要。再度Excelを修正する際は元のExcelファイルを使うことをお勧めする。
////////////////////////////////////////////////////////////////////
*上記サンプルの動作環境は各サンプルをご確認ください
====================================================================
凡例
Win
n3 -- NetscapeNavogator 3.x
n4 -- NetscapeNavogator 4.x
n6 -- NetscapeNavogator 6.x
n7 -- NetscapeNavogator 7.x
m1 -- Mozilla1.x
e4 -- Internet Explorer 4.x
e5 -- Internet Explorer 5.x
e6 -- Internet Explorer 6.x
o6 -- Opera 6.0
o7 -- Opera 7.0
Mac
n3 -- NetscapeNavogator 3.x
n4 -- NetscapeNavogator 4.x
n6 -- NetscapeNavogator 6.x
n7 -- NetscapeNavogator 7.x
m1 -- Mozilla1.x
e4.5 -- Internet Explorer 4.5
e5 -- Internet Explorer 5.0 または 5.1
s1 -- Safari
Linux
n3 -- NetscapeNavogator 3.x
n4 -- NetscapeNavogator 4.x
n6 -- NetscapeNavogator 6.x
n7 -- NetscapeNavogator 7.x
m1 -- Mozilla1.x
k3 -- Konqueror 3.x
--------------------------------------------------------------------