| | |
| | | // XLSXS.utils.book_append_sheet(wb, ws, "Sheet1"); |
| | | // XLSXS.writeFile(wb, "data-region.xlsx"); |
| | | //============================================================================ |
| | | console.log(data, name, merges); |
| | | // data是点击导出按钮传递过来要导出的数据,name是导出的文件名,merges是合并的单元格 |
| | | // 将数据源转成我们需要的二维数组,序号、姓名这些是表格的表头 |
| | | const body = data.map((x) => [ |
| | |
| | | XLSXS.utils.book_append_sheet(workbook, sheet); // 向 workbook 中添加 sheet |
| | | XLSXS.writeFile(workbook, "data-region" + ".xlsx"); // 导出 workbook |
| | | } |
| | | export function saveFSDZJsonToExcelLine(data) { |
| | | // const data = [ |
| | | // { 姓名: "张三", 年龄: 18, 性别: "男" }, |
| | | // { 姓名: "李四", 年龄: 20, 性别: "女" }, |
| | | // { 姓名: "王五", 年龄: 22, 性别: "男" }, |
| | | // ]; |
| | | // const wb = XLSX.utils.book_new(); |
| | | // const ws = XLSX.utils.json_to_sheet(data); |
| | | // ws["!cols"] = [ |
| | | // { |
| | | // wpx: 150, |
| | | // }, |
| | | // { |
| | | // wpx: 500, |
| | | // }, |
| | | // { |
| | | // wpx: 100, |
| | | // }, |
| | | // ]; |
| | | // XLSXS.utils.book_append_sheet(wb, ws, "Sheet1"); |
| | | // XLSXS.writeFile(wb, "data-region.xlsx"); |
| | | //============================================================================ |
| | | // data是点击导出按钮传递过来要导出的数据,name是导出的文件名,merges是合并的单元格 |
| | | // 将数据源转成我们需要的二维数组,序号、姓名这些是表格的表头 |
| | | const body = data.map((x) => [ |
| | | x["layerName"], |
| | | x["values"], |
| | | x["lon"], |
| | | x["lat"], |
| | | ]); |
| | | const header = [ |
| | | // 这个是设置excel表格的标题,即在A1单元格的标题 |
| | | [ |
| | | { |
| | | v: ``, |
| | | t: "s", // 指定标题的样式 |
| | | }, |
| | | ], |
| | | // 这是对应body常量的表头 |
| | | ["layerName", "values", "lon", "lat"], |
| | | ]; |
| | | body.unshift(...header); // 将定义好的表头添加到 body 中 |
| | | const sheet = XLSXS.utils.aoa_to_sheet(body); // aoa_to_sheet 将二维数组转成 sheet |
| | | // 此处开始合并列,即相同名字的表格合并单元格 |
| | | let includeB = []; |
| | | let includesBnumber = []; |
| | | |
| | | // 设置列宽 |
| | | const cols = [{ wch: 100 }, { wch: 15 }, { wch: 12 }, { wch: 12 }]; |
| | | sheet["!cols"] = cols; // 将cols添加到sheet中 |
| | | // const rows = [{ hpx: 20 }, { hpx: 16 }, { hpx: 18 }]; |
| | | // sheet["!rows"] = rows; // 将rows添加到sheet中,设置行高 |
| | | Object.keys(sheet).forEach((key, i) => { |
| | | // 设置单元格样式 |
| | | if (key.indexOf("!") < 0) { |
| | | if (key == "A1") { |
| | | // 设置标题 |
| | | sheet[key].s = { |
| | | alignment: { |
| | | horizontal: "center", //水平居中 |
| | | vertical: "center", //竖直居中 |
| | | }, |
| | | font: { |
| | | bold: true, |
| | | // sz: 14, |
| | | // name: "宋体", |
| | | }, |
| | | }; |
| | | } else if ( |
| | | key == "A2" || |
| | | key == "B2" || |
| | | key == "C2" || |
| | | key == "D2" || |
| | | key == "E2" || |
| | | key == "F2" || |
| | | key == "G2" || |
| | | key == "H2" || |
| | | key == "I2" |
| | | ) { |
| | | // 设置表头 |
| | | sheet[key].s = { |
| | | fill: { |
| | | fgColor: { rgb: "A6A6A6" }, |
| | | }, |
| | | border: { |
| | | top: { style: "thin" }, |
| | | left: { style: "thin" }, |
| | | bottom: { style: "thin" }, |
| | | right: { style: "thin" }, |
| | | }, |
| | | font: { |
| | | bold: true, |
| | | // sz: 12, |
| | | // name: "宋体", |
| | | }, |
| | | }; |
| | | } else { |
| | | if (key.includes("A")) { |
| | | // 序列所在列 |
| | | if (typeof sheet[key].v == "number") { |
| | | // 列表列要求序号要居中,合计和总合计居左(应该是系统默认的,如果要设置居左或居右,也可以自己设置下alignment属性) |
| | | sheet[key].s = { |
| | | alignment: { |
| | | horizontal: "center", |
| | | vertical: "center", |
| | | }, |
| | | border: { |
| | | top: { style: "thin" }, |
| | | left: { style: "thin" }, |
| | | bottom: { style: "thin" }, |
| | | right: { style: "thin" }, |
| | | }, |
| | | }; |
| | | } else { |
| | | sheet[key].s = { |
| | | border: { |
| | | top: { style: "thin" }, |
| | | left: { style: "thin" }, |
| | | bottom: { style: "thin" }, |
| | | right: { style: "thin" }, |
| | | }, |
| | | }; |
| | | } |
| | | } else { |
| | | sheet[key].s = { |
| | | border: { |
| | | top: { style: "thin" }, |
| | | left: { style: "thin" }, |
| | | bottom: { style: "thin" }, |
| | | right: { style: "thin" }, |
| | | }, |
| | | alignment: { |
| | | horizontal: "left", |
| | | vertical: "center", |
| | | }, |
| | | }; |
| | | } |
| | | } |
| | | } |
| | | }); |
| | | // 设置结尾的表格 |
| | | // let sheetBorder = sheet["!ref"].substring(4); // 因为导出的单元格行数不确定,所以拿到最后一行的数字 |
| | | // let endSheetBorder = ["C", "D", "E", "F", "G", "H"]; //因为最后一行的合并的列是一样的,所以这里可以直接将列的单元格序号写个定值 |
| | | // endSheetBorder.forEach((e) => { |
| | | // let addBorder = e + sheetBorder; |
| | | // sheet[addBorder] = { |
| | | // v: "", |
| | | // t: "s", |
| | | // s: { |
| | | // border: { |
| | | // top: { style: "thin" }, |
| | | // bottom: { style: "thin" }, |
| | | // }, |
| | | // }, |
| | | // }; |
| | | // }); |
| | | const workbook = XLSXS.utils.book_new(); // 创建虚拟的 workbook |
| | | XLSXS.utils.book_append_sheet(workbook, sheet); // 向 workbook 中添加 sheet |
| | | XLSXS.writeFile(workbook, "data-region" + ".xlsx"); // 导出 workbook |
| | | } |