序文今回は昨晩思いついたアイデアを記録しました。Excel の内容をクリップボードにコピーし、必要な JSON 形式に変換するというものです。核となるのは、Excel の内容を JSON に変換することです。この部分は主に Excel 形式と JSON がビジネスにどのようにマッピングされるかによって決まるため、ここでは詳しく説明しません。しかし、実践を通して、クリップボードに関するいくつかの知識を得ることができました。 注: これは自分のガジェット実装用なので互換性は考慮せず、Chromeで実践しています 全体の手順は次のとおりです。
ここでの主なポイントは 3 つあります。 1. イベントとクリップボードを貼り付けるdocument.addEventListener('貼り付け', イベント => { // イベント内のclipboardDataオブジェクト console.log(event.clipboardData) }) 貼り付けイベントがトリガーされると、イベントからclipboardDataを取得できます。 ただし、window.clipboardData も使用されています。Chrome と codepen で試してみましたが、コンテンツを取得できませんでした。 2. クリップボード内のコンテンツ形式前の部分のコードがコンソールに出力されると、困惑するでしょう。コンソールには DataTransfer オブジェクトが出力されますが、実際には、このオブジェクトがコンソールで展開されると、属性に値がないか、空の配列になっているため、非常に混乱します。 コンソールのプロパティ コンテンツを調べて初めて、それを見つけました。 このオブジェクトでは、getData はデータ コンテンツを取得するために使用される共通メソッドです。DOMString パラメータを受け入れる必要があります。 よく使われる方法は、getData('text') を呼び出して取得できるプレーンテキストを貼り付けることです。 しかし、私が欲しいのはExcel形式です。最初はExcel形式が何なのか分かりませんでしたが、ExcelからコピーしてExcelに貼り付けると、形式が保持されたままだったので、クリップボードには元のコンテンツの形式が保持されているはずだと思い、試してみました。 DataTransferオブジェクトのtypes属性を走査して出力することで、 document.addEventListener('貼り付け', イベント => { イベント.クリップボードデータ.タイプ.マップ(タイプ=>{console.log(タイプ)}) }) タイプには3つの値があります: text/plain、text/html、Files そこで、タイプ「text/html」を使用してgetDataを試したところ、確かにフォーマットされたコンテンツが取得されました。これは実際には次のHTMLコードの文字列です。 <html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40"> <ヘッド> <meta http-equiv=コンテンツタイプコンテンツ="text/html; charset=utf-8"> <スタイル> ... <テーブル> ... 観察すると、必要なコンテンツは HTML コード内のテーブルであることがわかります。その後、形式を変換するのは簡単です。HTML 文字列を解析し、セレクターを使用してセル コンテンツを取得するだけです。 3. HTML文字列を解析する方法これには本当に時間がかかりましたが、その後、HTML 文字列の解析をもともとサポートしている DOMParser を見つけました>> (new DOMParser()).parseFromString を使用して文字列を DOM に変換します。 定数html = event.clipboardData.getData('text/html'); 定数 $doc = 新しい DOMParser().parseFromString(html, 'text/html'); // すべての行を読み込みます const $trs = Array.from($doc.querySelectorAll('table tr')); その後、問題なく querySelectorAll を実行できます。 上記は、JS を使用してクリップボード内の Excel コンテンツを解析する方法の詳細です。クリップボード内の Excel コンテンツを JS で解析する方法の詳細については、123WORDPRESS.COM の他の関連記事に注目してください。 以下もご興味があるかもしれません:
|
<<: Windows で mysql5.7.21 をインストールするための詳細なチュートリアル
>>: 1 つの記事で Nginx の現在の制限を理解する (簡単な実装)
私たちが毎日使っているブラウザや Word 文書のスクロール バーはなぜ右側にあるのでしょうか。多く...
序文クラスメートが MLSQL Stack のストリーミング サポートを調査しています。そこで、フロ...
序文ある日、突然 MySQL の次のキー ロックについて尋ねられ、私の即座の反応は次のようなものでし...
1. 複合主キーいわゆる複合主キーとは、テーブルの主キーが複数のフィールドで構成され、ビジネス上の意...
目次背景解決策1: 古いデータをバックアップするオプション2: テーブルを分割する解決策3: tid...
どの要素でもスクロールできるようにしながら、スクロールバーを非表示にするにはどうすればよいでしょうか...
しばらくReactを勉強した後、実践してみたいと思います。そこで、個人のブログのウェブサイトを再構築...
この記事では、カスタムツリーコンポーネントを再帰的に実装するVueの具体的なコードを参考までに共有し...
目次1. ルーティング構成2. Vueページのネスト3. ネストされた関係1. ルーティング構成 定...
序文Docker は過去 2 年間で非常に人気が高まっています。開発者はすべてのアプリケーションとソ...
目次QRコードログインの真髄QRコードを理解するシステム認証メカニズムQRコードをスキャンしてログイ...
実は、最近はウェブデザインについてよく耳にするようになりました。インターネット業界は今とても発展して...
序文:金額の保存など、小数点数を保存し、精度要件がある場合、通常は DECIMAL フィールド タイ...
Linux でディレクトリを切り替えるとなると、誰もが間違いなくcdコマンドを思い浮かべるでしょう。...
目次1 関数カリー化とは何ですか? 2 カレーの役割と特徴2.1 パラメータの再利用2.2 早期復帰...