-
-
Notifications
You must be signed in to change notification settings - Fork 8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Option to output formulae to JSON #1370
Comments
I also met the same problem. Has this problem been solved? |
Sure, how would you handle cells that have a raw value (like a number or raw string)? |
It's been a while since I filed this issue do I don't remember the entire context, but if I understand the question correctly, it's about deciding between outputting the raw value and the formula of a cell, in case both exists? In that case, I would prefer the formula to be output, since the raw value represents a particular calculation for the formula at a point in time. |
For cells that have formula expressions and values, you clearly would return the formula. The question is about cells that just have a value (no associated formula expression). Currently the formula output utility function guesses based on the type of cell. Numeric cell values are stringified, and string cell values are prepended with a single quote (how it would appear in the formula bar if you entered the value manually) |
I think that's a good solution. (Naively, I would like the values coerced to |
@SheetJSDev Can I take this issue? |
Hola, Buenas estoy en el coienzo del curso y por ejemplo no me aparece la parte que decie en los primeros pasos, no me aparece la palabra fork. alguno tiene idea por que puede ser ? |
For anyone still looking for this, I'm using a function based on @Mithgol algorithm from #270 with some tweaks: workbook.SheetNames.forEach(function(name) {
const sheet = workbook.Sheets[name];
const range = XLSX.utils.decode_range(sheet['!ref']);
const json = [];
var row;
var rowNum;
var colNum;
for(rowNum = range.s.r; rowNum <= range.e.r; rowNum++){
row = [];
for(colNum = range.s.c; colNum <= range.e.c; colNum++){
var nextCell = sheet[XLSX.utils.encode_cell({r: rowNum, c: colNum})];
if( typeof nextCell === 'undefined' ){
row.push(void 0);
} else {
const value = nextCell.f ? "=" + nextCell.f : nextCell.v; //change this line if needed
row.push(value);
}
}
json.push(row);
}
//do stuff with the json
}); |
The SheetJS library did not have a built-in option like formulas: true for sheet_to_json to explicitly incorporate formula cells in the JSON output as of my most recent knowledge update in September 2021. Formulas are handled differently by sheet_to_json because it primarily focuses on converting cell data to JSON. However, by iterating through the worksheet's range and removing both the cell values and formulae, you can manually include formulas in your JSON output. Here's an illustration of how you could accomplish this:
|
I'm using
.sheet_to_json
for easier testing (instead of comparing thews
object with an expected one). The problem is that formula cells don't show up in the JSON output. Is there a way to make that happen (other than sheet_to_formulae)? If not, an option likeformulas: true
forsheet_to_json
would be very useful for test automation.The text was updated successfully, but these errors were encountered: