前端如何導出 Excel(CSV)文件

2021-03-02 素燕

有時候需要把一些數據導出到一個 Excel 文件中,並下載。遇到這個問題,其實能夠直接導出一個 CSV(Comma-Separated Values) 文件即可。CSV 是一種以純文本方式存儲的表格文件,每個單元格數據以逗號分割,每行通過換行符分割,類似這種形式:

name,age,from\nsuyan,20,beijing\nlefex,30,baotou\n

所以,如果把一些數據導出到文件只要轉換成這種數據格式即可。

{
    header: ["name", "age", "from"],
    data: [
        {
            name: "suyan",
            age: "23",
            from: 'beijing'
        },
        {
            name: "lefex",
            age: "30",
            from: 'baotou'
        }
    ]
}

function exportToCSVFile(obj) {    let header = obj.header.join(',') + '\n';    let datas = obj.data.map(ele => {        return `${ele.name},${ele.age},${ele.from}\n`;    });    let dataStrs = [header, ...datas].join(''); }

把字符串導出文件,可以使用 Blob 對象,通過 Blob 對象生成一個 URL,然後創建一個 a 標籤,達到下載文件的目的。代碼中的 \uFEFF 是一個文件頭,表示文件的編碼,不加這個頭,通過某些軟體打開時可能會發生亂碼。 

 const blob = new Blob(['\uFEFF' + dataStrs], {   type: 'text/plain;charset=utf-8', });

創建一個 a 標籤,每行代碼我都詳細寫了注釋:

const link = document.createElement("a");link.href = URL.createObjectURL(blob);console.log(link.href);
link.download = "suyan.csv";link.click();URL.revokeObjectURL(link.href);

完整代碼如下:

function exportToCSVFile(obj) {
    let header = obj.header.join(',') + '\n';
    let datas = obj.data.map(ele => {
        return `${ele.name},${ele.age},${ele.from}\n`;
    });
    let dataStrs = [header, ...datas].join('');
    // 創建一個 Blob 對象
    const blob = new Blob(['\uFEFF' + dataStrs], {
        type: 'text/plain;charset=utf-8',
    });
    // 創建一個 a 標籤
    const link = document.createElement("a");
    // 一個 URL,可以是任意協議的,不只是 HTTP 協議
    // 這裡創建了一個 Blob URL
    // blob:http://localhost:1234/9b3be48e-9948-496d-8a2b-18d437eb46e0
    link.href = URL.createObjectURL(blob);
    console.log(link.href);

    // 此屬性表示用戶下載文件而不是進行導航到 URL,這裡指的為文件名
    link.download = "suyan.csv";
    link.click();
    // 需要釋放 URL
    URL.revokeObjectURL(link.href);
}

本節內容主要學習了 CSV 文件格式,Blob 對象,Blob URL,通過 JS 代碼下載文件。大家加油!

長按關注

幫助 10W 人入門並進階前端

相關焦點

  • 如何使用JavaScript實現前端導入和導出excel文件
    使用JavaScript實現前端導入excel文件並自動生成可編輯的Table組件在開始實現之前, 我們先來看看實現效果.使用JavaScript實現前端基於Table數據一鍵導出excel文件同樣的, 我們實現將table數據一鍵導出為excel也是類似, 不過方案有所不同, 我們先來看看在Dooring中的實現效果.
  • (進階篇)使用PHP導入和導出CSV文件
    項目開發中,很多時候要將外部CSV文件導入到資料庫中或者將數據導出為CSV文件,那麼具體該如何實現呢?本文將使用PHP並結合mysql,實現了CSV格式數據的導入和導出功能。我們先準備mysql數據表,假設項目中有一張記錄學生信息的表student,並有id,name,sex,age分別記錄學生的姓名、性別、年齡等信息。
  • 如何將Excel或csv文件導入R?
    今天介紹如何將excel或csv文件導入進R。在學習了一系列的R語言作圖教程後,想必有些小夥伴都已經躍躍欲試,想要分析自己手頭的數據了。為了示範,先用Excel創建一個xlsx數據:"mydata.xlsx",具體如下圖所示。
  • 更高效的Python CSV文件導出
    如何使用等等?並且最後我們用一個例子簡單講解了如何使用Python模塊CSV進行導出後綴為.csv的文本文件。具體文章參看:Python模塊之CSV導出(一)其實例子用於異步導出數據文件是夠了,但工作中我們可能還需要結合我們Web框架進行更複雜的CSV導出。所以今天我們的目的就是結合Python Django框架進行分享CSV導出的另外一種方式。
  • 匯總csv文件其實很簡單,用excel三步即可搞定,並且支持數據更新
    Hello,大家好,今天跟大家分享下我們如何快速的匯總多個csv文件,這個也是之前一個粉絲問道的問題,前幾太忙沒時間寫,今天就跟大家分享下Csv文件常見於我們從系統中導出的文件,或者是下載的一些網頁的數據,因為是從系統中導出的文件,他們的格式都是一摸一樣的
  • 【R包薈萃】Excel文件的批量導入與導出:openxlsx包實用技巧
    本期主要為大家介紹導入和導出excel文件的工具:openxlsx包,以及批量導入導出文件的一些小技巧。install.packages("openxlsx")library("openxlsx")導出excel文件使用的是write.xlsx函數,通過介紹我們可以看到該函數主要是將數據框導出為xlsx文件,同時由於excel可存在多個sheet,該函數也支持導出a list of data.frames。
  • Java大數據導出Excel解決方案(POI、JXL、IO流(CSV)對比)
    該方式採用最原始的形式進行導出工作,選擇合適的流工作效率會非常出色。但是僅支持對文本文件的操作,如:CSV、TXT等,且導出的文件會相對較大。解決方案:         方案一         使用POI3.8以上版本,使用SXSSFWorkbook方式導出Excel2007.導出文件單頁限制為1,048,576行和16,384列,默認可創建255個工作表,實際創建數受內存大小影響,可解決百萬級以上數據量的導出。
  • python 處理 csv 文件
    csv 文件是一種逗號分隔的純文本形式存儲的表格數據,Python內置了CSV模塊,可直接通過該模塊實現csv文件的讀寫操作,在web應用中導出數據是比較常見操作
  • CSV是什麼文件 怎麼打開csv文件
    經常使用資料庫軟體的朋友都清楚csv文件是什麼用的,最早是使用在簡單的資料庫裡,由於其格式簡單,並具備很強的開放性,如果使用到csv文件該怎麼打開呢?下面給大家介紹幾種打開csv文件的常用方法。最早出現csv文件是為了實現簡單的數據存儲,是一個純文本的文件,最廣泛的應用是在程序之間轉移表格數據,能夠兼容各類程序,那面對這樣的文件類型該怎麼打開呢,下面一起來學習下csv文件怎麼打開的方法。以下是csv文件怎麼打開的詳細教程:了解什麼是csv文件?
  • python讀寫csv文件
    這樣的方式在處理制表符分隔的文件時,沒什麼問題,但是在處理csv文件時,會非常的頭痛。CSV文件格式簡單理解,是逗號分隔的純文本,但是實際上非常靈活。在excel導出的csv文件中,會遇到某個欄位內部出現了逗號的情況,這樣的字符在兩端添加雙引號來進行區分,示意如下>>> with open('file.csv') as f:... for line in f:... print(line.rstrip().split(','))...
  • Excel打開csv文件出現亂碼的解決方法
    CSV文件是一種數據文件,正常情況下,我們可以直接在excel表格中打開CSV文件,不過有時也會出現亂碼,很多人不知道該如何解決。
  • 程式設計師:java導出Excel,附帶依賴、後端代碼和前端JS
    -- 解析Excel文件的jar包 用於2007+ 版本的excel --><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId
  • C 導出 Excel 的 6 種簡單方法!你會幾種?
    此時,導出數據與保存 Excel 文件是同時進行的。使用此方法導出高性能的大數據。下面的代碼示例演示了如何將數據從集合導出到 Excel 工作表。最重要的是,你可以參考文檔從外部連接創建一個表,以了解如何將資料庫導出到Excel 表。下面的代碼示例演示了如何將數據從資料庫導出到 Excel 表。
  • Vue+Eement表格通過前端導出為Excel文件
    此方法能夠導出多級表格。== "undefined") console.log(e, wbout);        }        return wbout;    }};export default  htmlToExcel;使用函數,文件位置src/views/TablePage.vue注:表格導出實現解釋
  • R語言數據導入與導出
    在用R語言分析數據時,我們首先要進行數據的導入與導出。R支持多種文件格式,包括但不限於常見的txt,csv,xlsx,和tsv等等。數據的導入依賴於各種R包,方法大同小異,可根據實際情況舉一反三。getwd()# output will be "D:/Folder_name"在R中導出 .CSV 文件read.csv()是R中默認的讀取.csv文件的函數,是read.table()函數的簡易形式,讀.csv文件時非常方便實用。
  • MySQL導出數據為csv的方法
    將資料庫中的數據導出成csv格式的文件CSV格式,其要點包括:(1)欄位之間以逗號分隔,數據行之間以\r\n分隔;
  • python項目實踐分享:使用pandas處理大型CSV文件
    CSV(Comma Separated Values)作為一種逗號分隔型值的純文本格式文件,在實際應用中經常用到。如資料庫數據的導入導出、數據分析中記錄的存儲等。因此很多語言都提供了對CSV文件處理的模塊。Python也不例外,其模塊csv提供了一系列與CSV處理相關的 API。
  • selenium自動化利用excel文件實現批量傳值
    selenium自動化測試的時候,經常會用到數據來做批量測試,常用的方式有讀取txt文件,xml文件,csv文件以及excel文件幾種,本文給大家講解一下在selenium 中如何利用excel文件實現批量傳值,python讀取excel主要用到xlrd庫,此庫可在pycharm手動下載此類庫
  • NPOI 導出 excel 性能測試
    excel 性能測試Intro網上看到很多人說 NPOI 的性能不行,自己寫了一個 NPOI 的擴展庫,於是想嘗試看看 NPOI 的性能究竟怎麼樣,道聽途說始終不如自己動手一試。= new ExcelPackage(); var sheet = excel.Workbook.Worksheets.Add("tempSheet"); for (var i = 1; i <= RowsCount; i++) { for (var j = 1; j <
  • excel圖片導出的方法
            excel教程中圖片導出的操作應該怎樣進行呢?  假設一個excel工作表中有上百張圖片,如何批量導出到某一文件夾呢?  excel圖片導出的方法如下介紹。