Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >数据表导出多个搜索和选定的行

数据表导出多个搜索和选定的行
EN

Stack Overflow用户
提问于 2019-06-08 13:30:26
回答 1查看 398关注 0票数 1

我无法将多次搜索和选择的数据导出到CSV。我正在从有超过1000条记录的数据库中获取数据。例如,如果我在第一页选择了两行,然后我搜索其他记录,然后选择该记录并导出,但它只导出搜索到的记录,而不是来自第一页的记录。

代码语言:javascript
运行
AI代码解释
复制
$('#master tfoot th').each(function() {
    var title = $(this).text();
    $(this).html('<input type="text" placeholder="Search ' + title + '" />');
});

// DataTable

var master = $('#master').DataTable({
    dom: 'Blfrtip',
    buttons: [
        'copy',
        'csv',
        'excel',
        'pdf',
        {
            extend: 'print',
            text: 'Print all (not just selected)',
            exportOptions: {
                modifier: {
                    selected: null
                }
            }
        }
    ],
    select: true
});


// Apply the search
master.columns().every(function() {
    var that = this;

    $('input', this.footer()).on('keyup change', function() {
        if (that.search() !== this.value) {
            that
                .search(this.value)
                .draw();
        }
    });
});
EN

回答 1

Stack Overflow用户

发布于 2019-06-08 16:07:47

在服务器端使用处理时,这是一个已知的限制。在这种情况下,datatable对象只知道当前绘图的数据。这就是为什么您只能导出表的可见/呈现内容的原因。

如果要从当前选定的所有行中导出数据,可以侦听数据表的select.dtdeselect.dt事件,并将所选内容的行数据存储在一个额外的数组中,您可以从中创建用于导出的csv数据。

有关这些事件的更多信息和示例,请参阅:

每当选择发生变化时,就会调度一个事件。我们可以侦听此select-event,检查选择是否为row类型,并将数据添加到数组或对象中。由于我们想要防止重复,我们应该为数据选择一个唯一的键(基于id或行的其他一些数据)。

根据您是如何实现数据表和处理的,您还必须注意deselect-event。还可以在datatable中添加一些对分页的特殊处理,这样当您再次导航到其他页面时,这些行就会显示为选中状态。

代码语言:javascript
运行
AI代码解释
复制
let selectedRows = {}; // holds all the data of selected rows

let table = $('#example').DataTable({ /* settings */ });
table.on('select', function(e, dt, type, indexes) {
  if ( type === 'row' ) {
    let data = table.rows( indexes ).data();
    for (let item of data) {
      let key = item[0] + '_' + item[2] + '_' + item[2]; // an unique key, for example built from: eventName, firstName and lastName
      if (!(key in selectedRows)) {
        selectedRows[key] = item;
      } 
    }
  }
});
// Todo: handle deselect and maybe pagination...

然后,您可以使用javascript在浏览器中导出该数据。

代码语言:javascript
运行
AI代码解释
复制
let csvData = 'COLUMN_1,COLUMN_2,COLUMN_3, ..., COLUMN_N';
for (let row of selectedRows) {
  csvData = csvData + '\n'
   + '"' + row.column_1 + '",'
   + '"' + row.column_2 + '",'
   + '"' + row.column_3 + '",'
   /* ... */
   + '"' + row.column_N + '",';

// Create temporary download-element
let a = window.document.createElement('a');
a.href = window.URL.createObjectURL(new Blob([csvData], { type: 'text/csv;charset=utf-8;' }));
a.download = 'export.csv';
a.display = 'none';

// Append element to body and click it
document.body.appendChild(a);
a.click();

// Remove element from body
document.body.removeChild(a);

注意:如果您的数据包含包含双引号"的字符串,则必须使用额外的双引号""对其进行转义。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56506881

复制
相关文章
MySQL数据表格导入导出
结语:数据的具体导入导出格式大家可以自己尝试一下。但个人建议涉及格式转换的话尽量先用其他工具,为防止出错还是尽量只转换纯文本列数据(无特殊格式)。
云海谷天
2022/08/09
3.3K0
SAP标准导出功能 - 删除默认选定格式
如果在使用这个功能的时候,选择了“始终使用选定的格式”,则之后使用此功能,不会再出现选择电子表格的界面。这样就出现一个问题,如果我想更改其他的格式就不能满足了。
用户5495712
2020/06/04
1.9K0
vue导出excel数据表格功能
前端工作量最多的就是需求,需求就是一直在变,比如当前端数据写完之后,需要用Excel把数据下载出来。
小周sir
2019/09/23
1.7K0
vue导出excel数据表格功能
mysqldump指定数据表导出
作者:matrix 被围观: 1,835 次 发布时间:2021-03-31 分类:mysql | 一条评论 »
HHTjim 部落格
2022/09/26
3.7K0
navicat如何导出mysql数据表结构
我们在创建数据库时会对字段进行设置,比如类型、长度等,如果字段多的话一个个设置非常麻烦,可以从其他地方已有的表导入数据表结构,怎么操作呢?我们拿navicat导出mysql数据表结构为例:
ytkah
2018/09/28
12.1K0
navicat如何导出mysql数据表结构
MySQL查询导出数据表结构信息
最近在写文档,需要用到数据库设计文档,表结构很多,如果一个个去复制黏贴,也是很花时间,所以需要借助INFORMATION_SCHEMA库的表
SmileNicky
2022/11/06
5.5K0
MySQL查询导出数据表结构信息
如何使用 MySQL 的 IDE 导出导入数据表文件
关于更多 MySQL 数据库以及数据库 IDE 的问题大家可以移步本人专栏——MySQL 数据库。
白鹿第一帅
2021/03/02
4.5K0
如何使用 MySQL 的 IDE 导出导入数据表文件
java导出excel(二):多个sheet
相信在大部分的web项目中都会有导出导入Excel的需求,之前我也写过一篇导出单个sheet工作表的文章,没看过的小伙伴可以去看哈,链接也给大家放出来了:导出单个sheet
军军不吃鸡
2022/10/26
1.6K0
java导出excel(二):多个sheet
使用VIM搜索多个文件[通俗易懂]
使用vim可以方便的搜索多个文件,这个时侯需要使用的命令是:vimgrep。vimgrep的命令格式是:
全栈程序员站长
2022/11/09
2.1K0
matplotlib:如何选定颜色
此颜色选择方式是由正则匹配的 C[0-9] 来确定颜色。只要是支持这种颜色的地方都可以通过这种方式来设置,而且也可以作为 matplotlib.Axes.plot 的单字符颜色。
bugsuse
2020/04/21
1.1K0
matplotlib:如何选定颜色
【springboot+easypoi】导出多个sheet页
对,没有错,又是我,又是easyPOI,又是excel导出。每个程序猿都听说技术是为业务服务的,那么···当需求变了之后我们能做什么呢?
小尘哥
2020/07/17
2.1K0
MySQL导入导出数据表容量的一个问题场景
问题描述:从源库(兼容MySQL协议的TDSQL,select version()=5.7,test表字符集是utf8,test是个分区表)通过如下指令,导出一份数据,SQL格式的,文件6G,
bisal
2023/08/24
2350
MySQL导入导出数据表容量的一个问题场景
一起来学matlab-matlab学习笔记4 数据导入和导出_3 导入和导出电子数据表
本文为matlab自学笔记的一部分,之所以学习matlab是因为其真的是人工智能无论是神经网络还是智能计算中日常使用的,非常重要的软件。也许最近其带来的一些负面消息对国内各个高校和业界影响很大。但是我们作为技术人员,更是要奋发努力,拼搏上进,学好技术,才能师夷长技以制夷,为中华之崛起而读书!
演化计算与人工智能
2020/08/14
7210
批量查找Git作者和导出搜索带作者(IDEA 插件)
插件主页:https://plugins.jetbrains.com/plugin/20557-find-author GitHub 主页:https://github.com/LinWanCen/find-author
林万程
2022/12/09
1.2K0
批量查找Git作者和导出搜索带作者(IDEA 插件)
Jquery如何删除table里面checkbox选中的多个行与多个列
(adsbygoogle = window.adsbygoogle || []).push({});
tianyawhl
2019/04/04
4.3K0
编码技巧 --- 同步锁对象的选定
线程锁的原理,就是锁住一个资源,使得应用程序在此刻只有一个线程访问该资源。通俗地讲,就是让多线程变成单线程。在C#中,可以将被锁定的资源理解成 new 出来的普通CLR对象。
Niuery Diary
2023/10/22
1420
编码技巧 --- 同步锁对象的选定
nodejs的xlsx模块批量解析与导出excel数据表简单使用
想用nodejs的xlsx模板实现一个小功能,可以批量解析多个excel表,且能对其中的数据进行操作后,导出新表。
蓓蕾心晴
2020/03/06
2.1K0
点击加载更多

相似问题

PrimeNG数据表-导出选定的行

20

导出选定的行和列

25

获取数据表多个选定行值作为数组

20

,导出表的选定行

13

读取和显示数据表中的选定行

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文