Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 数组以进行excel响应_Reactjs_Typescript - Fatal编程技术网

Reactjs 数组以进行excel响应

Reactjs 数组以进行excel响应,reactjs,typescript,Reactjs,Typescript,我对此有点陌生,我正在尝试将我的数据数组传递到excel,但到目前为止,没有任何东西适合我 我有一个例子 import {ExcelFile, ExcelSheet} from "react-export-excel"; const [listSelectNewTable, setListSelectNewTable] = useState([]) const DataExcel = [ { columns: [ { value: "Clave Client

我对此有点陌生,我正在尝试将我的数据数组传递到excel,但到目前为止,没有任何东西适合我

我有一个例子

import {ExcelFile, ExcelSheet} from "react-export-excel";

const [listSelectNewTable, setListSelectNewTable] = useState([])

const DataExcel = [
{
columns: [
  { value: "Clave Cliente", widthPx: 50 }, 
  { value: "Nobre Cliente", widthCh: 20, widthCh: 20  }, 
  { value: "Clave Articulo", widthPx: 60}, 
  { value: "Nombre Cliente", widthPx: 60}, 
  { value: "Clave Unidad", widthPx: 60},
  { value: "Precio", widthPx: 60}, 
],
data: [listSelectNewTable],
}
];

class Download extends React.Component {
render() {
    return (
        <ExcelFile>
            <ExcelSheet dataSet={DataExcel} name="Price"/>
        </ExcelFile>
    );
}
从“react export excel”导入{ExcelFile,ExcelSheet};
常量[listSelectNewTable,setListSelectNewTable]=useState([])
常量数据Excel=[
{
栏目:[
{值:“Clave客户”,宽度px:50},
{value:“Nobre客户”,widthCh:20,widthCh:20},
{值:“Clave Articulo”,宽度px:60},
{值:“名义客户”,宽度px:60},
{值:“Clave Unidad”,宽度px:60},
{值:“Precio”,宽度px:60},
],
数据:[listSelectNewTable],
}
];
类下载扩展了React.Component{
render(){
返回(
);
}
有人能告诉我我做错了什么吗?

在我们开始之前: 很明显,如果不将任何数据传递给
数据集
,您将不会有任何数据:

const[listSelectNewTable,setListSelectNewTable]=useState([])
//listSelectNewTable=[]
此外,您还试图在组件外部调用
useState
,然后继续使用
class
组件。如果不想听起来有屈尊俯就的意思,您确实应该研究何时使用以及何时使用(提示:这是一个或另一个),因为它超出了此问题/答案的范围,但如果您不花时间至少理解基本知识,代码将永远无法工作

我的回答的剩余部分假设你至少解决了这个问题

问题是: 此外,即使它有任何数据,也会导致错误,因为您的数据键入错误

数据集
prop
类型
定义为:

dataSet: Array<ExcelSheetData>
  • 您实际传递给
    dataSet
    prop的是
     Array<ExcellCellData>
     // expecting: Array<ExcelValue | ExcelCell> (eg. ['A', 22])
    
     Array<Array<never>>
     // received: [[]]
     // [] = Array<never>
    
    现在您可以正确地传递数据了,但是很明显,除非您传递的是任何实际数据而不是空数组,否则excel工作表中不会有任何内容阻止列

    最终注释(答案不需要): 一般来说,我建议在github页面上使用星级较高的软件包(这个有65个)这只是现有软件包的一个分支,尤其是对于excel导出等更复杂的东西。虽然有时毛坯中确实存在隐藏的钻石,但大多数情况下,星星是软件包质量的良好指示器

    我第一次随机浏览了一下软件包后,发现自己的答案中有一个打字错误,这让我担心里面还有多少其他错误,除非你知道并信任作者,或者这是一个非常合适的软件包

    因为递归

     interface ExcelCell {
       value: ExcelCell; // should be ExcelCellValue
       style: ExcelStyle;
     }
    

    毫无意义,只需要无限递归地声明对象接口定义。有几件事需要更改:

    不能将useState钩子与类组件一起使用。若要使用此钩子,请将组件更改为功能组件

    您没有正确使用库。下面是一个很好的示例,说明如何使用它: 特别是,您没有向图纸中添加任何列

    我猜您希望为组件提供动态数据(它不应该总是显示相同的内容)。如果您希望这样做,您应该在父组件级别注入数据

    所以对于你们班:

    import React, { useState } from 'react'; 
    import ReactExport from "react-export-excel"; 
    const ExcelFile = ReactExport.ExcelFile; 
    const ExcelSheet = ReactExport.ExcelFile.ExcelSheet; 
    const ExcelColumn = ReactExport.ExcelFile.ExcelColumn;
    
    const Download = ({ data }) => {
    
      const [listSelectNewTable, setListSelectNewTable] = useState(data);
        return (
          <ExcelFile>
            <ExcelSheet data={listSelectNewTable} name="Price">
              {
                listSelectNewTable[0].columns.map(d =>
                  <ExcelColumn label={d.value} value={0} />)
              }
            </ExcelSheet>
          </ExcelFile>
        ); }
    
    export default Download;
    
    import React,{useState}来自“React”;
    从“react导出excel”导入react导出;
    const ExcelFile=ReactExport.ExcelFile;
    const ExcelSheet=ReactExport.ExcelFile.ExcelSheet;
    const ExcelColumn=ReactExport.ExcelFile.ExcelColumn;
    常量下载=({data})=>{
    const[listSelectNewTable,setListSelectNewTable]=useState(数据);
    返回(
    {
    listSelectNewTable[0]。columns.map(d=>
    )
    }
    ); }
    导出默认下载;
    
    对于家长:

    <Download data={DataExcel} />
    
    
    

    使用父类中最初在类中拥有的数据,以便您可以将其注入组件。

    您是否可以共享正在使用的库(例如,Excel文件和Excel工作表是什么)?准备添加它…您是否尝试使用此示例数据集?如果是,则您提供的数据格式不正确-您传递到
    数据集的
    数据
    数组不包含任何数据(?)此外,它的类型不正确。它应该是在传递
    Array
    的同时传递的。如果这是我举的示例,为了更好地理解,我只想传递
    const[listSelectNewTable,setListSelectNewTable]=useState([])
    到excel..我该怎么做?或者我在哪里可以举一个例子
    listSelectNewTable
    它已经有了数据,我用另一种方法填充它,现在当我将它添加到一个对象时,我的任务是创建excel,然后通过S3发送它
    <Download data={DataExcel} />