2017-07-21 1 views
0

React-Copy-To-Clipboardを使用して、アプリケーションのクリップボードへのコピー機能を作成しようとしていますテーブルをクリップボードに、Excelが正しくペーストするタブ区切り形式で挿入します。MS Excelは、React-Copy-To-Clipboardのタブ区切り文字列を1つのセルに貼り付けています。

つまり、各行項目を '\ t'で結合し、各行の最後に '\ n'を追加します。それが必要として絶対に見て、このペーストから

convertToTabSeparated : (rows) -> 
 
    dataRows = 
 
    rows 
 
     .map (row) -> row.join('\t') 
 
     .join('\n') 
 
    return dataRows

出力

(のCoffeeScriptの私の使用して怒ら誰にも謝罪): - コンソール に - テキストでエディタ - Excelのデスクトップ(またはGoogleのスプレッドシートにある同様の特殊なペースト)で 'paste special> paste values'を使用している場合でも

問題は、Excelに特殊ではない特殊なペーストを適用すると、すべての値が1つのセルに貼り付けられることになります。

私はMS Excelのクラウド版を使用すると、水がもっと濁っていますが、これはそうではありません。通常のペーストでは問題ありません。

もう1つのこと:テキストエディタに貼り付けた後、再度コピーして結果をExcelに再度貼り付けると、すべての場合に問題なく動作します。

だから、通常の貼り付けを行うときに\ tと\ nが正しく登録されないという結果になる、クリップボードへの反応コピーから出る可能性のある文字/書式の問題を知っている人はいますか?ソートの見つけ


ソリューションは、: Excelのがに熱心ではない周囲のhtml要素、とのデータをクリップボードへの質問のコピーにライブラリーを反応させるのようです。 次のように、独自のコピーをクリップボードのDOMメソッドに追加することにしました。ただし、同じアプローチでスパンの代わりにテキストエリアを使用し、わずかに異なる選択方法を使用しました。偉大な仕事をしているようだ。

copyToClipboard : (text) -> 
    textArea = document.createElement("textarea") 
    textArea.style.position = 'fixed' 
    textArea.style.top = 0 
    textArea.style.left = 0 
    textArea.style.width = '2em' 
    textArea.style.height = '2em' 
    textArea.style.padding = 0 
    textArea.style.border = 'none' 
    textArea.style.outline = 'none' 
    textArea.style.boxShadow = 'none' 
    textArea.style.background = 'transparent' 
    textArea.value = text 
    document.body.appendChild(textArea) 
    textArea.select() 

    try 
     successful = document.execCommand 'copy' 
     msg = successful ? 'successful' : 'unsuccessful' 
     log 'Copying text command was ' + msg 
    catch err 
     alert 'Unable to copy' 

    document.body.removeChild textArea 

答えて

0

Excelは、「列へのテスト」を使用して最後の時間を使用する区切り区切り文字として期待しています。貼り付けられたテーブルを手動で列に分割してもう一度やり直してみてください。

+0

こんにちは、お返事ありがとうございます - しかし、私が達成しようとしているのは、いつでも設定を変更せずに正しく貼り付ける私のアプリからクリップボードのコンテンツを出力する方法です。 –

関連する問題