エクセルくりーむわーかープログラムとか。・試しててハマった事など。誰かのお役に立てば幸いかと。その他、いろいろエトセトラ。エクセル2017年12月21日01:31カテゴリプログラムエクセルのマクロでHTTPSエクセルでWebAPI呼んだりSOAP通信する際にHTTP通信を下の感じでやる。FunctionHTTPの場合はこれで問題ないんだけど、HTTPSでやる場合はちょっと変える。上述のやつだとエラーになる。VBAだとエラー扱いになるっぽい。この場合は↓の感じにする。Function参考は例によってさすがのStackOverFlow。クライント側に使う証明書をインストールしておけば、最初の奴でも大丈夫かもかも。以前、タイトルの内容のものを書いたけど、あれは.net側に変換のモジュールを持たせてたので、ちゃんとRedmineのプラグインとして動くようにした。ソースは↓に置いてあるので、使いたい方はご自由にお使いください。公開できるようなソースじゃないのですが、個人的に割と便利だったので上げておきます。テストとかはほぼしてないので、好きに直してください。ソース多分、大丈夫だと思うのですが、いちを「nokogiri」と「css_parser」が必要です。動かすときは↓の感じです。Wikiとかチケットとかの入力のところで、「E2T」ってボタンが出る。クリックでペースト用のエリアが出る。エクセルの表をコピー。エリアにペーストするとTextile形式に変換する。したらそのままコピペでWikiとかの入力欄に貼り付け。完璧に復元はしてないけど、十分かなと。ボタンのつけ方とか絶対いけてない。変換のロジックも書き殴ってそのままあげちゃってるのでご注意をば。)2016年12月10日23:45カテゴリエクセルの表をRedmineのWikiテーブルにしたい--追記2017/5/21こっちにRedmineのプラグイン的な何かを置きました。RedmineのWikiで表的なまとめを作ろうとするとtextile形式で作ることになるんだけど、ちょっと見た目にこりだしたりすると、とたんにえらいもの書かないといけなくなる。エクセルでまとめた表をぱっと貼り付けられると便利。なんかいいプラグインないかなーと探してみたけど、グッとくるものがいないので、とりあえず作った。エクセルの表をコピーしてテキストエリアあたりに貼り付け⇒セルのフォーマット情報も含めて内容を取得する。これにはClipboradApiを使用。console.log(e.clipboardData.getData('text/html'));});クリップボードのデータを取得するとき、だいたい”text/plain”で指定するんだけど、htmlで指定すると、セルのフォーマット情報も含んだHTML形式で取得できる。あとはこのHTMLを解析してTextile形式に変換すれば良いという寸法です。ホントはこの流れをRedmineのプラグインで作りたかったんだけど、Ruby触るの久しぶり過ぎて、すごい時間かかりそうだったので、.netに逃げました。.netでやる場合、HTMLの解析は「HtmlAgilityPack」を使用する。作ったのは、TextAreaにエクセルの表をコピペすると、サーバ側にそのHTMLをテキストで投げて、サーバ側で解析して結果を返す的なAPI。困ったことにHTMLをテキストで投げると、.netのセキュリティのチェックにデフォルトで引っかかる。アノテーションでそのチェックを外してあげる。JsonRequestBehavior.AllowGet);}そしたら、HTMLを解析する。HTMLのテキストをAgilityPackに食わせる。htmlDoc.LoadHtml(excelTableHTML);で、あとはTableタグ拾って⇒TRタグ拾って⇒TDタグ拾ってを繰り返し。{"//table/tr"って書けば外側のループはいらないんだけど理由は後で。これでとりえあず、中身の内容は拾えるんだけど、スタイルはAgilityPackでは解析できないっぽい?なので別途、スタイルシートを解析するライブラリを使う。今回使ったのは「ExCss」。取得はNugetから。これを使ってClass定義とstyle属性の内容を解析する。・セル幅くらいを再現する。スタイルの解析は下の感じで書く。parser.Parse(htmlDoc.DocumentNode.SelectSingleNode(@"//style").InnerHtml);//Class名は.付きにしないと当たらない。}}Class定義はこれでいいんだけど、タグ内のStyle属性やる場合、ExCssはクラス定義の形式じゃないと解析できない模様なので、ちょっと文字列足してあげる。"}");これでだいたい出来上がりなんだけど、問題が一つ。画像とか図形が表にかかってると、マイクロソフトのオレオレ定義が入り込んでくる。あと、この定義が入ると、通常のtdタグの中にさらにtableタグが入り込んでくる。表のTableだけで処理したいので、最初のループで最初のtableタグのみ処理するように仕込んでる。超絶やっつけで作ったやつの全体像は下の感じ。見せられたもんではないのですが、とりあえず。同じロジック2回書いてるし・・・あとで整理しないと。wkSb.ToString();}ちなみに、変換した結果をWikiに貼った結果は下。あー、ちゃんと列・行の結合にも対応出来てたりする。