table表格导出为excel文件并设置样式

table表格导出为excel文件并设置样式

安装xlsx、xlsx-style-medalsoft 的 npm 包:

npm i xlsx xlsx-style-medalsoft

设置全局:

Vue.prototype.$XLSX = XLSX; // 设置全局
Vue.prototype.$XLSXStyle = XLSXStyle; // 设置全局

具体代码实现:

// 导出excel文件
exportFile() {
    // 导出名称
    let excelName = "file" + dateFormat(new Date(), "YYYY-MM-DD HH-mm-ss") + ".xlsx";

    const xlsxParam = { raw: true }; // 转化成Excel使用原始格式

    const table_book = this.$XLSX.utils.table_to_book(
        document.querySelector("#table"),
        xlsxParam
    );
    // console.log(table_book)

    let wbs = table_book.Sheets.Sheet1;
    // console.log(wbs)

    let arrA = Object.keys(wbs);
    arrA.forEach((item, index) => {
        if (wbs[item].v == "") {
            delete wbs[item];
        }
    });

    // 设置列宽
    this.column.forEach((item, i) => {
        wbs["!cols"][i] = { wch: 16 };
    });

    // 设置行高
    this.allTable.forEach((row, rowIndex) => {
        wbs["!rows"][rowIndex + 1] = { hpt: 24 };
    });
    wbs["!rows"][0] = { hpt: 24 };

    // 循环遍历每一个表格,设置样式
    for (const key in wbs) {
        if (key.indexOf("!") === -1) {
            wbs[key].s = {
                font: {
                    sz: 11, // 字体大小
                    bold: false, // 加粗
                    name: "宋体", // 字体
                    color: {
                        rgb: "000000", // 十六进制,不带#
                    },
                },
                alignment: {
                    // 文字居中
                    horizontal: "center",
                    vertical: "center",
                    wrapText: false, // 文本自动换行
                },
                border: {
                    // 设置边框
                    top: { style: "thin" },
                    bottom: { style: "thin" },
                    left: { style: "thin" },
                    right: { style: "thin" },
                },
            };
        }
        // 设置表头样式
        if (
            key == "A1" || key == "B1" || key == "C1" || key == "D1" || key == "E1" 
        ) {
            wbs[key].s.fill = {
                bgColor: { indexed: 64 },
                fgColor: { rgb: "95B3D7" },
            };
        }
    }

    let table_write = this.$XLSXStyle.write(table_book, {
        bookType: "xlsx",
        type: "buffer",
    });

    try {
        this.$FileSaver.saveAs(
            new Blob([table_write], { type: "application/octet-stream" }),
            excelName
        );
    } catch (e) {
        if (typeof console !== "undefined") {
            // console.log(e, table_write);
        }
    }
    return table_write;
},
  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在前端使用Vue导出表格样式Excel,可以通过以下步骤实现: 1. 首先,你需要安装并引入`xlsx`和`file-saver`这两个库。`xlsx`用于生成Excel文件,`file-saver`用于保存文件。 ```bash npm install xlsx file-saver ``` 2. 在Vue组件中,你可以创建一个方法来处理导出操作。首先,需要将表格数据转换为Excel数据格式。可以使用`xlsx`库的`utils.json_to_sheet()`方法将JSON数据转换为Excel的Sheet对象。 ```javascript import XLSX from 'xlsx'; import { saveAs } from 'file-saver'; export default { methods: { exportToExcel() { // 获取表格数据 const tableData = this.getTableData(); // 创建一个工作簿 const workbook = XLSX.utils.book_new(); // 将表格数据转换为Sheet对象 const sheet = XLSX.utils.json_to_sheet(tableData); // 将Sheet对象添加到工作簿中 XLSX.utils.book_append_sheet(workbook, sheet, 'Sheet1'); // 生成Excel文件的二进制数据 const excelData = XLSX.write(workbook, { bookType: 'xlsx', type: 'array' }); // 将二进制数据保存为Excel文件 const blob = new Blob([excelData], { type: 'application/octet-stream' }); saveAs(blob, 'table.xlsx'); }, getTableData() { // 获取表格数据的方法,根据你的具体实现进行编写 } } } ``` 3. 在Vue模板中,可以添加一个按钮或其他触发导出操作的元素,并绑定`exportToExcel`方法。 ```html <template> <div> <table> <!-- 表格内容 --> </table> <button @click="exportToExcel">导出Excel</button> </div> </template> ``` 这样,当用户点击"导出Excel"按钮时,会触发`exportToExcel`方法,将表格数据导出Excel文件并保存到本地。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值