将来自 html table 的数据格式化为 filesaver.js 中的 xlsx 文件的问题 - VueJs
Problems with formatting data coming from the html table to the xlsx file in filesaver.js - VueJs
我正在使用 Filesaver.js 库从我拥有的 table 中导出 .xlsx 文件。但是我收到了一些错误。见下文:
使用带有 Quasar 框架的 VueJs 创建的原始 table:
生成的 .xlsx 文件:
另一种情况
生成的 .xlsx 文件:
我的代码:
exportTable() {
let wb = XLSX.utils.table_to_book(document.querySelector('.q-table'), {
sheet: "Sheet JS",
})
let wbout = XLSX.write(wb, {
bookType: 'xlsx',
bookSST: true,
type: 'binary'
})
function s2ab(s) {
let buf = new ArrayBuffer(s.length)
let view = new Uint8Array(buf)
for (let i = 0; i < s.length; i++) view[i] = s.charCodeAt(i) & 0xFF
return buf
}
saveAs(new Blob([s2ab(wbout)], {
type: "text/plain;charset=utf-8"
}), 'test.xlsx')
为什么导出电子表格时 table 中的字符格式没有保留?
我的电子表格数据没有被视为字符串吗?
我是巴西人。抱歉英语不好(=
经过几天的寻找答案,我设法解决了我的问题。
更准确地说,只需使用 {raw: true}
。通过这样做,库不再格式化数据,将其保留为来自 HTML 的原始格式。有趣的是,我没有在文档中找到这个。
// import something here
import Vue from 'vue'
import XLSX from 'xlsx'
import {
saveAs
} from 'file-saver'
// Global Function
const exportExcel = (table) => {
let wb = XLSX.utils.table_to_book(table, {
sheet: "Sheet JS",
raw: true // Here
})
let wbout = XLSX.write(wb, {
bookType: 'xlsx',
bookSST: true,
type: 'binary'
})
function s2ab(s) {
let buf = new ArrayBuffer(s.length)
let view = new Uint8Array(buf)
for (let i = 0; i != s.length; i++) view[i] = s.charCodeAt(i) & 0xFF
return buf
}
saveAs(new Blob([s2ab(wbout)], {
type: "text/plain;charset=utf-8"
}), 'spreadsheet.xlsx')
}
Vue.prototype.$exportExcel = exportExcel;
// "async" is optional;
// more info on params: https://quasar.dev/quasar-cli/cli-documentation/boot-files#Anatomy-of-a-boot-file
//export default exportExcel
我正在使用 Filesaver.js 库从我拥有的 table 中导出 .xlsx 文件。但是我收到了一些错误。见下文:
使用带有 Quasar 框架的 VueJs 创建的原始 table:
生成的 .xlsx 文件:
另一种情况
生成的 .xlsx 文件:
我的代码:
exportTable() {
let wb = XLSX.utils.table_to_book(document.querySelector('.q-table'), {
sheet: "Sheet JS",
})
let wbout = XLSX.write(wb, {
bookType: 'xlsx',
bookSST: true,
type: 'binary'
})
function s2ab(s) {
let buf = new ArrayBuffer(s.length)
let view = new Uint8Array(buf)
for (let i = 0; i < s.length; i++) view[i] = s.charCodeAt(i) & 0xFF
return buf
}
saveAs(new Blob([s2ab(wbout)], {
type: "text/plain;charset=utf-8"
}), 'test.xlsx')
为什么导出电子表格时 table 中的字符格式没有保留?
我的电子表格数据没有被视为字符串吗?
我是巴西人。抱歉英语不好(=
经过几天的寻找答案,我设法解决了我的问题。
更准确地说,只需使用 {raw: true}
。通过这样做,库不再格式化数据,将其保留为来自 HTML 的原始格式。有趣的是,我没有在文档中找到这个。
// import something here
import Vue from 'vue'
import XLSX from 'xlsx'
import {
saveAs
} from 'file-saver'
// Global Function
const exportExcel = (table) => {
let wb = XLSX.utils.table_to_book(table, {
sheet: "Sheet JS",
raw: true // Here
})
let wbout = XLSX.write(wb, {
bookType: 'xlsx',
bookSST: true,
type: 'binary'
})
function s2ab(s) {
let buf = new ArrayBuffer(s.length)
let view = new Uint8Array(buf)
for (let i = 0; i != s.length; i++) view[i] = s.charCodeAt(i) & 0xFF
return buf
}
saveAs(new Blob([s2ab(wbout)], {
type: "text/plain;charset=utf-8"
}), 'spreadsheet.xlsx')
}
Vue.prototype.$exportExcel = exportExcel;
// "async" is optional;
// more info on params: https://quasar.dev/quasar-cli/cli-documentation/boot-files#Anatomy-of-a-boot-file
//export default exportExcel