reactjs 我如何将React表导出到Excel文件中,并将自定义标题作为一列

jm81lzqq  于 2022-12-26  发布在  React
关注(0)|答案(1)|浏览(111)
import React, { useEffect, useState } from 'react';
import * as XLSX from 'xlsx'
import { useQuery } from '@tanstack/react-query';

const Excl = ({userDatas}) => {

    let xlDatas = []

    const handleExportExcl = (userDatas) => {
        userDatas.map(xlData => {
            xlDatas.push(xlData)
        })
  
        const wb = XLSX.utils.book_new(),
            ws = XLSX.utils.json_to_sheet(xlDatas)
        XLSX.utils.book_append_sheet(wb, ws, "MySheet");
        XLSX.writeFile(wb, "MyExcel.xlsx")
    }

    return (
        <span onClick={() => handleExportExcl(userDatas)} ><span className='flex justify-center items-center'> <span className='mr-3'></span>EXCEL </span> </span>
    );
};

export default Excl;

我想要一个Excel工作表,自定义标题作为一列。这是我的代码。我从另一个组件中获取userDatas。

f2uvfpb9

f2uvfpb91#

这是https://www.npmjs.com/package/xlsx-lite中的示例。

import XLSX from 'xlsx-lite';

// Create a workbook
const xlsx = new XLSX();

// Add a sheet to workbook
const sheet = xlsx.sheet('Sheet Name');

// Change sheet styles
sheet.style({
  rtl: true,
});

// Set values
sheet.row(1).col(1).set('foo');
sheet.cell(1, 2).set('bar');
sheet.set('baz', { row: 1, col: 3 });
sheet.cell(1, 4).set([
  'r1',
  ['r2,c4', 'r2,c5', 'r2,c6'],
  'r3',
])

// Get values
console.log(sheet.row(1).col(1).get()); // foo
console.log(sheet.get({ row: 1, col: 2 })); // bar

// Add styles
const someStyles = xlsx.style({
  color: '#f00',
  fontFamily: 'Baloo Bhaijaan',
  fontWeight: 'bold',
  fontSize: 14,
  textDecoration: 'line-through',
  fontStyle: 'italic',
  backgroundColor: '#ff0',
  textAlign: 'center',
  verticalAlign: 'middle',
  borderStyle: 'double',
  borderColor: '#00f',
});
sheet.set('styled', {
  row: 2,
  col: 1,
  style: someStyles,
});

// Set and get row height
sheet.row(2).height(100);
console.log(sheet.row(2).height()); // 100

// Set and get column width
sheet.col(1).width(20);
console.log(sheet.col(1).width()); // 20

// Add filters
sheet.addFilter({
  from: { row: 1, col: 1 },
  to: { row: 7, col: 1 },
});

// Download the result
xlsx.save('test.xlsx');

相关问题