tableExport.js 中关于特殊字符的导出

出现的现象

当table表格中有类似尖括号的特殊字符时,导出就会出现问题,

例如:如下图所示


导出后的格式如下 (xml) 格式 就会出现xml标签不对的问题

如果 表格数据中包含 等类型的数据后 ,导出的excel中直接丢失


丢失的原因

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'

你可能感兴趣的:(tableExport.js 中关于特殊字符的导出)