himorogiの日記

主にプログラミングに関することなど。少々ハード(電子工作)についても。

2014-01-01から1年間の記事一覧

Excel Workbook から SQLite データベースを構築するためのツールを PowerShell で整備中。

最初は try{}catch{} でエラー処理てんこ盛りにしようと思っていた。だけど PowerShell ISE 上でスクリプトを走らせるなら、余計な処理せずに ISE のエラーメッセージを素直に見てた方が状況把握しやすいのでエラー処理は省いた。

Unicode text ファイルを SQLIte デフォルトの text ファイルに変換する PowerShell スクリプト

Excel の Unicode text 出力は BOM が付くので SQLite からは読み込めない(はず)。 どうせ BOM 外しに変換するなら、ついでに encoding と separator も変更することにした。 このスクリプトは、chooseCSVFileで選択したtextファイルと同じフォルダにある…

PowerShell から Excel を操作して Workbook を Unicode text として保存するスクリプト

このスクリプトは、chooseExcelFileで選択したExcelWorkbookと同じフォルダにある全てのExcelWorkbookをUnicode textファイルに変換する。 xls2UnicodeTxt と chooseExcelFile は .psm1 としてそのうちモジュール化したい。 # toolXls2UnicodeTxt.ps1 # hand…

MS Access では扱えない 255 以上のカラム数のテーブルを SQLite を使って管理することになった。

データは Excel ファイルで展開されてくるため、Excel のファイルを SQLite で取り込めるように変換する手順をまとめた。 ただExcelが吐き出すテキストファイルフォーマットは、データ透過性が保証されるものが一つもないため、本来ならデータ交換に推奨でき…

PowerShellからExcelが出力したUnicodeテキストをUFT8 BOM無し '|' 区切りに変換

SQLiteデフォルト設定のインポートテキスト形式として保存する方法 SQLite のエンコーディングと区切り文字をデフォルトから変更しない場合は、ExcelからUnicodeテキストとして保存されたファイルを、さらにUTF8 BOM無し'|' 区切りに変更する必要がある。 UT…

PowerShell から ExcelWorkBook を テキストとして保存

PowerShell から Excel.Application オブジェクトを開き、WorkBook を Unicode テキストとして保存する SQLite のデフォルトエンコーディングは UTF8 なので、以下のように PRAGMA encoding = "UFT-16le"エンコーディングをUnicode(LittelEndian)に変更(ATT…

Excel WorkBook をテキストとして保存する場合の挙動の違い

Unicode テキスト(*.txt) Excelから ファイル[名前を付けて保存] ファイルの種類[Unicode テキスト(*.txt)] を選択すると、Unicode(UTF-16 LittelEndian/BOM付き/Tab区切り)テキストとして保存される。 この時、 Cell 中に含まれるHT:horizontal tabulation(…

おまけ:numbers の生成

スクリプトエディタ版 app = Application.currentApplication(); app.includeStandardAdditions =true; function numbers(x){ return ( "0000" + Math.floor( Math.random()*Math.pow(10,x) ) ).substr(-x) } app.displayAlert( numbers( 3 ) + String.fromC…

文字列中の改行の扱い

スクリプトエディタや、Automator の Javascript から、文字列中に改行を埋め込むには、"\n" ではなくString.fromCharCode(13)を使う必要があるようだ。 つまり、エスケープ文字は無視されるためString.fromCharCode(n)を使う。 スクリプトエディタの場合 ap…

Automator で Javascript

Automator でワークフローを開いたら"JavaScript を実行"というアクションが追加されていた。 Yosemite になって Javascript for Automation が追加されたんだから当然のことではあるが。 早速、"JavaScript を実行"のアクションを選択してみたら、以下のよ…

Javascript for Automation で droplet を作る方法

…を知ったので、なんかネタないかと考えていたけど思いつかなかった。 function openDocuments(docs){ app = Application.currentApplication(); app.includeStandardAdditions =true; ... }引数 docs に drag&drop された filepath のリストが格納される。 …

実践

SQL コマンドファイルの作成 sampleSQLcmd.txt の内容 ※ sqliteではカラム名に日本語などを含む場合はsingle-quote (')で囲う。 CREATE TABLE list ( id, title ); INSERT INTO list ( id, title ) values( 1, '天上天下唯我独尊' ); INSERT INTO list ( id,…

準備

PowerShell の console の encoding PowerShell の console はデフォルトで chcp 932 # MS-SJIS一方 SQLite3 は Unicode のみ扱える PowerShell の console から SQlite3 との間で日本語を文字化けせずにやりとりできるようにするため、最初に PowerShell co…

PowerShell から .NetFramework 版 SQLite を使う

まず、.NetFramework 版 SQLite である System.Data.SQLite を入手する。 うちの会社では原則として管理者権限禁止(その都度要申請)なので installer 版ではなく binary 版を落としてくる。 Windows7 なので PowerShell V2.0 及び .NetFrameworks 3.5 環境…

Javascript for Automation で LotoNumbers を生成

Javascript に VisualBasic の Left 関数に相当する機能がなくて不便なので prototype 宣言した app = Application.currentApplication(); app.includeStandardAdditions =true; String.prototype.left = function(l){ return this.substr( (this.length > l…

今日は誕生日だった…

OSX を Yosemite にしたので、ScriptEditor から Javascript でもスクリプト書けるようになった。

app = Application.currentApplication(); app.includeStandardAdditions =true; app.displayAlert( 'Hello World');※ displayAlert や displayDialog を使うときは app.includeStandardAdditions =true; が必要らしい。実行結果 app = Application(<unknown>) app.sy</unknown>…

会社の PC の OS が今年の春から Windows7 に移行した。

これまではちょっとしたタスクの自動化をするときは WSH(主にJavascript)を使ってたが 今はなるべく PowerShell にシフトしている。pipe,pipeline,filter は、けっこう便利。ただし Version 2 なので Linq は自分で(若しくは人様の作った) Library を用…