こんにちは。きんくまです。
以前にAppleScriptを使ってExcelのデータをxmlにするプログラムを書いたのですが、問い合わせをいただきまして。
エラーが出て動かないとのこと。確認したところパーミッション関係のエラーが出てしまっていました。
>> [AppleScript] MacでExcelからUTF-8でxml書き出しをするAppleScript
6年前のプログラムだし、すぐには直せなそうでした。
それでJavaScriptでツールを作った方が早そうなので作ってみました。
作ったもの
何するもの?
こういうExcelデータを
こういう感じのxmlに変換します。Excelにもxml書き出しというのがあるんですが、余計なタグがついてくるのであまり使えないのです。
<?xml version="1.0" encoding="utf-8"?> <root> <row> <id>001</id> <age>15</age> <name>田中</name> <hobby>野球</hobby> </row> <row> <id>002</id> <age>32</age> <name>斎藤</name> <hobby>サッカー</hobby> </row> ...以下略 </root>
使い方
Excelを開きます。該当の部分をコピーします。
1行目のタイトル部分がタグ名になるのでそこもコピーしてください。
上のページに移動して、入力欄にペーストします。そのあと、変換ボタンをおします。
出力欄に変換テキストが表示されます。
あとは、クリップボードに転送したり、xmlファイルとしてダウンロードできます。
セル内に改行があると使えないです、、。すみません。
入力されたデータはブラウザ内だけで変換して、サーバーにアップしません。ですので、入力内容は私の方ではわからないのでお気軽にどうぞ。
もしどうしても気になる人がいたら、データ一式をアップしておくので自分の端末内で使ってください。
案件で必要なテキスト変換ツールは、こんな感じによく作っております。
興味ある人向けソース
JS部分です。jQueryを使っているからって、石を投げないでください。
var spaceText = " "; var lineBreak = "\n"; function getInputTSV(){ return $('#inputTextArea').val(); } function buildXMLText(arr){ var tags = arr[0]; var xmlTexts = []; if(arr.length <= 1){ return ""; } xmlTexts.push( '<?xml version="1.0" encoding="utf-8"?>' + lineBreak ); xmlTexts.push( "<root>" + lineBreak ); for(var i = 1; i < arr.length; i++){ var data = arr[i]; xmlTexts.push( spaceText + "<row>" + lineBreak ); data.map(function(datum, index){ var tag = tags[index]; xmlTexts.push( spaceText + spaceText + "<" + tag + ">" + datum + "</" + tag + ">" + lineBreak ); }); xmlTexts.push( spaceText + "</row>" + lineBreak ); } xmlTexts.push( "</root>" + lineBreak ); return xmlTexts.join(''); } function convertTSV(){ var input = getInputTSV(); var rows = input.split('\n'); rows = rows.map(function(row){ return row.split('\t'); }); var xmlText = buildXMLText(rows); $('#outputTextArea').val(xmlText); } //https://stackoverflow.com/questions/3665115/create-a-file-in-memory-for-user-to-download-not-through-server function downloadXMLFile(text, filename){ var id = 'donwloadLink'; var sharpId = '#' + id; $(sharpId).remove(); $('body').append('<a id="' + id + '"></a>'); var $link = $(sharpId) .attr('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text)) .attr('download', filename); $link.get(0).click(); } function main(){ $('#convertButton').click(function(){ convertTSV(); }); $('#toClipboardButton').click(function(){ $('#outputTextArea').select(); document.execCommand("copy"); }); $('#downloadButton').click(function(){ var outputText = $('#outputTextArea').val(); var filename = $('#outputFilename').val(); downloadXMLFile(outputText, filename); }); } $(function(){ main(); });
■ 自作iPhoneアプリ 好評発売中!
・フォルメモ - シンプルなフォルダつきメモ帳
・ジッピー電卓 - 消費税や割引もサクサク計算!
■ LINEスタンプ作りました!
毎日使える。とぼけたウサギ