友人から、Excelファイルからグラフ(棒、曲線)を生成する簡単なアプリケーションを作ってほしいと頼まれました。強力なchart.jsを既に知っているため、JavaScriptを言語として使用することを選択しました。ただし、chart.jsを使用する前に、Excelファイルからデータを収集する必要があります。 JavaScriptを使用してExcelファイルを読み取る方法は?
いくつかの調査の後、(ActiveXを使用して)Internet Explorerでこれを行うことができましたが、ブラウザー間で動作する必要があります。
[〜#〜] xls [〜#〜] & [〜#〜] xlsx [〜#〜] を純粋なJavaScriptで解析できるJavaScriptライブラリがあります。私はChrome(Windowsではありますが))でテストし、正常に動作しました。
JavaScriptを使用してExcelファイルを読み取る代わりに、Funfun Excelアドインを使用してExcelでJavaScriptを直接使用することもできます。基本的に、FunfunはExcelでJavaScriptを使用できるようにするツールであるため、Chart.jsなどのライブラリを使用してスプレッドシートのデータからグラフをプロットできます。
基本的に、あなたがする必要があるのは
1)。OfficeアドインストアからFunfunアドインを挿入
2)。新しいFunfunを作成するか、Funfunオンラインエディターからサンプルを読み込みます
3)。他のJavaScriptエディターで行うようにJavaScripコードを記述します。このステップでは、スプレッドシートのデータを直接使用するために、JSON I/Oを作成してExcelセル参照を作成する必要があります。この値が置かれる場所Setting-shortしかし、これは数行にすぎません。たとえば、スプレッドシートに次のようなデータがあるとします。平均時間はセルA1にあります。
Average hours Jan Feb Mar Apr
Baby Jones 93.5 81 94.5 95.5
Joanne Jones 91.5 90 88.5 85.5
この場合、JSON I/O値は次のようになります。
{
"months": "=C6:G6",
"manager1": "=C7:G7",
"manager2": "=C8:G8"
}
詳細については、Funfun documentation を確認してください。
4)。コードを実行してグラフをプロット
FunfunオンラインエディターでJavaScript(Chart.js)とExcelデータを使用して作成したサンプルチャートを次に示します。以下のリンクで確認できます。手順2で説明したように、Excelに簡単に読み込むこともできます。
https://www.funfun.io/1/edit/5a365e7c74efa7334ff272a6
開示:私はFunfunの開発者です。
Chart.jsプラグイン chartjs-plugin-datasource があり、Excelファイルからデータを簡単にロードできます。
以下に示すようなExcelファイルがあり、HTMLファイルと同じディレクトリにmydata.xlsx
として保存されているとします。
+---------------+---------+----------+-------+-------+------+------+------+
| | January | February | March | April | May | June | July |
+---------------+---------+----------+-------+-------+------+------+------+
| Temperature | 7 | 7 | 10 | 15 | 20 | 23 | 26 |
+---------------+---------+----------+-------+-------+------+------+------+
| Precipitation | 8.1 | 14.9 | 41.0 | 31.4 | 42.6 | 57.5 | 36.0 |
+---------------+---------+----------+-------+-------+------+------+------+
Chart.js、 SheetJS(js-xlsx) およびchartjs-plugin-datasourceをページに含めます。
<script src="https://cdn.jsdelivr.net/npm/[email protected]"></script>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/xlsx.full.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/[email protected]"> </script>
<canvas id="myChart"></canvas>
次に、スクリプトでmydata.xlsx
を指定します。
var ctx = document.getElementsById("myChart");
var chart = new Chart(ctx, {
type: 'bar',
data: {
datasets: [{
type: 'line',
yAxisID: 'temperature',
backgroundColor: 'transparent',
borderColor: 'rgb(255, 99, 132)',
pointBackgroundColor: 'rgb(255, 99, 132)',
tension: 0,
fill: false
}, {
yAxisID: 'precipitation',
backgroundColor: 'rgba(54, 162, 235, 0.5)',
borderColor: 'transparent'
}]
},
plugins: [ChartDataSource],
options: {
scales: {
yAxes: [{
id: 'temperature',
gridLines: {
drawOnChartArea: false
}
}, {
id: 'precipitation',
position: 'right',
gridLines: {
drawOnChartArea: false
}
}]
},
plugins: {
datasource: {
url: 'mydata.xlsx'
}
}
}
});