前端知识分享——SheetJS 用法体验
前端知识分享——SheetJS 用法体验Write and share what I see and hear使用SheetJS导出 Excel 表格最近遇到一个很好用的前端导出Excel 表格的工具 – SheetJS官方地址github地址官方提供了多种版本,自己做点小demo可以使用社区免费版本使用方法具体使用方法在官方文档中有很详细的说明,这里举个例子安装npm install xlsx引
·
使用SheetJS导出 Excel 表格
Write and share what I see and hear
最近遇到一个很好用的前端导出Excel 表格的工具 – SheetJS
官方地址
github地址
官方提供了多种版本,自己做点小demo可以使用社区免费版本
使用方法
具体使用方法在官方文档中有很详细的说明,这里举个例子
安装
npm install xlsx
引入
import xlsx from 'xlsx'
使用
// 1. 创建一个工作簿 workbook
const workBook = xlsx.utils.book_new()
// 2. 创建工作表 worksheet
const workSheet = xlsx.utils.json_to_sheet([
{
id: 1, name: '张三', age: 16
},
{
id: 2, name: '李四', age: 18
},
{
id: 3, name: '王五', age: 20
}
])
// 3. 将工作表放入工作簿中
xlsx.utils.book_append_sheet(workBook, workSheet)
// 4. 生成数据保存
xlsx.writeFile(workBook, `测试.xlsx`, {
bookType: 'xlsx'
})
通过以上步骤,即可得到一个excel表格
优化
修改表头
- 定义表头对应的字段
const header = {
id: '编号', name: '姓名', age: '年龄'
}
- 处理数据
list = list.map(item => {
const obj = {}
for (const key in item) {
if (header[key]) {
obj[header[key]] = item[key]
} else {
obj[key] = item[key]
}
}
return obj
})
对比上面的使用方法将数据放入工作表
// 2. 创建工作表 worksheet
const workSheet = xlsx.utils.json_to_sheet(list)
通过以上操作,即可得到一个拥有直观表头的excel表格
复用
上面的方法每次使用都需要重新手动引入js,还需要再写一遍使用过程,稍微有些麻烦,下面封装一个可直接复用的方法
- js用法
import xlsx from 'xlsx'
export const jsonToExcel = (options: {
list, header, fileName, bookType,
}) => {
if (options.header) {
options.list = options.list.map(item => {
const obj = {}
for (const key in item) {
if (options.header[key]) {
obj[options.header[key]] = item[key]
} else {
obj[key] = item[key]
}
}
return obj
})
}
// 1. 创建一个工作簿 workbook
const workBook = xlsx.utils.book_new()
// 2. 创建工作表 worksheet
const workSheet = xlsx.utils.json_to_sheet(options.list)
// 3. 将工作表放入工作簿中
xlsx.utils.book_append_sheet(workBook, workSheet)
// 4. 生成数据保存
xlsx.writeFile(workBook, options.fileName || `测试.${new Date().valueOf()}.xlsx`, {
bookType: options.bookType || 'xlsx'
})
}
- 下面是结合了ts的写法(添加了类型验证)
import xlsx from 'xlsx'
export const jsonToExcel = (options: {
list: any[],
header: Record<string, string>,
fileName?: string,
bookType?: xlsx.BookType | undefined,
}) => {
if (options.header) {
options.list = options.list.map(item => {
const obj: Record<string, any> = {}
for (const key in item) {
if (options.header[key]) {
obj[options.header[key]] = item[key]
} else {
obj[key] = item[key]
}
}
return obj
})
}
// 1. 创建一个工作簿 workbook
const workBook = xlsx.utils.book_new()
// 2. 创建工作表 worksheet
const workSheet = xlsx.utils.json_to_sheet(options.list)
// 3. 将工作表放入工作簿中
xlsx.utils.book_append_sheet(workBook, workSheet)
// 4. 生成数据保存
xlsx.writeFile(workBook, options.fileName || `测试.${new Date().valueOf()}.xlsx`, {
bookType: options.bookType || 'xlsx'
})
}
将上面的方法单独放入文件中,使用时,只需要引入jsonToExcel方法,并传入对应的参数就可以了
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
已为社区贡献1条内容
所有评论(0)