SSブログ

Excelファイルのアップロードでデータベース登録(Javascript) [Webシステム]

 前回PHPExcelを使用したExcelファイルでのアップロードでデータ登録の記事を書きました。その後JavascriptでもExcelの読み書きが出来るSheetJSなるJavascriptライブラリがあることが分かったのでこれを使用し同じようなサンプルを作成してみました。
こちらで公開していますので試してみて下さい。何かあればこちらにMailください。



概要
SheetJSを使用してクライアント側でExcelデータをJSONに変換してサーバーにアップロード。サーバー側PHPでJSONデータをDBに登録。

アップロード用Excel サンプル
ファイル名、入力データ行数は任意で可、項目はデータベースに一致させる必要がある。一致していない場合は注意表示、空白行はスキップして次の行のデータを取り込みます。サンプルデータをここで公開しています。
nice!(0)  コメント(0) 

Excelファイルのアップロードでデータ登録(PHPExcel) [Webシステム]

 Web上のデータベースに大量のデータを登録したい場合、Web上の画面で入力フォームに1データづつ手入力で行うのは大変である。このような場合、入力使い慣れたExcelでデータを作成しExcel ファイルをアップロードすることで一括登録できれば便利である。そこでPHPExcelを使用してアップロードされたExcelファイルを読み取りデータベースに登録するスクリプを作成してみました。こちらで公開していますので試してみて下さい。何かあればこちらにMailください。

Data Upload・編集画面
マニアルでの入力、Excelアップロードでの複数行データの一括入力、入力データの変更・削除を行う画面。Excelファイル以外をアップロードした場合は注意表示します。
index20180208.png

入力用Excel
ファイル名、入力データ行数は任意で可、但し入力用の表開始位置はA2、項目はデータベースに一致させる必要がある。一致していない場合は注意表示がでる。空白行はスキップして次の行のデータを取り込む。サンプルデータをここで公開しています。
excel20180208.png
nice!(0)  コメント(0) 

データ変更画面での変更箇所の明示 [Webシステム]


 多くの入力項目がある画面でのデータ変更作業ではどの項目を変更したのか分からなくなることがある。また、折角変更したのに登録を忘れて他画面に遷移し、折角入力したデータを再入力するハメに陥ったことがありませんか。このような失敗がないよう、変更箇所が明示されるユーザーフレンドリーな画面を作成してみた。
    仕様
  • DBから取り出した編集データをlocalstorageに格納
  • 入力項目窓からフォーカスが外れた時点でlocalstorageに格納されたデータと入力データを比較。
  • 一致しない場合は入力窓の背景色を変更、変更フラグをセット
  • "他画面への遷移ボタン"オン時、変更フラグをチェックして変更箇所があれば、確認メッセージボックスを表示

データ編集  
項目名内容1内容2
入力1
入力2
入力3
入力4
入力5

nice!(0)  コメント(0) 

Javascriptでフラクタル図形を描いてみました [Webシステム]




HTML5のcanvasの勉強のため、フラクタル図形を描いてみました。作成にあたってこちらを参照させて頂きました。

シェルピンスキのギャスケット
色相■:

nice!(0)  コメント(0) 

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を使う場合
nice!(0)  コメント(0) 

文書管理システム(お試し版) [Webシステム]

 文書を共有サーバーに保管していると、時間とともに各自勝手にフォルダーを作ってしまい必要データを探すのに時間が掛かったり、文書のダブリ、ゴミデータが自然増殖してしまう経験がありませんか。
 またISO9000、14000等では文書管理が厳しく問われる。そこで簡易的な文書管理システムを作成してみた。これから文書の見直しチェック、文書変更時の関係者へのメール配信機能等を追加し、小規模なグループで実用的になるようアップデートしていく予定です。サンプルをここで公開しますので、試してみて下さい。
何かあればこちらにMailください。

ログイン画面
ユーザー名: user、パスワード: userでログインできます。
login20180131.png

登録画面
edit20180131.png

データ参照画面
dsp20180131.png
nice!(0)  コメント(0) 

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";


nice!(0)  コメント(0) 

ビットコイン(bitFlyer)の過去チャートをExcelで取得 [VBA/VBS]

  Excel VBAの勉強のためJSONデータを取得してみようと思い立ち、何か面白いものはないかと探していました。最近何かと世間をにぎわせているbitCoinの過去チャートがJSONデータで公開さしているサイトがあることをここで見つけました。この記事を参照させてもらいbitFlyerの過去チャートをダウンロードするExcel マクロをVBAで作成してみました。

サンプル画像
ここで公開しています。
bitcoin20180129.png

コード
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

nice!(0)  コメント(0) 

Google Map タイムラインもどき [Webシステム]

 Google Mapのタイムラインは機能も多く良く出来ており、かつ無料で使用でき個人で使用するには大変便利です。しかし位置情報データを何か別のWEBシステムの入力にそのままでは使用することができません。WEBシステムの入力用にボタンひとつで場所、時間の入力・編集が可能なものを作成してみました。これならWEBシステムのコンポーネントとして使用できそうです。

なお、現在地の取得にはMHTML5のGeolocation API、地図表示、緯度・経度からの住所変換にはGoogle Maps GeoCoding APIを使用しています。 ここで公開しています。
何かあればこちらにMailください。

使用用途(他にも色々考えられます)
  • WEB配達システムの運転・配達記録の入力
  • WEB農作業の記録(作業内容、成長記録写真)
  • WEB顧客管理システムの顧客訪問履歴入力
  • 待ち合わせ人の検索

使用方法
  • ログイン画面

  • ここをクリックするとログイン画面がでます。また"http://unazuki.tech/locationがあなたの位置情報を求めています。"の警告がでますので許可にしてください。
    ユーザー名、パスワードに各々userを入力するとサンプルデータが入った下図のような画面がでます。GPS機能が無いPCからのアクセスでは現在地の表示が不正確になります。私の環境ではIEはプロバイダーの場所?、Chromeは自宅近く。

    login20180128.png
  • メイン画面

  • main20180128.png
  • 登録場所編集画面

  • 削除ボタンで登録した場所を削除できます。コメント欄の内容は地図のピンをクリックした時に表示される内容です。 
    edit20180128.png
    nice!(0)  コメント(0) 

    「差し込み印刷」を使わないでWordにCSVデータの差し込み(差し込み印刷もどき その2) [VBA/VBS]


    以前にExcelからWord文書への「差し込み印刷もどき」を作成してみたが、同じように考えている方が多いようで当Blogで一番のアクセスがある記事となっています。
     帳票等で不定行数の表データを差し込みたい場合も多いが、前回の方式では実現できない。そこで不定行数の表データをWord文書に差し込むマクロを作成してみた。Word VBAに慣れるためExcelからWordを制御するのでは無く、Word VBAでCSVデータと差し込む方式で作成してみた。

    概要
    • 差し込むCSVデータを作成(data.csv)
    • csvData20180123.png
    • Word文書のCSVデータを差し込む表を作成(csv2word.docm)
    • word20180123.png
    • PDF出力
    • pdf20180123.png

    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は更新されませんので何度でも使用できます。


    nice!(0)  コメント(0) 

    この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。