Excelに画像ファイルを貼り付ける
仕事でWebアプリをテストする時、スクリーンショットを撮っておき最後にExcelで資料をまとめたりするんだけど、巨大なアプリだと画像をExcelに貼り付けるだけでめっちゃ時間がかかったりして、なんで僕がこんな仕事をしているんだ、とキレてるやつがいたんだけど、それはお前がへなちょこなせいなんだよ。
// // makeimgxls.js // (function() { if (WScript.Arguments.length < 3) { WScript.Echo('usage: cscript //nologo makeimgxls.js c:\\imgs c:\\img.xls 15'); return; } var imgdir = WScript.Arguments(0); var xlsfile = WScript.Arguments(1); var interval = WScript.Arguments(2); var files = (function (dir) { var files = [ ]; var fso = new ActiveXObject('Scripting.FileSystemObject'); var dir = fso.GetFolder(dir); for (var e = new Enumerator(dir.Files); !e.atEnd(); e.moveNext()) { var item = e.item(); if (!/(png|jpeg|jpg|gif|bmp)$/.test(item.Name)) { continue; } files.push(item.Path); } return files; })(imgdir); var xl = new ActiveXObject('Excel.Application'); try { var book = xl.Workbooks.Add(); var sheet = book.Worksheets(1); for (var ii = 0, max = files.length; ii < max; ++ii) { var img = sheet.Pictures.Insert(files[ii]); img.Cut(); sheet.Cells(ii * interval + 1, 1).Value = files[ii]; sheet.Paste(sheet.Cells(ii * interval + 2, 1), img); } book.SaveAs(xlsfile); } finally { if (xl != null) { xl.Quit(); } } })();
c:\Temp\js>dir /b imgs 1.png 2.png 3.png c:\Temp\js>cscript //nologo makeimgxls.js c:\temp\js\imgs c:\temp\js\img.xls 8 c:\Temp\js>c:\temp\js\img.xls c:\Temp\js>