最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

react導(dǎo)出excel文件的四種方式

 更新時(shí)間:2023年11月23日 10:37:29   作者:摸魚第一人  
本文主要介紹了react導(dǎo)出excel文件的四種方式,主要包括原生js導(dǎo)出,使用?js-export-excel,使用xlsx導(dǎo)出, 使用react-html-table-to-excel,感興趣的可以了解一下

 一共總結(jié)了四種方法  前兩種適用范圍比較廣泛 可以適用導(dǎo)出多級(jí)表頭合并等,第三種方法導(dǎo)出的文件比較中規(guī)中矩,但是支持導(dǎo)出多張sheet表。第四種方法導(dǎo)出不推薦使用

1、原生js導(dǎo)出  (帶樣式)

/**
 *  原生JS導(dǎo)出為excel文件
 */
export const jsToExcel = (id, name) => {
    //window.location.href='<%=basePath%>pmb/excelShowInfo.do';
    //獲取表格
    var exportFileContent = document.getElementById(id).outerHTML;
    //設(shè)置格式為Excel,表格內(nèi)容通過(guò)btoa轉(zhuǎn)化為base64,此方法只在文件較小時(shí)使用(小于1M)
    //exportFileContent=window.btoa(unescape(encodeURIComponent(exportFileContent)));
    //var link = "data:"+MIMEType+";base64," + exportFileContent;
    //使用Blob
    var blob = new Blob([exportFileContent], { type: "text/plain;charset=utf-8" });         //解決中文亂碼問(wèn)題
    blob = new Blob([String.fromCharCode(0xFEFF), blob], { type: blob.type });
    //設(shè)置鏈接
    var link = window.URL.createObjectURL(blob);
    var a = document.createElement("a");    //創(chuàng)建a標(biāo)簽
    a.download = name;  //設(shè)置被下載的超鏈接目標(biāo)(文件名)   建議文件后綴為 .xls
    a.href = link;                            //設(shè)置a標(biāo)簽的鏈接
    document.body.appendChild(a);            //a標(biāo)簽添加到頁(yè)面
    a.click();                                //設(shè)置a標(biāo)簽觸發(fā)單擊事件
    document.body.removeChild(a);            //移除a標(biāo)簽
}

使用方式   

<table id='table_report'>...</table>
<div onClick={() => jsToExcel('table_report', '現(xiàn)券交易異常日?qǐng)?bào).xls')}>導(dǎo)出</div>

 如果想導(dǎo)出xlsx格式請(qǐng)參考方法2,方法1僅改文件后綴 不會(huì)被Excel識(shí)別  但是wps可以

2、使用xlsx導(dǎo)出(此方法導(dǎo)出的excel文件無(wú)樣式,但導(dǎo)出的文件格式是 xlsx格式的) 

首先安裝xlsx  : yarn add xlsx

import XLSX from "xlsx"


/**
 *  用XLSX導(dǎo)出 (導(dǎo)出無(wú)樣式)
 */
export const exportExcel = (id, name) => {
    var exportFileContent = document.getElementById(id).cloneNode(true);
    var wb = XLSX.utils.table_to_book(exportFileContent, { sheet: "sheet1" });
    XLSX.writeFile(wb, name);
}

    使用方式

<table id='table_report'>...</table>
<div onClick = {() => exportExcel('table_report', '現(xiàn)券交易異常日?qǐng)?bào).xlsx')}>導(dǎo)出</div>

3、使用 js-export-excel (可以導(dǎo)出多張sheet表)

首先安裝 js-export-excel  : yarn add js-export-excel 

import { Table } from 'antd';
import { columns } from './config';
import ExportJsonExcel from "js-export-excel";
import { PlusCircleOutlined } from '@ant-design/icons';

function Tables(props) {
  const { isLoading, viewData, data } = props;
  // data格式
  const data1 = [
    {
      adID: "張三",
      leaveCount: 26,
      leaveDuration: 82,
      leaveType: "調(diào)休",
      name: "張三"
    },
    {
      adID: "張三1",
      leaveCount: 526,
      leaveDuration: 82,
      leaveType: "調(diào)休",
      name: "張三1"
    },
    {
      adID: "張三1",
      leaveCount: 26,
      leaveDuration: 852,
      leaveType: "調(diào)休",
      name: "張三1"
    },
    {
      adID: "張三1",
      leaveCount: 256,
      leaveDuration: 82,
      leaveType: "調(diào)休",
      name: "張三1"
    },
  ]
  /**
   *  導(dǎo)出數(shù)據(jù)
   */
  const handleExportCurrentExcel = (data) => {
    let sheetFilter = ["name", "leaveType", "leaveCount", "leaveDuration"];
    let sheetFilter2 = ["name", "leaveType", "leaveCount", "leaveDuration"];
    let option = {};
    option.fileName = '考勤分析結(jié)果';
    option.datas = [
      {
        sheetData: data1,
        sheetName: '考勤分析結(jié)果',
        sheetFilter: sheetFilter,
        sheetHeader: ['姓名', '類型', '次數(shù)', '時(shí)長(zhǎng)'],
        columnWidths: [10, 10, 10, 10]
      },
      {
        sheetData: data1,  //比較懶得造數(shù)據(jù)了  跟表1數(shù)據(jù)一樣
        sheetName: '考勤分析結(jié)果222',
        sheetFilter: sheetFilter2,
        sheetHeader: ['姓名22', '類型22', '次數(shù)22', '時(shí)長(zhǎng)22'],
        columnWidths: [10, 10, 10, 10]
      },
    ];
    var toExcel = new ExportJsonExcel(option); //new
    toExcel.saveExcel(); //保存
  }

  return (
    <div>
      <div className='exportButton' onClick={() => handleExportCurrentExcel(data)}>
        <PlusCircleOutlined className='icon-but' />
        導(dǎo)出當(dāng)前數(shù)據(jù)
      </div>
      <Table
        loading={isLoading}
        columns={columns}
        dataSource={viewData}
        pagination={false}
      />
    </div>
  )
}
export default Tables;

4、第四種 使用react-html-table-to-excel  不推薦使用

安裝   react-html-table-to-excel : yarn add react-html-table-to-excel

import React, {  useRef, useEffect } from 'react';
import { Table } from "antd";
import {  columns } from './config';
import ReactHTMLTableToExcel from 'react-html-table-to-excel';
import styles from './index.module.less';
function StudyExcel() {

    const data = [
        {
            key: '0',
            name: '張三'
        },
        {
            key: '1',
            name: '趙四'
        },
        {
            key: '2',
            name: '王五'
        },
        {
            key: '3',
            name: '齊六'
        }
    ];

    // 用ref來(lái)獲取組件按鈕實(shí)例,使用里面的方法
    const buttonRef = useRef(null);

    // 禁止組件按鈕的默認(rèn)點(diǎn)擊事件
    useEffect(() => {
        const button = document.querySelector('#test-table-xls-button');
        button.style['pointer-events'] = ('none');
    }, []);


    // 導(dǎo)出表格
    const exportTable = (e) => {
        e.stopPropagation();
        const table = document.getElementsByTagName('table');
        const container = document.querySelector('#hiddenBox');
        const tempTable = document.createElement('table');
        tempTable.appendChild(table[0]);
        tempTable.setAttribute('id', 'table-to-xls');                    // 給table添加id,值與按鈕上的table字段對(duì)應(yīng)
        container.appendChild(tempTable);                                // 把創(chuàng)建的節(jié)點(diǎn)添加到頁(yè)面容器中
        buttonRef.current.handleDownload();                              // 手動(dòng)觸發(fā)下載
    };
    return (
        <div style={{ backgroundColor: '#fff' }} className={styles.container}>
            <span onClick={(e) => exportTable(e)}>
                <ReactHTMLTableToExcel
                    width={1900}
                    ref={buttonRef}
                    table="table-to-xls"
                    id='test-table-xls-button'
                    filename='回購(gòu)日?qǐng)?bào)'
                    sheet='表1'
                    buttonText='導(dǎo)出Excel'
                />
            </span>
            <Table
                columns={columns}
                dataSource={data}
                bordered
                pagination={false}
            />
            <div id='hiddenBox' style={{ position: 'absolute', zIndex: -1, top: 0, left: 0 }} />
        </div>
    )
}
export default StudyExcel;

 到此這篇關(guān)于react導(dǎo)出excel文件的四種方式的文章就介紹到這了,更多相關(guān)react導(dǎo)出excel文件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 在 React 中使用 Redux 解決的問(wèn)題小結(jié)

    在 React 中使用 Redux 解決的問(wèn)題小結(jié)

    在 React 中組件通信的數(shù)據(jù)流是單向的,頂層組件可以通過(guò) props 屬性向下層組件傳遞數(shù)據(jù),而下層組件不能直接向上層組件傳遞數(shù)據(jù),這篇文章主要介紹了使用react+redux實(shí)現(xiàn)彈出框案例,需要的朋友可以參考下
    2022-10-10
  • GraphQL在react中的應(yīng)用示例詳解

    GraphQL在react中的應(yīng)用示例詳解

    這篇文章主要為大家介紹了GraphQL在react中的應(yīng)用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10
  • React組件的三種寫法總結(jié)

    React組件的三種寫法總結(jié)

    本文主要總結(jié)了React組件的三種寫法以及最佳實(shí)踐,具有一定的參考價(jià)值,下面跟著小編一起來(lái)看下吧
    2017-01-01
  • React中狀態(tài)設(shè)置this.setState()的實(shí)現(xiàn)

    React中狀態(tài)設(shè)置this.setState()的實(shí)現(xiàn)

    本文對(duì)比了React中類組件和函數(shù)組件的狀態(tài)管理方式,前者合并更新,后者替換更新,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2025-09-09
  • React Native 中集成 MinIO 對(duì)象存儲(chǔ)的最佳實(shí)踐(圖片/文件上傳服務(wù))

    React Native 中集成 MinIO 對(duì)象存儲(chǔ)的最佳實(shí)踐(圖片/文件上傳

    本文介紹了從環(huán)境配置到實(shí)際應(yīng)用的完整流程,包括核心功能實(shí)現(xiàn)、最佳實(shí)踐和常見問(wèn)題解決方案,希望這些內(nèi)容能幫助你在 React Native 項(xiàng)目中更好地使用 MinIO,感興趣的朋友跟隨小編一起看看吧
    2026-04-04
  • React函數(shù)組件與類的區(qū)別有哪些

    React函數(shù)組件與類的區(qū)別有哪些

    函數(shù)式組件的基本意義就是,組件實(shí)際上是一個(gè)函數(shù),不是類,下面這篇文章主要給大家介紹了關(guān)于React中函數(shù)組件與類的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-10-10
  • React從插槽、路由、redux的詳細(xì)過(guò)程

    React從插槽、路由、redux的詳細(xì)過(guò)程

    React需要自己開發(fā)支持插槽功能,原理:父組件組件中寫入的HTML,可以傳入子組件的props中,這篇文章主要介紹了React從插槽、路由、redux的詳細(xì)過(guò)程,需要的朋友可以參考下
    2022-10-10
  • React實(shí)現(xiàn)createElement 和 cloneElement的區(qū)別

    React實(shí)現(xiàn)createElement 和 cloneElement的區(qū)別

    本文詳細(xì)介紹了React中React.createElement和React.cloneElement兩種方法的定義、用法、區(qū)別及適用場(chǎng)景,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-09-09
  • React實(shí)現(xiàn)表單提交防抖功能的示例代碼

    React實(shí)現(xiàn)表單提交防抖功能的示例代碼

    在 React 應(yīng)用中,防抖(Debounce)技術(shù)可以有效地限制函數(shù)在短時(shí)間內(nèi)的頻繁調(diào)用,下面我們就來(lái)看看如何使用Lodash庫(kù)中的debounce函數(shù)實(shí)現(xiàn)React表單提交中實(shí)現(xiàn)防抖功能吧
    2024-01-01
  • axios請(qǐng)求響應(yīng)數(shù)據(jù)加解密封裝實(shí)現(xiàn)詳解

    axios請(qǐng)求響應(yīng)數(shù)據(jù)加解密封裝實(shí)現(xiàn)詳解

    這篇文章主要為大家介紹了axios請(qǐng)求響應(yīng)數(shù)據(jù)加解密封裝實(shí)現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03

最新評(píng)論

武夷山市| 安阳市| 邛崃市| 张家港市| 襄城县| 阿荣旗| 格尔木市| 陈巴尔虎旗| 广东省| 德钦县| 太谷县| 永城市| 普兰县| 台北县| 沈阳市| 怀来县| 醴陵市| 噶尔县| 新泰市| 青州市| 浙江省| 宜君县| 盐池县| 连平县| 平昌县| 肇源县| 罗平县| 平潭县| 南通市| 南涧| 云霄县| 东山县| 东莞市| 独山县| 冀州市| 松溪县| 诸暨市| 兴山县| 曲麻莱县| 贵港市| 甘谷县|