Datatables / TableTools:将数据格式化为文本,以便导出到Excel。
Datatables / TableTools:将数据格式化为文本,以便导出到Excel。
我在使用Datatables TableTools插件,以提供一个导出Excel选项给我的一个页面上的表格。
总的来说,一切都按预期工作。
我唯一的问题是,我需要所有的数据或者说是导出的Excel表格中的列被格式化为文本,否则一些列中的数据会被删除。
例子:
- 我有一个带有前导零的列(例如0022
),如果不格式化为文本,那么在Excel文件中只显示去掉前导零的数字(例如22
)。
- 另一个列包含19位长的账号号码(例如1234567890123456789
),如果不格式化为文本,在Excel文件中会显示最后四位数字被改为零的结果(例如1234567890123450000
)。
有没有办法在我的Datatables / TableTools初始化中设置,以便它始终将所有数据导出为文本格式到Excel文件中?
非常感谢您对此的帮助,谢谢,Tim。
admin 更改状态以发布 2023年5月21日
我有解决这个问题的方法。
这个问题困扰了我很长时间...下面是解释:
- 在DatatableJS版本1.10.11中解决很好(用于HTML Excel导出选项)
- 打开datatables.js文件并搜索此内容: "DataTable.ext.buttons.excelHtml5 = {"
-
查找以下行直到找到此代码并将其注释:
cells.push( typeof row[i] === 'number' || (row[i].match && $.trim(row[i]).match(/^-?\d+(\.\d+)?$/) && row[i].charAt(0) !== '0') ? '
' : ''+row[i]+' ' // they are not valid in XML );'+( ! row[i].replace ? row[i] : row[i] .replace(/&(?!amp;)/g, '&') .replace(//g, '>') .replace(/[\x00-\x09\x0B\x0C\x0E-\x1F\x7F-\x9F]/g, ''))+ // remove control characters ' -
放入新代码:
cells.push( '
' // they are not valid in XML );'+( ! row[i].replace ? row[i] : row[i] .replace(/&(?!amp;)/g, '&') .replace(//g, '>') .replace(/[\x00-\x09\x0B\x0C\x0E-\x1F\x7F-\x9F]/g, ''))+ // remove control characters ' -
保存datatables.js文件
- 享受您的神圣文本单元格!
此解决方案可帮助保持数字、日期和小数格式。
我改变了代码,强制将来自HTML到XLSX的所有值都写在文本格式中。
如果有人对此解决方案有问题,我会尽力回答所有问题。
感谢所有人。