Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/392.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
将多维数组转换为JavaScript中CSV文件的列,并使用浏览器bookmarklet保存_Javascript_Arrays_Csv_Export To Csv_Bookmarklet - Fatal编程技术网

将多维数组转换为JavaScript中CSV文件的列,并使用浏览器bookmarklet保存

将多维数组转换为JavaScript中CSV文件的列,并使用浏览器bookmarklet保存,javascript,arrays,csv,export-to-csv,bookmarklet,Javascript,Arrays,Csv,Export To Csv,Bookmarklet,通过使用bookmarklet在浏览器中运行Javascript,我的目标是从网页上的链接收集数据,然后将其放入格式化的CSV中进行下载。我看到的任务是: 获取数据 将其放入数组中 格式为CSV 导出数据(作为可下载文件或加载到浏览器中以手动保存) 我已经完成了1和2,给了我一个数组数组作为表的列。我被困在3号和4号。以下是数据示例: // test data for 'const' column (length of array will be variable) var dataColumn

通过使用bookmarklet在浏览器中运行Javascript,我的目标是从网页上的链接收集数据,然后将其放入格式化的CSV中进行下载。我看到的任务是:

  • 获取数据
  • 将其放入数组中
  • 格式为CSV
  • 导出数据(作为可下载文件或加载到浏览器中以手动保存)
  • 我已经完成了1和2,给了我一个数组数组作为表的列。我被困在3号和4号。以下是数据示例:

    // test data for 'const' column (length of array will be variable)
    var dataColumn = ["tt0468569", "tt0111161", "tt1795369", "tt7738450"];
    
    // making arrays for other columns in export table (most of the other columns will be empty)
    var emptyArray = Array(dataColumn.length).fill('')
    var titleType = Array(dataColumn.length).fill('Feature Film')
    
    // make array of arrays (columns) ready to export as csv
    var dataTable = [emptyArray,dataColumn,emptyArray,emptyArray,emptyArray,emptyArray,titleType,emptyArray,emptyArray,emptyArray,emptyArray,emptyArray,emptyArray,emptyArray,emptyArray,emptyArray];
    
    // column headers for table
    var tableHeaders = ["position","const","created","modified","description","Title","Title type","Directors","You rated","IMDb Rating","Runtime (mins)","Year","Genres","Num. Votes","Release Date (month/day/year)","URL"]
    
    以及我想要的输出:

    position,const,created,modified,description,Title,Title type,Directors,You rated,IMDb Rating,Runtime (mins),Year,Genres,Num. Votes,Release Date (month/day/year),URL
    ,tt0468569,,,,,Feature Film,,,,,,,,,
    ,tt0111161,,,,,Feature Film,,,,,,,,,
    ,tt1795369,,,,,Feature Film,,,,,,,,,
    ,tt7738450,,,,,Feature Film,,,,,,,,,
    

    一种方法是-格式化应该只是将所有单独的行(TableHeader+所有datatable行)输出到一个数组中,然后将数组连接到一个带有“行尾”符号的长字符串中(这可能会自动发生,也可能不会自动发生,您可能需要使用它)。然后将结果字符串放入页面上的链接/按钮中

    因此,大致如下:

        var OutString = [];
        // your existing code here for defining the headers
        OutString[0] = TableHeader
     for (var i = 1; i < LineCount; ++i) { // looping mechanism through pickup from the page
    // your existing code here for picking up the details
          OutString[i] = dataTable
         }
        TestFunc += OutString.join(''); // or whatever you want your end of line to be
        OutPutLine = '<a href="data:text/plain;charset=UTF-8, ' + encodeURIComponent(TestFunc) + '" download="' + decodeURIComponent(escape('your file name here')) +'">{optional button etc here}</a>';
    
    var-OutString=[];
    //您的现有代码用于定义标题
    突出部分[0]=表头
    对于(var i=1;i

    然后将OutPutLine写入页面元素

    一种方法是-格式化应该只是将所有单独的行(TableHeader+所有datatable行)输出到一个数组中,然后将数组连接到一个带有“行尾”符号的长字符串中(这可能会自动发生,也可能不会自动发生,您可能需要使用它)。然后将结果字符串放入页面上的链接/按钮中

    因此,大致如下:

        var OutString = [];
        // your existing code here for defining the headers
        OutString[0] = TableHeader
     for (var i = 1; i < LineCount; ++i) { // looping mechanism through pickup from the page
    // your existing code here for picking up the details
          OutString[i] = dataTable
         }
        TestFunc += OutString.join(''); // or whatever you want your end of line to be
        OutPutLine = '<a href="data:text/plain;charset=UTF-8, ' + encodeURIComponent(TestFunc) + '" download="' + decodeURIComponent(escape('your file name here')) +'">{optional button etc here}</a>';
    
    var-OutString=[];
    //您的现有代码用于定义标题
    突出部分[0]=表头
    对于(var i=1;i

    然后将OutPutLine写入页面元素

    您几乎完成了数组的创建,只需更改创建
    tableData
    的方法即可。您需要相应地映射它们,而不是将
    tableData
    附加一组数组作为
    empty array
    title array

    请看下面的代码片段:

    函数下载Excel(){
    var dataColumn=[“tt0468569”、“TT011161”、“tt1795369”、“tt7738450”];
    var tableHeaders=[“位置”、“常数”、“创建”、“修改”、“描述”、“标题”、“标题类型”、“董事”、“您评级”、“IMDb评级”、“运行时间(分钟)”、“年份”、“流派”、“票数”、“发布日期(月/日/年)”、“URL”];
    //现在创建了excel数据的容器,即tableHeaders+DataHeaders:
    var dataTable=新数组();
    push(tableHeaders);
    //现在围绕数据进行循环
    dataColumn.forEach(函数(col){
    数据表。推送(['',col','','','','','','','','','','','','','','','');
    });
    //现在将给定的数组转换为“csv”内容
    让csvContent=“data:text/csv;charset=utf-8,”;
    dataTable.forEach(函数(rowArray){
    让row=rowArray.join(“,”);
    csvContent+=行+“\r\n”;
    });
    //通过锚定标记(链接)调用csv下载,以便我们可以提供文件名
    var encodedUri=encodeURI(csvContent);
    var link=document.createElement(“a”);
    link.setAttribute(“href”,encodedUri);
    link.style.display='none';
    link.setAttribute(“下载”,“myCSV.csv”);//将其更改为提供您自己的名称
    link.innerHTML=“单击此处下载”;
    document.body.appendChild(link);//FF需要
    link.click();
    link.remove();//下载后删除链接
    }

    单击我下载excel
    您几乎完成了数组的创建,只需更改创建
    表格数据的方法即可。您需要相应地映射它们,而不是将
    tableData
    附加一组数组作为
    empty array
    title array

    请看下面的代码片段:

    函数下载Excel(){
    var dataColumn=[“tt0468569”、“TT011161”、“tt1795369”、“tt7738450”];
    var tableHeaders=[“位置”、“常数”、“创建”、“修改”、“描述”、“标题”、“标题类型”、“董事”、“您评级”、“IMDb评级”、“运行时间(分钟)”、“年份”、“流派”、“票数”、“发布日期(月/日/年)”、“URL”];
    //现在创建了excel数据的容器,即tableHeaders+DataHeaders:
    var dataTable=新数组();
    push(tableHeaders);
    //现在围绕数据进行循环
    dataColumn.forEach(函数(col){
    数据表。推送(['',col','','','','','','','','','','','','','','','');
    });
    //现在将给定的数组转换为“csv”内容
    让csvContent=“data:text/csv;charset=utf-8,”;
    dataTable.forEach(函数(rowArray){
    让row=rowArray.join(“,”);
    csvContent+=行+“\r\n”;
    });
    //通过锚定标记(链接)调用csv下载,以便我们可以提供文件名
    var encodedUri=encodeURI(csvContent);
    var link=document.createElement(“a”);
    link.setAttribute(“href”,encodedUri);
    link.style.display='none';
    link.setAttribute(“下载”,“myCSV.csv”);//将其更改为提供您自己的名称
    link.innerHTML=“单击此处下载”;
    document.body.appendChild(link);//FF需要
    link.click();
    link.remove();//下载后删除链接
    }

    点击我下载excel
    看看。谢谢。我已经读过了,但我无法使用它。我的技能还不足以解决如何在我的工作中使用它