最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript?中使用SpreadJS導(dǎo)入和導(dǎo)出?Excel?文件的方法

 更新時間:2022年09月22日 08:57:49   作者:葡萄城技術(shù)團隊  
這篇文章主要介紹了如何在?JavaScript?中使用SpreadJS導(dǎo)入和導(dǎo)出?Excel?文件,本文通過圖文實例代碼相結(jié)合給大家介紹的非常詳細,對大家的學(xué)習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

JavaScript在前端領(lǐng)域占據(jù)著絕對的統(tǒng)治地位,目前更是從瀏覽器到服務(wù)端,移動端,嵌入式,幾乎所有的所有的應(yīng)用領(lǐng)域都可以使用它。技術(shù)圈有一句很經(jīng)典的話“凡是能用JavaScript實現(xiàn)的東西,最后都會用JavaScript實現(xiàn)”。
Excel 電子表格自 1980 年代以來一直為各行業(yè)所廣泛使用,至今已擁有超過3億用戶,大多數(shù)人都熟悉 Excel 電子表格體驗。許多企業(yè)在其業(yè)務(wù)的各個環(huán)節(jié)中使用了 Excel 電子表格進行數(shù)據(jù)管理。

在本博客中,我們將介紹如何按照以下步驟在 JavaScript 中,實現(xiàn)頁面端電子表格導(dǎo)入/導(dǎo)出到 Excel:
完整Demo示例請點擊此處下載

  • 設(shè)置 JavaScript 電子表格項目
  • 添加 Excel 導(dǎo)入代碼
  • 將數(shù)據(jù)添加到導(dǎo)入的 Excel 文件
  • 添加迷你圖
  • 添加 Excel 導(dǎo)出代碼

設(shè)置 JavaScript 電子表格項目

首先,我們可以使用托管在 NPM 上的 SpreadJS 文件。為此,我們可以使用命令行參數(shù)進行安裝。打開命令提示符并導(dǎo)航到應(yīng)用程序的位置。在那里,您可以使用一個命令安裝所需的文件。

在這種情況下,我們需要基本的 Spread-Sheets 庫、Spread-ExcelIO 和 jQuery:

npm i @grapecity/spread-sheets @grapecity/spread-excelio jquery

SpreadJS 不依賴于 jQuery,但在這種情況下,我們使用它來提供簡單的跨域請求支持,稍后我們將對其進行回顧。

一旦安裝了這些,我們就可以在我們的代碼中添加對這些腳本和 CSS 文件的引用:

<!DOCTYPE html>  
<html>  
<head>  
    <title>SpreadJS ExcelIO</title>
    <script src="./node_modules/jquery/dist/jquery.min.js" type="text/javascript"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/FileSaver.js/2014-11-29/FileSaver.min.js"></script>

    <link href="./node_modules/@grapecity/spread-sheets/styles/gc.spread.sheets.excel2013white.css" rel="stylesheet" type="text/css" />
    <script type="text/javascript" src="./node_modules/@grapecity/spread-sheets/dist/gc.spread.sheets.all.min.js"></script>
    <script type="text/javascript" src="./node_modules/@grapecity/spread-excelio/dist/gc.spread.excelio.min.js"></script>

</head>  
<body>  
    <div id="ss" style="height:600px; width :100%; "></div>  
</body>  
</html>  

除了 SpreadJS 和 jQuery 文件之外,我們還需要導(dǎo)入 FileSaver 庫,為了便于后續(xù)程序處理,SpreadJS默認提供完整的文件流,F(xiàn)ileSaver庫可以用來把文件流轉(zhuǎn)成文件下載到本地。

然后我們可以在頁面中添加一個腳本來初始化 Spread.Sheets 組件和一個 div 元素來包含它(因為 SpreadJS 電子表格組件使用了一個畫布,這是初始化組件所必需的):

 <script type="text/javascript">  
        $(document).ready(function () {  
            var workbook = new GC.Spread.Sheets.Workbook(document.getElementById("ss"));  
        });  
    </script>  
</head>  
<body>  
    <div id="ss" style="height:600px ; width :100%; "></div>  
</body>

添加 Excel 導(dǎo)入代碼

我們需要創(chuàng)建一個客戶端 ExcelIO 組件的實例,我們可以使用它來打開文件:

var excelIO = new GC.Spread.Excel.IO();

然后我們需要添加一個函數(shù)來導(dǎo)入文件。在此示例中,我們導(dǎo)入了一個本地文件,但您可以對服務(wù)器上的文件執(zhí)行相同的操作。如果從服務(wù)器導(dǎo)入文件,您需要引用該位置。下面是一個輸入元素的示例,用戶可以在其中輸入文件的位置:

<input type="text" id="importUrl" value="http://www.testwebsite.com/files/TestExcel.xlsx" style="width:300px" />

一旦你有了它,你可以直接在腳本代碼中訪問該值:

var excelUrl = $("#importUrl").val();

導(dǎo)入函數(shù)的以下代碼使用“excelUrl”變量的本地文件:

function ImportFile() {  
    var excelUrl = "./test.xlsx";  

    var oReq = new XMLHttpRequest();  
    oReq.open('get', excelUrl, true);  
    oReq.responseType = 'blob';  
    oReq.onload = function () {  
        var blob = oReq.response;  
        excelIO.open(blob, LoadSpread, function (message) {  
            console.log(message);  
        });  
    };  
    oReq.send(null);  
}  
function LoadSpread(json) {  
    jsonData = json;  
    workbook.fromJSON(json);  

    workbook.setActiveSheet("Revenues (Sales)");  
}  

無論您是在服務(wù)器上還是在本地引用文件,都需要在 $(document).ready 函數(shù)內(nèi)的腳本中添加以下內(nèi)容:

$(document).ready(function () {  
    $.support.cors = true;  
    workbook = new GC.Spread.Sheets.Workbook(document.getElementById("ss"));  
    //...  
});  

在這種情況下,我們需要啟用 Cross-Origin-Request-Support,因為我們可能會從 URL 加載文件。因此 $.support.cors = true;行,否則嘗試加載它會導(dǎo)致 CORS 錯誤。

將數(shù)據(jù)添加到導(dǎo)入的 Excel 文件

我們使用本教程的“損益表”Excel 模板導(dǎo)入本地文件。

現(xiàn)在我們可以使用 Spread.Sheets 腳本在這個文件中添加另一個收入行。讓我們在頁面上添加一個按鈕來執(zhí)行此操作:
Add Revenue

我們可以為該按鈕的單擊事件處理程序編寫一個函數(shù)來添加一行并從前一行復(fù)制樣式以準備添加一些數(shù)據(jù)。要復(fù)制樣式,我們需要使用 copyTo 函數(shù)并傳入:

  • 原始和目標行和列索引
  • 行數(shù)和列數(shù)
  • 樣式的 CopyToOptions 值
document.getElementById("addRevenue").onclick = function () {  
    var sheet = workbook.getActiveSheet();  
    sheet.addRows(newRowIndex, 1);  
    sheet.copyTo(10, 1, newRowIndex, 1, 1, 29, GC.Spread.Sheets.CopyToOptions.style);  
}

以下用于添加數(shù)據(jù)和 Sparkline 的腳本代碼將包含在此按鈕單擊事件處理程序中。對于大部分數(shù)據(jù),我們可以使用 setValue 函數(shù)。這允許我們通過傳入行索引、列索引和值來在 Spread 中的工作表中設(shè)置值:

sheet.setValue(newRowIndex, 1, "Revenue 8");  
for (var c = 3; c < 15; c++) {  
    sheet.setValue(newRowIndex, c, Math.floor(Math.random() * 200) + 10);  
}  

最后,我們可以再次使用 copyTo 函數(shù)將先前行中的公式復(fù)制到 R 到 AD 列的新行,這次使用 CopyToOptions.formula:

sheet.copyTo(10, 17, newRowIndex, 17, 1, 13, GC.Spread.Sheets.CopyToOptions.formula);  

添加迷你圖

現(xiàn)在,我們可以添加迷你圖來匹配其他數(shù)據(jù)行。為此,我們需要提供一系列單元格以從中獲取數(shù)據(jù)以及迷你圖的一些設(shè)置。在這種情況下,我們可以指定:

  • 單元格的范圍,我們只是將數(shù)據(jù)添加到
  • 使迷你圖看起來像同一列中的其他迷你圖的設(shè)置
var data = new GC.Spread.Sheets.Range(11, 3, 1, 12);  
var setting = new GC.Spread.Sheets.Sparklines.SparklineSetting();  
setting.options.seriesColor = "Text 2";  
setting.options.lineWeight = 1;  
setting.options.showLow = true;  
setting.options.showHigh = true;  
setting.options.lowMarkerColor = "Text 2";  
setting.options.highMarkerColor = "Text 1";  

之后,我們調(diào)用 setSparkline 方法并指定:

  • 迷你圖的位置
  • 數(shù)據(jù)的位置
  • 迷你圖的方向
  • 迷你圖的類型
  • 我們創(chuàng)建的設(shè)置
sheet.setSparkline(11, 2, data, GC.Spread.Sheets.Sparklines.DataOrientation.horizontal, GC.Spread.Sheets.Sparklines.SparklineType.line, setting);  

如果您現(xiàn)在嘗試運行代碼,它可能看起來有點慢,因為每次更改數(shù)據(jù)和添加樣式時工作簿都會重新繪制。為了顯著加快速度并提高性能,Spread.Sheets 提供了暫停繪畫和計算服務(wù)的能力。讓我們在添加一行及其數(shù)據(jù)之前添加代碼以暫停兩者,然后在之后恢復(fù)兩者:

workbook.suspendPaint();  
workbook.suspendCalcService();  
//...  
workbook.resumeCalcService();  
workbook.resumePaint();  

添加該代碼后,我們可以在 Web 瀏覽器中打開該頁面,并查看 Excel 文件加載到 Spread.Sheets 中并添加了收入行。重要提示:請記住,出于安全考慮,Chrome 不允許您打開本地文件,因此您需要使用 Firefox 等網(wǎng)絡(luò)瀏覽器才能成功運行此代碼。或者,從網(wǎng)站 URL 加載文件應(yīng)該可以在任何瀏覽器中正常打開。

添加 Excel 導(dǎo)出代碼

最后,我們可以添加一個按鈕來導(dǎo)出包含添加行的文件。為此,我們可以使用 Spread.Sheets 中內(nèi)置的客戶端 ExcelIO 代碼:

function ExportFile() {  
    var fileName = $("#exportFileName").val();  
    if (fileName.substr(-5, 5) !== '.xlsx') {  
        fileName += '.xlsx';  
    }  
    var json = JSON.stringify(workbook.toJSON());  

    excelIO.save(json, function (blob) {  
        saveAs(blob, fileName);  
    }, function (e) {  
        if (e.errorCode === 1) {  
            alert(e.errorMessage);  
        }  
    });  
}  

該代碼從 exportFileName 輸入元素獲取導(dǎo)出文件名。我們可以定義它并讓用戶像這樣命名文件:

<input type="text" id="exportFileName" placeholder="Export file name" value="export.xlsx" />  

然后我們可以添加一個按鈕來調(diào)用這個函數(shù):

<button id="export">Export File</button>  
document.getElementById("export").onclick = function () {  
    ExportFile();  
}  

添加收入行后,您可以使用“導(dǎo)出文件”按鈕導(dǎo)出文件。確保添加 FileSaver 外部庫以允許用戶將文件保存在他們想要的位置:

<script src="https://cdnjs.cloudflare.com/ajax/libs/FileSaver.js/2014-11-29/FileSaver.min.js"></script>  

成功導(dǎo)出文件后,您可以在 Excel 中打開它,并查看文件與導(dǎo)入時的外觀相同,只是現(xiàn)在我們添加了額外的收入行。

這只是一個示例,說明如何使用 SpreadJS JavaScript 電子表格將數(shù)據(jù)添加到 Excel 文件,然后使用簡單的 JavaScript 代碼將它們導(dǎo)出回 Excel。

在另一個系列文章中,我們演示了如何在其他 Javascript 框架中導(dǎo)入/導(dǎo)出 Excel 電子表格:

  • React
  • Vue
  • Angular

本文示例下載地址:https://gcdn.grapecity.com.cn/forum.php?mod=attachment&aid=MjMzMzU3fGU0NTJlZWEyfDE2NjM3MjYyNTl8NjI2NzZ8OTk3MTg%3D 

更多純前端表格在線demo示例 :https://demo.grapecity.com.cn/spreadjs/gc-sjs-samples/index.html 
純前端表格應(yīng)用場景:https://www.grapecity.com.cn/developer/spreadjs#scenarios
移動端示例(可掃碼體驗):http://demo.grapecity.com.cn/spreadjs/mobilesample/

到此這篇關(guān)于如何在 JavaScript 中使用SpreadJS導(dǎo)入和導(dǎo)出 Excel 文件的文章就介紹到這了,更多相關(guān)js使用SpreadJS導(dǎo)入和導(dǎo)出 Excel內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • javascript按順序加載運行js方法

    javascript按順序加載運行js方法

    本篇文章主要教給大家如何在javascript中動態(tài)加載按順序加載運行js的方法以及實現(xiàn)代碼,需要的朋友參考學(xué)習下吧。
    2017-12-12
  • Js利用Canvas實現(xiàn)圖片壓縮功能

    Js利用Canvas實現(xiàn)圖片壓縮功能

    下面小編就為大家?guī)硪黄狫s利用Canvas實現(xiàn)圖片壓縮功能。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • JS+CSS實現(xiàn)帶關(guān)閉按鈕DIV彈出窗口的方法

    JS+CSS實現(xiàn)帶關(guān)閉按鈕DIV彈出窗口的方法

    這篇文章主要介紹了JS+CSS實現(xiàn)帶關(guān)閉按鈕DIV彈出窗口的方法,實例分析了div彈出層窗口的實現(xiàn)技巧,非常具有實用價值,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-02-02
  • three.js中文文檔學(xué)習之通過模塊導(dǎo)入

    three.js中文文檔學(xué)習之通過模塊導(dǎo)入

    這篇文章主要給大家介紹了關(guān)于three.js中文文檔學(xué)習之通過模塊導(dǎo)入的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學(xué)習或使用three.js具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧。
    2017-11-11
  • JavaScript中的console.trace()函數(shù)介紹

    JavaScript中的console.trace()函數(shù)介紹

    這篇文章主要介紹了JavaScript中的console.trace()函數(shù)詳細介紹,console.trace()函數(shù)用來打印函數(shù)調(diào)用的棧信息,需要的朋友可以參考下
    2014-12-12
  • 改變隱藏的input中value值的方法

    改變隱藏的input中value值的方法

    這篇文章主要介紹了改變隱藏的input中value值的方法,需要的朋友可以參考下
    2014-03-03
  • 微信小程序仿通訊錄功能

    微信小程序仿通訊錄功能

    這篇文章主要為大家詳細介紹了微信小程序仿通訊錄功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • 關(guān)于bootstrap日期轉(zhuǎn)化,bootstrap-editable的簡單使用,bootstrap-fileinput的使用詳解

    關(guān)于bootstrap日期轉(zhuǎn)化,bootstrap-editable的簡單使用,bootstrap-fileinput的

    這篇文章主要介紹了關(guān)于bootstrap日期轉(zhuǎn)化,bootstrap-editable的簡單使用,bootstrap-fileinput的使用,需要的朋友可以參考下
    2017-05-05
  • 詳解小程序云開發(fā)攻略(解決最棘手的問題)

    詳解小程序云開發(fā)攻略(解決最棘手的問題)

    這篇文章主要介紹了詳解小程序云開發(fā)攻略(解決最棘手的問題),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧
    2019-09-09
  • JavaScript中實現(xiàn)塊作用域的方法

    JavaScript中實現(xiàn)塊作用域的方法

    在Javascript中由于沒有作用域的概念,所以很容易發(fā)生標識符名稱的沖突,尤其是在比較大的項目中,這類情況更容易發(fā)生
    2010-04-04

最新評論

蓬莱市| 故城县| 吴忠市| 巴彦淖尔市| 那曲县| 平和县| 临沂市| 潼南县| 临夏县| 江永县| 梅州市| 崇州市| 抚远县| 迁安市| 霍城县| 鲁甸县| 武定县| 渝北区| 九龙县| 龙口市| 沙坪坝区| 永仁县| 福州市| 乌兰浩特市| 蓬莱市| 左权县| 林芝县| 湛江市| 广西| 庆城县| 沁源县| 勐海县| 正宁县| 邮箱| 嵊州市| 阿坝县| 霸州市| 南昌县| 德昌县| 甘德县| 乐都县|