Table to CSV

  • /*
     * @title Table to CSV
     * @description テーブルクリックでCSVとしてダウンロード
     * @include http://*
     * @license public domain
     * @javascript_url
     */
    
    
    {
        const target = document.querySelectorAll('table');
        
        const dl = event => {
            const bom = new Uint8Array([0xef, 0xbb, 0xbf]);
            console.log(event.currentTarget)
            const a = document.createElement('a');
            a.download = 'test.csv';
            a.href = URL.createObjectURL(
                new Blob([
                    bom,
                    Array.from(event.currentTarget.querySelectorAll(`tr`)).map(
                        r => [...r.children].map(c => `"${c.innerText}"`).join(',')
                    ).join('\n')
                ],
                    { type: "text/csv" }
                )
            )
            a.click();
            removeEvent();
        }
    
        target.forEach(table => {
            table.addEventListener('click', dl)
        });
        
        const removeEvent = ()=>{
            target.forEach(table=>{
                table.removeEventListener('click', dl);
            })
        }
        alert('テーブルをクリックしてください')
    
    }
  • Permalink
    このページへの個別リンクです。
    RAW
    書かれたコードへの直接のリンクです。
    Packed
    文字列が圧縮された書かれたコードへのリンクです。
    Userscript
    Greasemonkey 等で利用する場合の .user.js へのリンクです。
    Loader
    @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
    Metadata
    コード中にコメントで @xxx と書かれたメタデータの JSON です。

History

  1. 2022/01/04 13:20:31 - 2022-01-04
  2. 2022/01/04 13:19:31 - 2022-01-04