npm包 xlsx 的數據導出之 json_to_sheet 工具的使用


<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <button id="btn">下載</button>
    <!-- 這個文件必須要引用, 不然下載下來的xlsx不能用 -->
    <script src="./xlsx.core.min.js"></script>
    <script src="./xlsx.js"></script>
    <!-- 我一般下載這兩個文件是直接新建一個文件夾, 在文件夾中打開cmd黑窗口 -->
    <!-- 在黑窗口中 npm init -y 初始化一個package.json文件 -->
    <!-- 然后 npm i xlsx 安裝包, 安裝完后去 node_modules 中找對應的文件即可 -->

    <script>
      const btn = document.querySelector("#btn");

      btn.addEventListener("click", (ev) => {
        // 假設這個是數據源 一般是直接拉服務器上的數據, 進行下載
        const data = [
          { id: 1, name: "張三", age: 10 },
          { id: 2, name: "張珊", age: 10 },
          { id: 3, name: "李四", age: 10 },
        ];

        // 展示名稱
        const headerReplace = { id: "ID", name: "名稱", age: "年齡" };

        // 數據源
        const sheet = [headerReplace, ...data];

        // 創建一個sheet表格   使用json_to_sheet, 數據格式比較為  數組包對象, 不然會報錯
        const worksheet = XLSX.utils.json_to_sheet(sheet, {
          // 這里可以通過設置header, 來對導出數據 列 順序的排序
          // 實測可以只寫一部分, 也可以整體排序
          // ["id", "name", "age"] 相當於把上面整個表頭給限制順序了
          header: ["age"],
          // 跳過 Header, 就是把原來表格數據的表頭去掉了, headerReplace渲染的數據 "冒充" 表頭了
          skipHeader: true,
        });

        // 簡單理解為在內存中 創建一個xlsx 文件
        const newWorkBook = XLSX.utils.book_new();
        // 把worksheet添加到workbook中
        XLSX.utils.book_append_sheet(newWorkBook, worksheet, "SheetJS");
        // 寫入文件, CHROME瀏覽器會直接下載, 后面的是文件名稱和后綴
        XLSX.writeFile(newWorkBook, "訂單.xlsx");
      });
    </script>
  </body>
</html>

 

 

 

//=======================================================================================================================>

 

如果導出的內容的每一項都是 數組, 例如

表頭 = ["id", "姓名", "年齡"]

內容 = [ [1, "張三", 18],  [2, "李四",  20 ] ]

直接把上面的  json_to_sheet 替換成  aoa_to_sheet 就能正常導出了

 

//=========================================================================================================================>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM