Excelファイルのアップロードでデータベース登録(Javascript) [Webシステム]
前回PHPExcelを使用したExcelファイルでのアップロードでデータ登録の記事を書きました。その後JavascriptでもExcelの読み書きが出来るSheetJSなるJavascriptライブラリがあることが分かったのでこれを使用し同じようなサンプルを作成してみました。
こちらで公開していますので試してみて下さい。何かあればこちらにMailください。
概要
SheetJSを使用してクライアント側でExcelデータをJSONに変換してサーバーにアップロード。サーバー側PHPでJSONデータをDBに登録。
アップロード用Excel サンプル
ファイル名、入力データ行数は任意で可、項目はデータベースに一致させる必要がある。一致していない場合は注意表示、空白行はスキップして次の行のデータを取り込みます。サンプルデータをここで公開しています。
こちらで公開していますので試してみて下さい。何かあればこちらにMailください。
概要
SheetJSを使用してクライアント側でExcelデータをJSONに変換してサーバーにアップロード。サーバー側PHPでJSONデータをDBに登録。
アップロード用Excel サンプル
ファイル名、入力データ行数は任意で可、項目はデータベースに一致させる必要がある。一致していない場合は注意表示、空白行はスキップして次の行のデータを取り込みます。サンプルデータをここで公開しています。
Excelファイルのアップロードでデータ登録(PHPExcel) [Webシステム]
Web上のデータベースに大量のデータを登録したい場合、Web上の画面で入力フォームに1データづつ手入力で行うのは大変である。このような場合、入力使い慣れたExcelでデータを作成しExcel ファイルをアップロードすることで一括登録できれば便利である。そこでPHPExcelを使用してアップロードされたExcelファイルを読み取りデータベースに登録するスクリプを作成してみました。こちらで公開していますので試してみて下さい。何かあればこちらにMailください。
Data Upload・編集画面
マニアルでの入力、Excelアップロードでの複数行データの一括入力、入力データの変更・削除を行う画面。Excelファイル以外をアップロードした場合は注意表示します。
入力用Excel
ファイル名、入力データ行数は任意で可、但し入力用の表開始位置はA2、項目はデータベースに一致させる必要がある。一致していない場合は注意表示がでる。空白行はスキップして次の行のデータを取り込む。サンプルデータをここで公開しています。
Data Upload・編集画面
マニアルでの入力、Excelアップロードでの複数行データの一括入力、入力データの変更・削除を行う画面。Excelファイル以外をアップロードした場合は注意表示します。
入力用Excel
ファイル名、入力データ行数は任意で可、但し入力用の表開始位置はA2、項目はデータベースに一致させる必要がある。一致していない場合は注意表示がでる。空白行はスキップして次の行のデータを取り込む。サンプルデータをここで公開しています。
データ変更画面での変更箇所の明示 [Webシステム]
多くの入力項目がある画面でのデータ変更作業ではどの項目を変更したのか分からなくなることがある。また、折角変更したのに登録を忘れて他画面に遷移し、折角入力したデータを再入力するハメに陥ったことがありませんか。このような失敗がないよう、変更箇所が明示されるユーザーフレンドリーな画面を作成してみた。
-
仕様
- DBから取り出した編集データをlocalstorageに格納
- 入力項目窓からフォーカスが外れた時点でlocalstorageに格納されたデータと入力データを比較。 一致しない場合は入力窓の背景色を変更、変更フラグをセット
- "他画面への遷移ボタン"オン時、変更フラグをチェックして変更箇所があれば、確認メッセージボックスを表示
データ編集
項目名 | 内容1 | 内容2 |
---|---|---|
入力1 | ||
入力2 | ||
入力3 | ||
入力4 | ||
入力5 |
VBA ReDimではまる [VBA/VBS]
”「差し込み印刷」を使わないでWordにCSVデータの差し込み”を作成していた時の話。
何列あるか分からないCSVデータ1行分のデータを配列に取り込むため、読み込む前にReDimで配列の要素数を再定義するコードを書きました。しかし結果を見ると最後のデータのみが配列に取り込まれており、前のデータは全て空。冷静に考えればReDimの使い方の問題と直ぐに気づくはずであるが。。Preserveキーワードを付けないでReDimで再定義すると、それまで格納されていたデータがクリアされてしまう仕様でした。データが格納された配列にデータ追加したいときReDimを使う場合が多いと思うが。クリアしたい場合キーワードを付けるほうが親切な仕様なのでは。
コード
Do Until EOF(1) ReDim Preserve tmp(i) ← Preserveが抜けていた。 Line Input #1, strLine tmp(i) = strLine i = i + 1 Loop
ReDimを使う場合
文書管理システム(お試し版) [Webシステム]
文書を共有サーバーに保管していると、時間とともに各自勝手にフォルダーを作ってしまい必要データを探すのに時間が掛かったり、文書のダブリ、ゴミデータが自然増殖してしまう経験がありませんか。
またISO9000、14000等では文書管理が厳しく問われる。そこで簡易的な文書管理システムを作成してみた。これから文書の見直しチェック、文書変更時の関係者へのメール配信機能等を追加し、小規模なグループで実用的になるようアップデートしていく予定です。サンプルをここで公開しますので、試してみて下さい。
何かあればこちらにMailください。
ログイン画面
ユーザー名: user、パスワード: userでログインできます。
登録画面
データ参照画面
またISO9000、14000等では文書管理が厳しく問われる。そこで簡易的な文書管理システムを作成してみた。これから文書の見直しチェック、文書変更時の関係者へのメール配信機能等を追加し、小規模なグループで実用的になるようアップデートしていく予定です。サンプルをここで公開しますので、試してみて下さい。
何かあればこちらにMailください。
ログイン画面
ユーザー名: user、パスワード: userでログインできます。
登録画面
データ参照画面
Googleリバース ジオコーディングAPI が日本語にならない [PHP]
Google Map タイムラインもどきを作成していた時に、Googleのリバース ジオコーディング(住所検索)を使用して緯度・経度から住所をJSONで取得しようとしたときに苦労したので備忘録として記載。
Javascriptでの取得
以下で日本語のJSONデータが返りました。
getJSON(’https://maps.googleapis.com/maps/api/geocode/json?latlng=緯度,経度&key=mykey’)
PHPのでの取得
javascriptと同じurlで要求しfile_get_contents()で取り込んだら英文でJSONデータが返ってきました。
$url ="https://maps.googleapis.com/maps/api/geocode/json?latlng=緯度,経度&key={mykey}"; $json = file_get_contents($url);
ブラウザー上でurl窓に上記urlを入れて送ると、日本語で返ってくるのに。。
そこで言語パラメータが必要と思い、デベロッパー ガイドを読みlanguage=jpを指定したが、返ってくるのは英文のまま。ここで原因が分からず、web検索したがヒットする記事がでない。
$url ="https://maps.googleapis.com/maps/api/geocode/json?latlng=緯度,経度&key={mykey}&language=jp";
もう一度、Googleデベロッパー ガイドを読み直しら、サポートされる言語のリストにサポートされる言語のリストがあり日本語 language=jaとありました。何のことは無いjpとjaの違いでした。以下に変更したら無事日本語で住所が返りました。
$url ="https://maps.googleapis.com/maps/api/geocode/json?latlng=緯度,経度&key={mykey}&language=ja";
ビットコイン(bitFlyer)の過去チャートをExcelで取得 [VBA/VBS]
Excel VBAの勉強のためJSONデータを取得してみようと思い立ち、何か面白いものはないかと探していました。最近何かと世間をにぎわせているbitCoinの過去チャートがJSONデータで公開さしているサイトがあることをここで見つけました。この記事を参照させてもらいbitFlyerの過去チャートをダウンロードするExcel マクロをVBAで作成してみました。
サンプル画像
ここで公開しています。
コード
サンプル画像
ここで公開しています。
コード
Sub get_chart() '過去データの取得 Dim targetURI Dim HttpReq Dim oXML Dim sc, objJSON, rcd Dim i As Integer targetURI = "https://min-api.cryptocompare.com/data/histohour?fsym=BTC&tsym=JPY&limit=2000&e=bitFlyer" Set HttpReq = CreateObject("MSXML2.XMLHTTP") HttpReq.Open "GET", targetURI, False HttpReq.send (Null) Dim restext As String With CreateObject("MSXML2.XMLHTTP") .Open "GET", targetURI, False .send Set oXML = .responseXML restext = .responseText End With Set sc = CreateObject("ScriptControl") sc.Language = "JScript" sc.AddCode "function jsonParse(s) { return eval('(' + s + ')'); }" Set objJSON = sc.CodeObject.jsonParse(restext) i = 5 'データ先頭行 For Each rcd In objJSON.Data Cells(i, 1) = (CallByName(rcd, "time", VbGet) + 32400) / 86400 + 25569 Cells(i, 2) = CallByName(rcd, "open", VbGet) Cells(i, 3) = CallByName(rcd, "close", VbGet) Cells(i, 4) = rcd.high Cells(i, 5) = rcd.low Cells(i, 6) = rcd.volumefrom Cells(i, 7) = rcd.volumeto i = i + 1 Next End Sub Sub get_rate() '現在のレート Dim targetURI Dim HttpReq Dim oXML Dim sc, objJSON, rcd targetURI = "https://api.bitflyer.jp/v1/ticker?product_code=BTC_JPY" Set HttpReq = CreateObject("MSXML2.XMLHTTP") HttpReq.Open "GET", targetURI, False HttpReq.send (Null) Dim restext As String With CreateObject("MSXML2.XMLHTTP") .Open "GET", targetURI, False .send Set oXML = .responseXML restext = .responseText End With Set sc = CreateObject("ScriptControl") sc.Language = "JScript" sc.AddCode "function jsonParse(s) { return eval('(' + s + ')'); }" Set objJSON = sc.CodeObject.jsonParse(restext) Cells(3, 4) = objJSON.timestamp Cells(3, 7) = objJSON.ltp Cells(3, 8) = objJSON.best_bid Cells(3, 9) = objJSON.best_ask End Sub
Google Map タイムラインもどき [Webシステム]
Google Mapのタイムラインは機能も多く良く出来ており、かつ無料で使用でき個人で使用するには大変便利です。しかし位置情報データを何か別のWEBシステムの入力にそのままでは使用することができません。WEBシステムの入力用にボタンひとつで場所、時間の入力・編集が可能なものを作成してみました。これならWEBシステムのコンポーネントとして使用できそうです。
なお、現在地の取得にはMHTML5のGeolocation API、地図表示、緯度・経度からの住所変換にはGoogle Maps GeoCoding APIを使用しています。 ここで公開しています。
何かあればこちらにMailください。
使用用途(他にも色々考えられます)
使用方法
ログイン画面
ここをクリックするとログイン画面がでます。また"http://unazuki.tech/locationがあなたの位置情報を求めています。"の警告がでますので許可にしてください。
ユーザー名、パスワードに各々userを入力するとサンプルデータが入った下図のような画面がでます。GPS機能が無いPCからのアクセスでは現在地の表示が不正確になります。私の環境ではIEはプロバイダーの場所?、Chromeは自宅近く。
メイン画面
登録場所編集画面
削除ボタンで登録した場所を削除できます。コメント欄の内容は地図のピンをクリックした時に表示される内容です。
なお、現在地の取得にはMHTML5のGeolocation API、地図表示、緯度・経度からの住所変換にはGoogle Maps GeoCoding APIを使用しています。 ここで公開しています。
何かあればこちらにMailください。
使用用途(他にも色々考えられます)
- WEB配達システムの運転・配達記録の入力
- WEB農作業の記録(作業内容、成長記録写真)
- WEB顧客管理システムの顧客訪問履歴入力
- 待ち合わせ人の検索
使用方法
ここをクリックするとログイン画面がでます。また"http://unazuki.tech/locationがあなたの位置情報を求めています。"の警告がでますので許可にしてください。
ユーザー名、パスワードに各々userを入力するとサンプルデータが入った下図のような画面がでます。GPS機能が無いPCからのアクセスでは現在地の表示が不正確になります。私の環境ではIEはプロバイダーの場所?、Chromeは自宅近く。
削除ボタンで登録した場所を削除できます。コメント欄の内容は地図のピンをクリックした時に表示される内容です。
「差し込み印刷」を使わないでWordにCSVデータの差し込み(差し込み印刷もどき その2) [VBA/VBS]
以前にExcelからWord文書への「差し込み印刷もどき」を作成してみたが、同じように考えている方が多いようで当Blogで一番のアクセスがある記事となっています。
帳票等で不定行数の表データを差し込みたい場合も多いが、前回の方式では実現できない。そこで不定行数の表データをWord文書に差し込むマクロを作成してみた。Word VBAに慣れるためExcelからWordを制御するのでは無く、Word VBAでCSVデータと差し込む方式で作成してみた。
概要
Word VBAコード
Public Sub read_csv() Dim Path As String, file As String, buf As String, strLine As String, data_ary() As Variant Dim arrLine As Variant, tmp() As String Dim max_n As Long, i As Long, j As Long, max_c As Long Dim myPath As String myPath = ActiveDocument.Path file = myPath & "\data.csv" 'CSVデータ読み取り i = 0 Open file For Input As #1 'CSVファイルを開く Do Until EOF(1) ReDim Preserve tmp(i) Line Input #1, strLine tmp(i) = strLine i = i + 1 Loop Close #1 '2次元配列に格納 max_n = UBound(tmp) max_c = UBound(Split(tmp(0), ",")) ReDim data_ary(max_n + 1, max_c + 1) As Variant For i = 0 To UBound(tmp) arrLine = Split(tmp(i), ",") For j = 0 To UBound(arrLine) - 1 data_ary(i, j) = arrLine(j) Next j Next i Close #1 'データ書き込み If ActiveDocument.Tables.Count >= 1 Then For i = 1 To max_n For j = 0 To max_c With ActiveDocument.Tables(1).Cell(Row:=i + 2, Column:=j + 1).Range .Delete .InsertAfter Text:=data_ary(i, j) End With Next j ActiveDocument.Tables(1).Rows.Add Next i End If 'pdf出力 ActiveDocument.ExportAsFixedFormat _ OutputFileName:=myPath & "\" & "出力.pdf", _ ExportFormat:=wdExportFormatPDF '終了 MsgBox "完了しました。" Application.Quit SaveChanges:=wdDoNotSaveChanges End Sub
サンプルの使用方法
- ダウンロード Wordファイル(csv2word.docm)はこちら、CSVファイル(data.csv)はこちら
- サンプルのWord、CSVファイルは同じフォルダー内に保存
- Word(csv2word.docm)を起動すると、セキュリティの警告がでますがコンテンツの有効化ボタンをクリック。
- 実行ボタンを押すと、CSVデータが差し込まれたPDFファイル"出力.pdf"が作成されます。なおcsv2word.docmは更新されませんので何度でも使用できます。