0

我正在尝试通过单击按钮将整个数据从当前网格复制到剪贴板,因此可以将其粘贴到任何目的地(excel、记事本等)

我尝试使用 wijmo.Clipboard 类,但对我没有用。

 import * as wjcCore from 'wijmo/wijmo';

 @ViewChild('grid') grid: GridComponent; 

copysGrid() {

    let hdr = '';

    for (let c = 1; c < this.grid.columns.length; c++) {
      hdr += '\t';
      hdr += this.grid.columns[c].header;
    }

    let cellRange = new CellRange(-1, -1, -1, -1);
    this.grid.select(cellRange);

    cellRange = new CellRange(1, 1, this.grid.rows.length - 1, this.grid.columns.length - 1);

    const gridData = this.grid.getClipString(cellRange);
    const a = hdr + '\r\n' + gridData;

    //  wjcCore.Clipboard.copy(a);

    const selBox = document.createElement('textarea');
    selBox.style.position = 'fixed';
    selBox.style.left = '0';
    selBox.style.top = '0';
    selBox.style.opacity = '0';
    selBox.value = a;
    document.body.appendChild(selBox);
    selBox.focus();
    selBox.select();
    document.execCommand('copy');
    document.body.removeChild(selBox);

  }

任何人都可以帮助我如何做到这一点。

4

1 回答 1

1

你的代码对我来说看起来不错。我在这个小提琴中有类似的东西:

https://jsfiddle.net/Wijmo5/4pxLtk0o/

  document.getElementById('btnCopyAll').addEventListener('click', function(e) {

    // get clip string from the grid (all grid data)
    var g = theGrid,
        rng = new wijmo.grid.CellRange(0, 0, g.rows.length - 1, g.columns.length - 1),
        clipString = g.getClipString(rng);

    // add headers
    var hdr = '';
    for (var c = rng.leftCol; c <= rng.rightCol; c++) {
      if (hdr) hdr += '\t';
      hdr += g.columns[c].header;
    }
    clipString = hdr + '\n' + clipString;

    // copy it to the clipboard using a temporary textarea element
    var input = document.createElement('textarea');
    document.body.appendChild(input);
    input.value = clipString;
    input.select();
    document.execCommand('copy');
    document.body.removeChild(input);
    alert('The data has been copied to the clipboard.');

    // return focus to the button
    e.target.focus();
  })

一个警告是 execCommand('copy') 仅在该方法由用户操作(如单击按钮)调用时才有效。更多详情请参考:

https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Interact_with_the_clipboard

于 2018-08-08T15:22:53.530 回答