Windows8ぐらいからデフォルトで無効にされているみたいですね。仕事場のパソコンは別にいいとして、家で使うPCぐらい鳴らしてもいいんじゃないすかねぇ。コンパネのサウンドの設定で、起動時のサウンドを鳴らす設定が消されています。なんで?これもググるとレジストリをいじることで有効になるみたいですが、結局はシステムにブロックされて起動サウンドは鳴らないみたいでつね。しかたないので、タスクスケジューラに登録することにした。Windows2000のインストールCDから抜いた。ライセンス的に不味いかもしれん。別にばら撒くわけでもなし。基本タスクを作成し、トリガーとして「ログイン時」を選択。ワンライナーがヒットします。いうか、これしかヒットしません。要点は・・・コマンドプロンプトで下記コマンドを打つだけ。"wavファイルのパス").PlaySync();このコマンドをそのままタスクスケジューラに登録してもいいんですが・・・コンソールウィンドウが立ち上がってしまいます。なんか、すっげぇカッコ悪りぃ!標準でできないならプログラムを組むしかない。インスタンスを生成してサウンドファイルを渡すだけなので、C#でも数行で済みそうです。いうわけで組んでみる・・・組むというレベルでもない。namespaceは適当に変えてね。付きでビルドするとコンソールウィンドウなしのプログラムができるので、このプログラムを適当のフォルダに配置してサウンドファイルとともにタスクスケジューラに登録します。心地よい起動サウンドが聞けるようになったとさ。一応実行バイナリを置いておきますが、自己責任で。いかなる損害も補償は一切いたしません。僕は自己嫌悪に陥って仕事を中断して帰りたくなる衝動に駆られます!そこでググってjQueryのプラグイン探すなり、テック系の記事をコピペしたりしますよね。僕は探すより、自分で書く方が早いんですよ、結果的に。適当なjQueryプラグインなりを探してもそれの使い方を調べてたり、要らない機能があったりして、結局ドキュメントをよく読まないとわからないことが多い。onkeydownイベントハンドラを仕込んでエンターキーをトラップすれば済む話。数十行のスクリプトです。バグが出たらその都度直せばいいんです。ラクしちゃいけません。ラクするのはチラシの印刷だけでよろしい。好き好き人間なので、適当にプラグインを書きました。validityチェックでフォーカスが移動しなくなった。なんで?よくわからん。})(jQuery);で、これを以下のようなフォームで使うと、このままでは失敗して、エンターキー押すとフォームが送信されてしまいます。input[type=submit]要素が存在するのが原因。input[type=submit]要素が存在すると、エンターキー押下で問答無用でFORMのアクションが走るようです。このinput[type=submit]要素を消すと送信されない、という挙動になってます。FORM要素のsubmitメソッドをコールすればいいんじゃない?ということになるんですが、残念ながらそうは問屋は降ろさない。input[type=submit]要素がないと、FORM要素のvalidityチェックが走らないんだな、これが。requireだのpatternだのを書いても無視されてしまう。submitメソッドをコールするかどうかを決定する。none;とか)にしておき、input[type=button]要素のonclickハンドラとFORM要素のonsubmitイベントハンドラを仕込んでおいてエンターキー押下かではなくクリックされたかをチェックさせる。//--></script>最初(2)の方を使ってたんだけど、(1)の方がカンタンなので、そっちにした。reportValidityというメソッドを後から知ったんだけどね💦ちなみに、FORMのvalidityチェックの際、エラーメッセージをカスタマイズするプラグインもついで書いた。プラグインにするほどのものでもないけど、一回一回書くのはめんどっちーのでプラグインにした方がラク、というだけの理由ですけどね。入力必須の際のエラーメッセージをカスタマイズします。'この項目は入力必須です。なかがわjQueryコメントするウェブブラウザ上のJavaScriptでExcelファイルをゴニョゴニョしたいTweet特に需要はないと思いますが、極たま~~~にウェブでエクセルファイルを扱うことがあります。なんつっても、世の中の文書フォーマットは、マイクロソフトのエクセル(Excel)がデファクトスタンダードです💦これはもうどうにもなりません。CSVで、つっても、エクセルファイルをよこしやがります。業務システムにはエクセルは欠かせません、というか、これなしには、日本は動きません。日本の企業とか国、地方公共団体は、エクセルで動いているんです。これはもう動かしようのない事実であり当分の間は変わりませんし、変化の兆しも見えません。ライブラリがあるんですね。サーバーサイドのNode.jsでも使えます、というかそっちがメインのライブラリなのかも。一般的にMS-Officeをインストールしたパソコンにはおまけ?として、EXCELのオートメーションが使えるようになってます。Officeを買えば!の話ですが。HostなどからVBScriptやJScriptを使ってカンタンにエクセルファイルをアーダコーダできます。・・・が、今回はこういう噺ではありません。一般的なブラウザ上で、エクセルファイルをアーダコーダできるライブラリがあったんです。simplifiedで、ググったりしていろいろ調べると、意外にカンタンに使えちゃいますね。blobとかFileReaderとかArrayBufferとかUint8Arrayとか・・・そういうちょっとややこしめの知識が必要です。昔と違ってブラウザでローカルファイルとか普通に扱えます。その時は必ず、上記のFile/Blob/FileReader/ArrayBuffer/TypedArrayとかが絡んできます。FileとBlobの関係、ArrayBufferとTypedArray(Uint8Arrayとか)の関係、さらにはFileReaderとFile/Blobの関係。このあたりは鬼門です。なんでこんなめんどくさいんだよ!っていつも思います。MDNとかのリファレンスを読むのが手っ取り早いのですが・・・とりあえず、MDNのサイトでは、こういう場合は、こうする、という「お約束」の手順が書かれているので、まずそれを丸覚えするのがいいと思います。理屈は後から学べばいいんです。ブログ記事を参考にするのは結局は理解するのが遅くなってしまうので、リファレンスとサンプルを読んで、書いて、試してみたほうがいいと思ってます。IEでは動かないと思う。IEは既にMSも認めたオワコンなんで、どーでもいい。下のデモ(テストコード)さて、HTMLファイルをサクッと書きます。(Ryzenの価格表コピペしました。for="select-file">テーブルをエクセルファイルに追加します。</body></html>JSライブラリは適当にCDNから引っ張ってきましょう。jQuery好き好き人間なので、jQueryを使用します。INPUT[type=file]タグでローカルファイルの口としましょう。ドラッグ&ドロップを仕込んでもいいのですが、コードをカンタンにするため、普通のファイル選択にしました。ここでローカルファイルを選んでjavascriptコードに放り込みます。次に実際の処理を書いていきます。INPUT[type=file]のonchangeイベントハンドラを起点にしています。(13行目付近)ローカルファイルを読み込んでゴニョゴニョするときは、必ずFileReaderのインスタンスを作って、onloadイベントで処理を行います。ローカルの画像ファイルを読み込んで表示するときは、readAsDataUrlメソッドを使いますよねぇ。よってArrayBufferオブジェクトを得ることができますが、直接このArrayBufferオブジェクトにアクセスすることができません。TypedArray・・・たとえば、Uint8Arrayなどのオブジェクトのインスタンスからアクセスします。めんどくさいですねぇ。※このままのコードだと、セルの書式属性は全部消えます。読み込んだエクセルファイル(ArrayBuffer)をUint8Array配列にし、XLSX.readに渡します。//読み込んだエクセルに上記テーブルを変換したシート(ブック?)を新しいシートとして追加します。新しく作成するエクセルファイルの作成オプションを設定します。Blobオブジェクトに出力します。A要素をdocument.bodyに追加します。クリックすると、読み込んだエクセルファイルに表をシートに追加し、新しく作ったエクセルファイルをダウンロードできます。XLSX.readメソッドに渡します。それだけで、エクセルファイルをパースしてくれます。オブジェクトのメソッドをコールしていけば、だいたいのことはできると思います。TABLE要素をシートに・・・とか対応するメソッドがあるようです。この辺のドキュメントはgithubをたよりに試行錯誤するしかないのかな。エクセルファイルにシートを追加して、そのエクセルファイルをダウンロードする、これだけのことをクライアント内(ブラウザ内)で完結することができてしまいます。ローカル内でサーバーを立てる必要もありません。上記二つのHTMLとJSを任意のフォルダに適当な名前で保存して、file://スキームで試すことも可能です。ローカルで開いたところ。エクセルを選択すると、ダウンロードリンクが追加されます。HTMLのテーブルデータをエクセルシートにぶっこんでくれます。セル書式は全部吹っ飛びます。今回は、エクセルシートを追加してみましたけど、セルの属性とかは全部ぶっとんでしまいました💦が、単にJSONやCSVが取れればいい、というのが大半の需要かと思いますので問題はないでしょう。エクセルファイルをサーバー側で変換するのではなく、クライアントで一旦CSVに変換してから、サーバーにアップロードして、処理を行う用途に使用しました。サーバーでエクセルファイルを処理すると重くなるんで・・・。エクセルを読むだけなら、カンタンにできるので、本当にありがたいライブラリです。一点、ちゃんとしたリファレンスドキュメントがありません。これはPro版を買えってことなのかなぁ。2.0なんで、「おまえら、ソース読んで、自分でなんとかしろよ」ってことなんでしょうね。C#とか、昔のC++で書いたツールをビルドするのにやっぱ必要。IDEはほとんど立ち上げず、gVimで編集、編集。HJKLバインドじゃないと苦痛を感じるレベルまで悪化。ググるおっさんがここにいる。そんなことはさておき。ビルドしたくなります。おっさんはgVimのshellオプションをWSL(Bash)に変えてあるので、困った、困った、こまどり姉妹になるわけです。WSLを行ったり来たりするにはこれしかない。cmd.exeを使うデフォルトに戻れる。こんなアホなことしてんのおっさんだけだよなぁ。