首頁>Club>
12
回覆列表
  • 1 # 聊聊資料分析那些事

    下面我就以JavaScript為案例來展示,實現純前端讀取和匯出excel檔案。

    一、讀取EXCEL

    讀取excel主要是透過方法來實現,返回一個叫的物件,type主要取值如下:

    : 以base64方式讀取;: BinaryString格式(byte n is data.charCodeAt(n)): UTF8編碼的字串;: nodejs Buffer;: Uint8Array,8位無符號陣列;: 檔案的路徑(僅nodejs下支援);獲取work book物件

    1.1讀取本地檔案程式碼:

    1.2 讀取網路檔案:

    解讀workbook:

    裡面有什麼東西呢,我們打印出來看一下:

    可以看到,裡面儲存了所有的sheet名字,然後則儲存了每個sheet的具體內容(我們稱之為)。每一個是透過類似這樣的鍵值儲存每個單元格的內容,我們稱之為單元格物件():

    每一個表示一張表格,只要不是開頭的都表示普通,否則,表示一些特殊含義,具體如下:

    :表示所有單元格的範圍,例如從A1到F8則記錄為;:存放一些單元格合併資訊,是一個數組,每個陣列由包含和構成的物件組成,表示開始,表示結束,表示行,表示列;

    單元格物件

    每一個單元格是一個物件(),主要有、、、、等欄位(詳見這裡):

    t:表示內容型別,表示string型別,表示number型別,表示boolean型別,表示date型別,等等v:表示原始值;f:表示公式,如;h:HTML內容w:格式化後的內容r:富文字內容

    根據確定excel的範圍,再根據確定單元格合併(如果有),最後輸出整個table,比較麻煩,幸運的是,外掛自身已經寫好工具類給我們直接使用,無需我們自己遍歷,工具類輸出主要包括如下:

    常用的主要是或者,轉csv的話會忽略格式、單元格合併等資訊,所以複雜表格可能不適用。轉html的話會保留單元格合併,但是生成的是程式碼,而不是,需要對錶格進行一些定製時不太方便,所以具體還是要視情況來採用合適的工具類。

    二、生成excel

    匯出分為2種,一種是基於現有excel修改,一種是全新生成,前者比較簡單,我們這裡著重講後者

    2.1自己手寫程式碼生成

    匯出excel檔案,主要是如何生成一個,我們這裡寫一個最簡單的csv轉excel示例:

    拿到上面的blob物件就可以直接下載了。

    2.2 利用官方工具生成

    其實上面這些程式碼都不需要我們手寫,官方已經提供好了現成的工具類給我們使用,主要包括:

    : 這個工具類最強大也最實用了,將一個二維陣列轉成sheet,會自動處理number、string、boolean、date等型別資料;: 將一個直接轉成sheet,會自動識別和並將其轉成對應的單元格合併;: 將一個由物件組成的陣列轉成sheet;

    以aoa_to_sheet為例:

  • 中秋節和大豐收的關聯?
  • 甲醇儀測量方法?