美文网首页
js 打印table

js 打印table

作者: 栗子daisy | 来源:发表于2020-01-16 16:21 被阅读0次
import React, { Component } from 'react';
import { Button, WhiteSpace } from 'antd';
import './index.less';
import xlsx from 'xlsx';
class index extends Component {
  constructor(props) {
    super(props);
    this.state = {};
  }
  print = (id) => {
    const el = document.getElementById(id);
    const iframe = document.createElement('IFRAME');
    let doc = null;
    iframe.setAttribute(
      'style',
      'position:absolute;width:0px;height:0px;left:500px;top:500px;'
    );
    document.body.appendChild(iframe);
    doc = iframe.contentWindow.document;
    doc.write(el.innerHTML);
    //打印表格的样式
    var ys="html,body{height:100%}table{word-break:break-all;width:100%;height:auto; border: 1px solid #000;border-collapse:collapse}th,td{border: 1px solid #000}";
    var style=document.createElement("style");
    style.innerText=ys;
    doc.getElementsByTagName("head")[0].appendChild(style)

    doc.close();
    // 获取iframe的焦点,从iframe开始打印
    iframe.contentWindow.focus();
    iframe.contentWindow.print();
    if (navigator.userAgent.indexOf('MSIE') > 0) {
      document.body.removeChild(iframe);
    }
  };
  printTable = () => {
    this.print('table1');
  };
  tbToExcel = () => {
    // var fileName = 'file.xlsx';
    // var data = [[1, 2, 3], [1, 2, 3]];
    // var ws_name = 'sheet1';
    // var wb = xlsx.utils.book_new();
    // var ws = xlsx.utils.aoa_to_sheet(data);
    // xlsx.utils.book_append_sheet(wb, ws, ws_name);
    // xlsx.writeFile(wb, fileName);
    var fileName = 'excel.xlsx';
    var data = document.getElementById('table');
    var wb = xlsx.utils.table_to_book(data, { sheet: 'SheetJS' });
    xlsx.write(wb, { bookSST: true, type: 'base64' });
    xlsx.writeFile(wb, fileName);
  };
  render() {
    return (
      <div>
       <WhiteSpace style={{ height: 15 }} />
        <div>表格打印和导出EXCEL测试</div>
        <div>
          <div
            style={{ overflow: 'auto', width: '100%', height: '90px' }}
            id="table1"
          >
            <table
              id="table"
              style={{
                border: '1px solid #000',
                borderCollapse: 'collapse',
                width: '130%',
              }}
            >
              <thead>
                <tr>
                  <th>name1</th>
                  <th>name2</th>
                  <th>name3</th>
                  <th>name1</th>
                  <th>name2</th>
                  <th>name3</th>
                </tr>
              </thead>
              <tbody>
                <tr>
                  <td>1</td>
                  <td>2</td>
                  <td>3</td>
                  <td>1</td>
                  <td>2</td>
                  <td>3</td>
                </tr>
                <tr>
                  <td>1</td>
                  <td>2</td>
                  <td>3</td>
                  <td>1</td>
                  <td>2</td>
                  <td>3</td>
                </tr>
                <tr>
                  <td>1</td>
                  <td>2</td>
                  <td>3</td>
                  <td>1</td>
                  <td>2</td>
                  <td>3</td>
                </tr>
                <tr>
                  <td>1</td>
                  <td>2</td>
                  <td>3</td>
                  <td>1</td>
                  <td>2</td>
                  <td>3</td>
                </tr>
                <tr>
                  <td>1</td>
                  <td>2</td>
                  <td>3</td>
                  <td>1</td>
                  <td>2</td>
                  <td>3</td>
                </tr>
                <tr>
                  <td>1</td>
                  <td>2</td>
                  <td>3</td>
                  <td>1</td>
                  <td>2</td>
                  <td>3</td>
                </tr>
              </tbody>
            </table>
          </div>
          <WhiteSpace style={{ height: 15 }} />
        <Button type="primary" onClick={this.printTable}>
          print
        </Button>
        <WhiteSpace style={{ height: 15 }} />
        <Button type="primary" onClick={this.tbToExcel}>
          excel
        </Button>
        </div>
      </div>
    );
  }
}

export default index;

https://blog.csdn.net/xiaoxiaohai0000/article/details/86569943

相关文章

网友评论

      本文标题:js 打印table

      本文链接:https://www.haomeiwen.com/subject/mwnfzctx.html