ランダムな列を含むExcel(xlsx)ファイルがあります。これらの列の中には、いくつかのセルの合計にマップされた数式を持つものがあります。私は、次の3つの列持って私の場合はNode - exceljs:ファイル内のファイル分割式に書き込む
=J8+F9-H9
:例えば
F: number
H: number
J: =sum of previous row's F and H cell's values.
を私は、外部データを取得し、このブックのセルによって彼らにセルを保管することを目指しています。このため私はノードモジュールを使用していますexceljs.
これまでのコードですが、これまでのところ私は値をharcodingしています(後で別のファイルから取得します)。
var workbook = new Excel.Workbook();
var filename = 'Bank Synoptic Journal.xlsx'
workbook
.xlsx
.readFile(filename)
.then(function() {
var worksheet = workbook.getWorksheet('Bank Synoptic');
var row = null;
row = worksheet.getRow(8);
row.getCell('J').value = Math.random();
row.commit();
for(var i=9; i<=305;i++) { //row
row = worksheet.getRow(i);
row.getCell('F').value = Math.random();
row.getCell('H').value = Math.random();
row.commit();
}
})
.then(function() {
return workbook.xlsx.writeFile(filename + '_modified.xlsx');
})
.then(function() {
console.log('Done!');
});
出力を新しいExcelファイルに出力します。私が直面している問題は、数式を含むセル「J」のためです。これらの細胞は、無consitencyで破壊されています
- いくつかの細胞は、数式を維持し、
- その他の計算はこれ以上の式も行われた計算を持っていないん
- 再計算が自動的に行われていません(代わりに式の「0」を持っています)この射出機構を使用して
(スナップショット)
私は、このエラーにつながっていること見つからないか、間違っているのですか?
'F'と' H'列にランダム値を設定する 'for'ループでは、前の行/列' J'式の式を明示的に設定しません。 9〜305行目にロードしたワークブックに式があらかじめ設定されていることを期待していましたか?最初に確認してください。 –
@RobinMackenzie私がすでに行を埋めているワークブックには数式が設定されています。それはうまくいかないのですか? – shadesco
トラブルシューティングからその可能性を排除すると便利だと思った... –