JavaScriptでExcelファイルからデータの取得

先日、JavaScriptを使って、Excel上に記載した正規表現のリストにマッチングするアプリを公開しました。
今回は、上記のアプリの肝となっているJavaScriptでExcelファイルからデータを取得する部分に特化してまとめてみました。

使い方

下記のソースをメモ帳にコピーして、拡張子を「*.hta」にして保存してください。
後は、対象のファイルをダブルクリックすれば起動します。(Windows環境のみです)
Excelで開けるファイルを指定して「データ取得」ボタンを押下すると、ファイル内のデータが画面上に表示されます。

実際にどのような処理となっているかは、下記ソース内のコメント等で確認してください。

<html>
	<head>
		<meta charset='utf-8' />
		<title>JavaScriptでExcelファイルからデータ取得</title>
		<script  type='text/javascript'>
			// 画面サイズを変更する
			window.resizeTo(800, 600);

			// Excelを操作するために必要
			var excel = new ActiveXObject("Excel.Application");

			// 初期化処理
			function fileOpen() {
				// 画面からの入力値を取得
				var file = document.getElementById("file").value;

				// 画面を描画
				document.open();
				document.write("<html><head><meta charset='utf-8' />");
				document.write("<title>JavaScriptでExcelファイルからデータ取得</title></head>");
				document.write("<body style='background-color:#cccccc'>");

				// ブックを開く
				var workBook = excel.Workbooks.Open(file);

				// シートは一番左のシートで固定
				var workSheet = workBook.Sheets(1);

				// 1行目の出力(1行目に値が存在している列までを対象に出力)
				document.write("<table border='1'><tr>");
				var max_col = 1;
				while (1) {
					var cell = workSheet.Cells(1, max_col);
					// 対象セルの値が無い場合は処理を抜ける
					if (cell == null || cell.Value == undefined)
						break;
					// 値を出力する
					document.write("<th style='text-align: center;'>" + cell.Value + "</th>");
					// 次の列の値へ
					max_col++;
				}
				document.write("</tr>");

				// 2行目以降の出力(1列目に値が存在している行までを対象に出力)
				var max_row = 2;
				while (1) {
					var cell = workSheet.Cells(max_row, 1);
					// 対象セルの値が無い場合は処理を抜ける
					if (cell == null || cell.Value == undefined)
						break;
					// 1行目の最終列までを対象に値を出力する
					document.write("<tr>");
					for ( i = 1; i < max_col; i++) {
						cell = workSheet.Cells(max_row, i);
						document.write("<td>" + cell.Value + "</td>");
					}
					document.write("</tr>");
					// 次の行へ
					max_row++;
				}

				document.write("</table></body></html>");
				document.close();

				// Excelファイルを閉じる
				workBook.Close();
			}
		</script>

	</head>
	<body style='background-color:#cccccc'>
		<table>
			<tr>
				<th>対象ファイル</th><td>
				<input type='file' id='file' size='60'>
				</td>
			</tr>
			<tr>
				<th>
				<input type='button' value='データ取得' onclick='fileOpen()'>
				</th><td> </td>
			</tr>
		</table>
	</body>
</html>

以上です。

サブコンテンツ

公開中のAndroidアプリ(全て無料です)

ビジネス

おじさんのメモ帳 おじさんのメモ帳
シンプルなメモ帳
日報 日報
日報作成補助ツール
議事録 議事録
議事録作成補助ツール

学習(国語・算数)

漢字かな 漢字かな
漢字の読みの学習に
ひらがなプラス ひらがなプラス
かな・カナの学習に
暗算百問 暗算百問
毎日暗算で頭の体操
あんざん25 あんざん25
両手で計算してみよう

学習(理科・社会)

記号かな 地図記号
地図記号の学習に
魚かな 魚かな
海の生物の学習に
動物かな 動物かな
陸上の生物の学習に
野菜かな 野菜かな
植物な食物の学習に
元素記号 元素記号
元素記号の学習に

その他

こづかい帳 こづかい帳
計算力と金銭感覚を育もう
お絵かきプラス お絵かきプラス
メモや絵日記等に

このページの先頭へ