2016-11-08 17 views
8

は、私が(の.xlsx形式)Excelファイルを作成し、クライアントを使用して、ダウンロードのためにそれを利用できるようにしたいExcelは、クライアント側のJavaScriptを使用して、いくつかのスタイルを持つファイルを作成します。サイドJavaScriptjs-xlsxライブラリを使用してサンプルファイルを作成できました。しかし、私はそれにスタイルを適用することはできません。ヘッダのヘッダに背景色含む少なくともいくつかの基本的なスタイル、太字と細胞について包装テキストが必要です。(可能使用してJS-のxlsxライブラリ場合)

js-xlsxライブラリのドキュメントでは、Cell Objectを使用してスタイルを指定できます。

セルオブジェクトを使用してスタイルを与えようとしましたが、ダウンロードした.xlsxファイルに反映されません。私はさらに.xlsxファイルを読み込み、同じファイルを書き戻そうとしました。XLSX.write()関数を使用しました。しかし、それは全くスタイルのないExcelファイルを返します。 理想的には、ダウンロードしたファイルに同じスタイルのアップロード済みファイルがあることを期待します。再作成されたファイルには、フォント色や背景色は適用されませんでした。私はダウンロードしたファイルをテストするためにExcel 2013を使用します。

アップロードの前後に優れたスクリーンショットをご覧ください。

オリジナルファイル

enter image description here

ダウンロードしたファイル

enter image description here

コードを以下に示します。

<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252"> 
<script type="text/javascript" src="xlsx.core.min.js"></script> 
<script type="text/javascript" src="Blob.js"></script> 
<script type="text/javascript" src="FileSaver.js"></script> 

<script> 

function s2ab(s) { 
    var buf = new ArrayBuffer(s.length); 
    var view = new Uint8Array(buf); 
    for (var i=0; i!=s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF; 
    return buf; 
} 

/* set up XMLHttpRequest */ 
var url = "template-sample.xlsx"; 
var oReq = new XMLHttpRequest(); 
oReq.open("GET", url, true); 
oReq.responseType = "arraybuffer"; 

oReq.onload = function(e) { 
    var arraybuffer = oReq.response; 

    /* convert data to binary string */ 
    var data = new Uint8Array(arraybuffer); 
    var arr = new Array(); 
    for(var i = 0; i != data.length; ++i) arr[i] = String.fromCharCode(data[i]); 
    var bstr = arr.join(""); 

    /* Call XLSX */ 
    var workbook = XLSX.read(bstr, {type:"binary", cellStyles:true}); 

    console.log("read workbook"); 
    console.log(workbook); 
    /* DO SOMETHING WITH workbook HERE */ 
    var wbout = XLSX.write(workbook, {bookType:'xlsx', bookSST:true, type: 'binary', cellStyles: true}); 
    saveAs(new Blob([s2ab(wbout)],{type:"application/octet-stream"}), "template-download.xlsx"); 

} 

function read(){ 
    oReq.send();  
} 


</script> 


</head> 
<body> 
    <button onclick="read()">save xlsx</button> 
</body></html> 

サンプルコードはhereから取得しました。

私が楽しみにしているのは、js-xlsxライブラリまたはこの機能を提供する別のライブラリを使用して細胞にスタイルを与えるオプションです。私はexceljsという名前のライブラリを見つけましたが、それをサポートするにはノードjsが必要です。私は純粋にクライアント側のソリューションを探しています。これは、コルドーバベースのタブレットとデスクトップアプリケーションに使用されます。

答えて

10

いくつかの調査の後、私は自分自身の質問に答えを見つけることができました。 スタイルを与えるためにxlsx-styleという名前の新しいライブラリが見つかりました。 xlsx-styleは、生成されたExcelファイルにスタイルを与えるためのjs-xlsxの上に構築されています。スタイルは、セルオブジェクト内の新しい属性を使用してセルに与えることができます。

説明はnpm xlsx-styleページで利用できます。

スタイリングは、各セルに関連付けられたスタイルオブジェクトを使用して行います。このスタイルオブジェクトを使用して、フォント、色、配置などを指定できます。

github pageにミニマリストデモを追加しました。 サンプルコードはgithub repositoryにあります。

以下に生成されたExcelページのスクリーンショットがあります。 enter image description here

+0

私は同じ解を探していました。あなたは 'xlsx-style'を使ってどのようにしたのかサンプルコードで更新してください。私の必要条件は、いくつかの基本スタイルで.xlsxファイルにデータを書き込むことです。助けをお待ちしています。 – gihan

+0

あなたはスタイルオブジェクトがセルオブジェクト内でどのように定義されているか教えてください。私はこの方法を試みたが動作しませんでした.var cell = {v:data [R] [C]、s:{bgColor: "#E1697B"}} ; ' – gihan

+0

すぐに作業コードを更新しようとします。 –

関連する問題