Chcem čítať súbor excel, ktorý má telefónne čísla uložené ako čísla, ale keď som čítal súbor pomocou SheetJS / js-xlsx (npm install xlsx), všetky veľké telefónne čísla sú konvertované na reťazce ako
9.19972E+11
919971692474 --> 9.19972E+11
Môj kód je
var workbook = XLSX.readFile(req.files.fileName.path);
var sheet_name_list = workbook.SheetNames;
var csvFile = XLSX.utils.sheet_to_csv(workbook.Sheets[sheet_name_list[0]]);
console.log(csvFile2);
výstup konzoly je
customer_phone,product_name
9.19972E+13,"Red Belly Shoes,"
Existuje nejaký spôsob, ako sa takejto konverzii vyhnúť?
odpovede:
5 pre odpoveď č. 1Číslo 919971692474 sa zvyčajne zobrazuje ako9.19972E + 11 v programe Excel. Ak chcete, aby sa zobrazilo celé číslo, musíte nastaviť formát čísla na hodnotu 0 (pravým tlačidlom myši, formátom bunky, výberom vlastného typu "0"). A keď to urobíte, zobrazí sa celé číslo. Ak nemáte nastavený formát vo formáte Excel, modul xlsx používa formát "Všeobecné" a tento číselný formát zobrazuje telefónne číslo ako exponenciálne.
Ak je súbor nesprávny, môžete formát CSV prepísať vymazaním w
kľúč a pridanie a z
ktorý zodpovedá požadovanému formátu čísla. Napríklad na zmenu bunky A2:
var sheet = workbook.Sheets[workbook.SheetNames[0]];
delete sheet.A2.w;
sheet.A2.z = "0";
Ak to chcete urobiť pre všetky bunky s číslami, len slučka:
Object.keys(sheet).forEach(function(s) {
if(sheet[s].w) {
delete sheet[s].w;
sheet[s].z = "0";
}
});