元の三流解説は、
三流君ASP:ADO Excel(*.xls)接続 [Sheet1$]でシート指定、列名無しで遊ぶ
↑を見て、笑ってやってください。
ブログに過去のソースコードをアップして、ブログの検索機能で利用してます(利用予定です)
※古くさいコードが多いです・・・
ADOでExcel(*.xls)に接続 ソースコード
<%@LANGUAGE=VBScript%> <html> <head><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=x-sjis"> <title>ADOでExcel(*.xls)に接続 [Sheet1$]で列名無しテスト</title> </head> <body> <h1>ADOでExcel(*.xls)に接続 [Sheet1$]で列名無しテスト</h1> test084-1.asp<br> ASPからADOを使用してExcel(*.xls)に接続する<br> Sheet1$でシートにアクセスしてみました。<br> シートのイメージは、<br> <img src="http://www.ken3.org/backno/gif/asp084-01.gif"><br> です。 [<a Href="test084.xls" TARGET="_blank">test084.xls</a>]←がファイルです<br> <br> で<b>select * from Sheet1$</b>とすると<br> Microsoft OLE DB Provider for ODBC Drivers エラー '80040e14' <br> [Microsoft][ODBC Excel Driver] FROM 句の構文エラーです。 <br> /cgi-bin/test/test084-1.asp, 行 36 <br> と、<b>エラー</b>となってしまう・・(涙)何でと思いつつ<br> それなら、<b>select * from [Sheet1$]</b>と[]で囲うのが正解。 <hr> <% 'ADO DB Recordset オブジェクトを作成する、英文そのままじゃん Set rs=Server.CreateObject("ADODB.Recordset") '接続文字 Con = "Driver={Microsoft Excel Driver (*.xls)};DBQ=" & _ Server.MapPath("test084.xls") & ";" Response.Write "作った、使った接続文字列は<br>" Response.Write "<CODE>Con = <b>" & Con & "</b></CODE><hr>" 'SQL文 Sheet1$として、シートのみ指定してみます strSQL = "select * from [Sheet1$]" Response.Write "作った、使ったSQL文字列は<br>" Response.Write "<CODE>strSQL = <b>" & strSQL & "</b></CODE><hr>" '接続文字列、SQLを渡して、レコードセットを開く Rs.Open strSQL, Con, 0 '0=adOpenForwardOnly Response.Write "<CODE>Rs.Open strSQL, Con, 0</CODE>" Response.Write "で、レコードセットを作成しました<hr>" 'テーブルでデータを表示する Response.Write "<TABLE border='1'>" '項目名の表示(シートしか指定してないのに?) Response.Write "<TR>" For Each FldA In Rs.Fields 'フィールド分ループする Response.Write "<TH>" & FldA.Name & "</TH>" '.Nameでフィールド名を表示 Next Response.Write "</TR>" 'レコードが終了するまでループ(シートしか指定してないけど大丈夫?) Do While Rs.EOF = False Response.Write "<TR>" For Each FldA In Rs.Fields 'フィールド分ループする Response.Write "<TD>" & FldA.Value & "</TD>" '.Valueで値を表示 Next Response.Write "</TR>" Rs.MoveNext '次のレコードへ移動 Loop Response.Write "</TABLE>" 'テーブル終了 Rs.Close %> <hr> 列名無しで接続できるが、先頭行が強引にフィールド名となってしまう。<br> B3のセルに対して、アクセスするには、<br> 先頭行(A1やB1,C1,D1)がフィールド名となっているので、<br> Open時のカーソルは、A2,B2,C2と2行目からのスタートなので、<br> 3行目に行くために、.MoveNextで1行空読みして、<br> Rs.Fields(1)でOKかなぁ。<hr> <% 'レコードセットを再オープンする Response.Write "Rs.Open strSQL, Con, 0<br>" Rs.Open strSQL, Con, 0 '0=adOpenForwardOnly Response.Write "Rs.MoveNext<br>" Rs.MoveNext '1行飛ばす Response.Write "Rs.Fields(1)は<big>[" & Rs.Fields(1) & "]</big>です<br>" Response.Write "Rs.MoveNext<br>" Rs.MoveNext '1行飛ばす Response.Write "現在のRs.Fields(0)は<big>[" & Rs.Fields(0) & "]</big>です" Rs.Close 'クローズする %> <hr> </body> </html>
↑をテスト実行する→http://www.ken3.org/cgi-bin/test/test084-1.asp← 実行する
↑コードの三流解説は、
三流君ASP:ADO Excel(*.xls)接続 [Sheet1$]でシート指定、列名無しで遊ぶ
を見て、笑ってやってください。
ASPの解説 トップページは
三流君ASPで遊ぶ、失敗する
です。こちらもよろしく・・・