const data = [
["名称", "数量", "价格",'指标(月度形象进度及投资)','','',''],
["笔记本电脑", 10, 5000,'妇科大夫','拉过来'],
["平板电脑", 20, 3000,'12345678','接口规范'],
["手机老公就分开了国家分开了国家", 30, 2000,'甘就分开感觉','赶快']
/* 创建一个工作簿 */
var workbook = XLSX.utils.book_new();
/* 把数据添加到一个工作表中 */
var worksheet = XLSX.utils.aoa_to_sheet(data);
//XLSX.utils.aoa_to_sheet 把二维数组转换
//XLSX.utils.json_to_sheet 把json数据转换
/* 设置单元格的行高和列宽 */
worksheet["!cols"] = [
{ wch: 30}, // 1个字母数字代表1个字符,1个中文代表2个字符
{ wpx: 80 }, // 列宽为80像素
{ wpx: 80 },
{ wch: 16 },
{ wpx: 80 },
{ wpx: 80 },
{ wpx: 80 }
worksheet["!rows"] = [
{ hpt: 20 }, // 行高为20 我目前测试两个hpt hpx 好像差不多,可以自行测试
{ hpx: 30 }, // 行高为30像素
{ hpx: 100 }
/* 把工作表添加到工作簿中 */
XLSX.utils.book_append_sheet(workbook, worksheet, "Sheet1");
/* 导出工作簿 */
XLSX.writeFile(workbook, "data.xlsx");
把json导出为xlsx
把json转成二维数组继续使用
XLSX.utils.aoa_to_sheet
/* 导出表格 */
exportExcel_() {
/* 定义表格的数据 */
const data = [
{ name: 'Alice', age: 25, city: 'New York'},
{ name: 'Bob', age: 30, city: 'London' },
{ name: 'Cathy', age: 35, city: 'Paris' },
/* 将JSON数据转换为二维数组,然后在用XLSX.utils.aoa_to_sheet生成表格
记得这里只是把表的内容转出来了,还要把表头放进去
let jsonArr = data.map(item => [item.name, item.age, item.city]);
jsonArr.unshift(['姓名','年龄','城市'])
/* 创建一个工作簿 */
var workbook = XLSX.utils.book_new();
/* 把数据添加到一个工作表中 */
var worksheet = XLSX.utils.aoa_to_sheet(jsonArr);
/* 设置单元格的行高和列宽 */
worksheet["!cols"] = [
{ wch: 30}, // 1个字母数字代表1个字符,1个中文代表2个字符
{ wpx: 80 }, // 列宽为80像素
{ wpx: 80 },
worksheet["!rows"] = [
{ hpt: 20 }, // 行高为20 我目前测试两个hpt hpx 好像差不多,可以自行测试
{ hpx: 30 }, // 行高为30像素
{ hpx: 100 }
/* 把工作表添加到工作簿中 */
XLSX.utils.book_append_sheet(workbook, worksheet, "Sheet1");
/* 导出工作簿 */
XLSX.writeFile(workbook, "data.xlsx");
直接使用json导出,但是要换成XLSX.utils.json_to_sheet
/* 导出表格 */
exportExcel_() {
/* 定义表格的数据 */
const data = [
{ name: 'Alice', age: 25, city: 'New York'},
{ name: 'Bob', age: 30, city: 'London' },
{ name: 'Cathy', age: 35, city: 'Paris' },
//但是这样导出表头就是key,如果想要表头是中文我们就要把key替换成我们想要的内容
let newKeys = { name: '姓名', age: '年龄', city: '城市' };
let newArr = data.map(obj => {
let newObj = {};
Object.keys(obj).forEach(key => {
newObj[newKeys[key]] = obj[key];
return newObj;
/* 创建一个工作簿 */
var workbook = XLSX.utils.book_new();
/* 把数据添加到一个工作表中 */
var worksheet = XLSX.utils.XLSX.utils.json_to_sheet(newArr);
/* 设置单元格的行高和列宽 */
worksheet["!cols"] = [
{ wch: 30}, // 1个字母数字代表1个字符,1个中文代表2个字符
{ wpx: 80 }, // 列宽为80像素
{ wpx: 80 },
worksheet["!rows"] = [
{ hpt: 20 }, // 行高为20 我目前测试两个hpt hpx 好像差不多,可以自行测试
{ hpx: 30 }, // 行高为30像素
{ hpx: 100 }
/* 把工作表添加到工作簿中 */
XLSX.utils.book_append_sheet(workbook, worksheet, "Sheet1");
/* 导出工作簿 */
XLSX.writeFile(workbook, "data.xlsx");
合并单元格
/* 定义表格的数据 */
let data = [
["名称", "数量", "价格",'指标(月度形象进度及投资)','','',''],
["笔记本电脑", 10, 5000,'妇科大夫','拉过来'],
["平板电脑", 20, 3000,'12345678','接口规范'],
["手机老公就分开了国家分开了国家", 30, 2000,'甘就分开感觉','赶快']
/* 创建一个工作簿 */
let workbook = XLSX.utils.book_new();
/* 把数据添加到一个工作表中 */
let worksheet = XLSX.utils.aoa_to_sheet(data);
/* 设置单元格的行高和列宽 */
worksheet["!cols"] = [
{ wch: 30}, // 1个字母数字代表1个字符,1个中文代表2个字符
{ wpx: 80 }, // 列宽为80像素
{ wpx: 80 },
{ wch: 16 },
{ wpx: 80 },
{ wpx: 80 },
{ wpx: 80 }
worksheet["!rows"] = [
{ hpt: 20 }, // 行高为20 我目前测试两个hpt hpx 好像差不多,可以自行测试
{ hpx: 30 }, // 行高为30像素
{ hpx: 100 }
//合并单元格操作 要合并的单元格范围 ,s代表起始,e代表结束,
worksheet['!merges'] = [
// 相当于 c1到G1D 合并,合并单元格记得合并掉的也要用''代替
{ s: { r: 0, c: 3 }, e: { r: 0, c: 6 } },
workbook = XLSX.utils.book_new();
console.log('wb',workbook);
/* 把工作表添加到工作簿中 */
XLSX.utils.book_append_sheet(workbook, worksheet, "Sheet1");
/* 导出工作簿 */
XLSX.writeFile(workbook, "data.xlsx");