出现的现象
当table表格中有类似尖括号的特殊字符时,导出就会出现问题,
例如:如下图所示
导出后的格式如下 (xml) 格式 就会出现xml标签不对的问题
如果 表格数据中包含
丢失的原因
var text = htmlData.replace(/\n/g, '\u2028').replace(//gi, '\u2060');
var obj = $('div').html(text).contents(); var number = false; text = ''; $.each(obj.text().split("\u2028"), function (i, v) { if ( i > 0 ) text += " "; text += $.trim(v); });
查看源码得知
htmlData为 $("td").html()获取的。但是 表格td中嵌套 特殊字符时 对于不识别的标签进行了显示。(html的解析方式,对于不识别标签当成文本处理)
但是在 jquery的这个方法中 $('div').html(text).contents()中 获取了一个 obj,
再用obj获取 text()时 此时 会把 特殊字符的标签忽略。原因在于 $.html()方法会把
解决办法
在导出的回调方法中添加过滤如下
附录
consoleLog: false
csvEnclosure: '"'
csvSeparator: ','
csvUseBOM: true
displayTableName: false
escape: false
excelFileFormat: 'xlshtml'
excelPageOrientation: 'portrait'
excelRTL: false
excelstyles: []
exportHiddenCells: false
fileName: 'tableExport'
htmlContent: false
ignoreColumn: []
ignoreRow: []
jsonScope: 'all'
jspdf: orientation: 'p'
unit:'pt'
format: 'a4'
margins: left: 20
right: 10
top: 10
bottom: 10
onDocCreated: null
autotable: styles: cellPadding: 2
rowHeight: 12
fontSize: 8
fillColor: 255
textColor: 50
fontStyle: 'normal'
overflow: 'ellipsize'
halign: 'left'
valign: 'middle'
headerStyles: fillColor: [52, 73, 94]
textColor: 255
fontStyle: 'bold'
halign: 'center'
alternateRowStyles: fillColor: 245
tableExport: doc: null
onAfterAutotable: null
onBeforeAutotable: null
onAutotableText: null
onTable: null
outputImages: true
maxNestedTables: 1
numbers: html: decimalMark: '.'
thousandsSeparator: ','
output: decimalMark: '.',
thousandsSeparator: ','
onCellData: null
onCellHtmlData: null
onIgnoreRow: null
onMsoNumberFormat: null
outputMode: 'file'
pdfmake: enabled: false
docDefinition: pageOrientation: 'portrait'
defaultStyle: font: 'Roboto'
fonts: {}
tbodySelector: 'tr'
tfootSelector: 'tr'
theadSelector: 'tr'
tableName: 'myTableName'
type: 'csv'
worksheetName: 'WorksheetName'